Pelit ovat määritelmänsä mukaan vuorovaikutteisia. Gosu tekee tästä vuorovaikutuksesta suoraviivaisen käyttöliittymän avulla näppäin- ja hiiren painikkeiden havaitsemiseksi ja niihin reagoimiseksi.
On kaksi ensisijaista tapaa käsitellä syötettä ohjelmassa. Ensimmäinen on tapahtumakeskeinen lähestymistapa. Kun painat painikkeita, ohjelmasi vastaanottavat tapahtuman ja voit reagoida vastaavasti. Toinen on tarkistaa, onko tiettyä painiketta painettu päivityksen yhteydessä. Molemmat tekniikat ovat täysin päteviä, käytä mitä parhaiten sopii.
Kulissien takana painikkeita edustavat kokonaisluvut. Nämä kokonaisluvukoodit ovat alustasta riippuvaisia, ja niiden ei todennäköisesti pitäisi löytää tiensä pelikoodiin. Tämän abstraktin poistamiseksi Gosu tarjoaa useita vakioita käytettäväksi.
Jokaiselle näppäimistönäppäimelle on Gosu:: Kb * vakio. Suurimman osan näppäimistä näiden vakioiden nimet on helppo arvata. Esimerkiksi nuolinäppäimet ovat Gosu:: KbLeft, Gosu:: KbRight, Gosu:: KbUp ja Gosu:: KbDown. Katso täydellinen luettelo dokumentointi Gosu-moduulille.
Syöttötapahtumat toimitetaan Gosu:: Ikkuna ilmentymä. Pääsilmukassa, ennen päivittää kutsutaan, Gosu toimittaa tapahtumia kaikille painikkeille, jotka on joko painettu tai vapautettu. Se tekee tämän soittamalla Painike alas ja button_up menetelmät, näppäimen tai painikkeen tunnuksen ohittaminen.
vuonna Painike alas ja button_up menetelmiä, löydät usein a tapaus lausuma. Tämä on erittäin toimivan ohella erittäin tyylikäs ja ilmeikäs tapa päättää mitä tehdä sen mukaan, mitä painiketta painettiin tai vapautettiin. Seuraava on lyhyt esimerkki siitä, mitä a Painike alas menetelmä voi näyttää. Se tulisi asettaa omaan Gosu:: Ikkuna alaluokka, ja sulkee ikkunan (ohjelman päättyessä), kun paeta -näppäintä painetaan.
Helppoa, eikö? Laajennetaan tätä. Tässä on pelaaja luokka. Se voi liikkua vasemmalle ja oikealle, jos vasenta ja oikeaa näppäintä painetaan. Huomaa, että myös tässä luokassa on Painike alas ja button_up menetelmiä. Ne toimivat kuten a: n menetelmät Gosu:: Ikkuna alaluokka. Gosu ei tiedä mitään pelaaja soitamme kuitenkin pelaajamenetelmät manuaalisesti Gosu:: Ikkunamenetelmät. Täydellinen, ajettavissa oleva esimerkki löytyy tässä.
Jos tapahtumapohjainen syöttö ei ole tyylisi, voit kysyä mitä tahansa Gosu:: Ikkuna nähdäksesi, painetaanko mitään painiketta tai näppäintä milloin tahansa. Voit sivuuttaa Painike alas ja button_up soittopyynnöt kokonaan.
Voit kysyä Gosu:: Ikkuna Soita numeroon nähdäksesi, painetaanko näppäintä Painike alas? menetelmä ja sen painikkeen tunnus, jonka haluat tarkistaa. Älä unohda kyselyä tässä puhelussa! Jos soitat painike alas (Gosu:: KbLeft), sinä tulet olemaan raportointi napin painallus kohtaan Gosu:: Ikkuna alaluokka. Vaikka et ole määrittänyt mitään takaisinsoitomenetelmiä, vanhemmaluokka, Gosu:: Ikkuna tahtoa. Ei tule olemaan virhettä, se ei vain toimi odotetulla tavalla. Älä unohda sitä kysymysmerkkiä!
Tässä on pelaaja luokka kirjoitettiin uudelleen käytettäväksi Painike alas? tapahtumien sijaan. Täydellinen, ajettavissa oleva esimerkki on saatavana tässä. Tällä kertaa syöte tarkistetaan päivittää menetelmä. Huomaat myös, että tämä esimerkki on lyhyempi, mutta mielestäni vähemmän tyylikäs.
Hiiren painikkeita käsitellään samalla tavalla kuin näppäimistön ja pelin painikkeita. Voit molemmat kysyä heiltä Painike alas? ja tapahtumia Painike alas ja button_up. Hiiren liikkeestä voidaan kuitenkin kysyä vain, hiiren liikkeelle ei ole tapahtumia. Gosu:: Ikkunan mouse_x ja arka menetelmät tarjoavat hiiren osoittimen X- ja Y-koordinaatit.
Huomaa, että X- ja Y-koordinaatit ovat suhteessa pelin ikkunaan. Joten esimerkiksi jos hiiri on vasemmassa yläkulmassa, se on lähellä koordinaattia (0,0). Lisäksi, jos hiiren osoitin on ulkopuolella Pelin ikkunasta kokonaan, se ilmoittaa silti, missä osoitin on suhteessa ikkunaan. Joten molemmat mouse_x ja arka voi olla vähemmän kuin nolla ja enemmän kuin ikkunan leveys tai korkeus.
Seuraava ohjelma näyttää uuden sprite-osoitteen missä tahansa hiiren napsautuksella. Huomaa, että se käyttää tapahtumapohjaista tuloa (napsautuksissa) ja kyselypohjaista tuloa (hiiren sijainnin saamiseksi). Täysi, ajettavissa oleva tiedosto on saatavana tässä.