Hry sú podľa definície interaktívne. Gosu robí túto interakciu jednoduchou pomocou jednoduchého rozhrania na detekciu a reakciu na stlačenie kláves a myši.
Vo vašom programe sú dva základné spôsoby, ako zvládnuť vstup. Prvým je prístup zameraný na udalosti. Po stlačení tlačidiel vaše programy dostanú udalosť a môžete podľa toho reagovať. Druhým je kontrola, či je v čase aktualizácie stlačené určité tlačidlo. Obe techniky sú úplne platné, používajte podľa toho, čo vám najviac vyhovuje.
Za scénami sú tlačidlá reprezentované celými číslami. Tieto celočíselné kódy závisia od platformy a pravdepodobne by si nemali nájsť cestu do kódu vašej hry. Aby to bolo možné prečítať, Gosu poskytuje niekoľko konštánt, ktoré sa majú použiť.
Pre každú klávesnicu je k dispozícii Gosu:: Kb * konštantný. Pri väčšine kľúčov sa názvy týchto konštánt ľahko uhádnu. Napríklad klávesy so šípkami sú Gosu:: KbLeft, Gosu:: KbRight, Gosu:: KbUp a Gosu:: KbDown. Úplný zoznam nájdete na stránke dokumentácia pre modul Gosu.
Vstupné udalosti sú dodávané do
Gosu:: Okno inštancie. V hlavnej slučke predtým aktualizovať sa volá, Gosu doručí udalosti pre všetky tlačidlá, ktoré boli stlačené alebo uvoľnené. Urobí to tak, že zavoláte tlačidlo nadol a button_up metódy, stlačenie id tlačidla alebo tlačidla.V tlačidlo nadol a button_up metódy, často nájdete púzdro vyhlásenia. Toto okrem toho, že je veľmi funkčné, poskytuje veľmi elegantný a výrazný spôsob, ako sa rozhodnúť, čo robiť v závislosti od toho, ktoré tlačidlo bolo stlačené alebo uvoľnené. Nasleduje krátky príklad toho, čo a tlačidlo nadol metóda môže vyzerať. Mal by byť umiestnený vo vašom Gosu:: Okno podtrieda a zatvorí okno (ukončí program), keď uniknúť stlačené tlačidlo.
Ľahké, však? Poďme to rozšíriť. Tu je a prehrávač trieda. Po stlačení ľavého a pravého tlačidla sa môže pohybovať doľava a doprava. Všimnite si, že aj táto trieda tlačidlo nadol a button_up metódy. Pracujú rovnako ako metódy z a Gosu:: Okno podtriedy. Gosu o tom nič nevie prehrávač aj keď, budeme volať prehrávačmetódy manuálne z internetu Gosu:: Oknometódy. Nájdete úplný príklad, ktorý je možné spustiť tu.
Ak vstup založený na udalostiach nie je váš štýl, môžete požiadať o akýkoľvek dopyt Gosu:: Okno aby ste zistili, či bolo kedykoľvek stlačené nejaké tlačidlo alebo tlačidlo. Môžete ignorovať tlačidlo nadol a button_up úplne spätné volania.
Ak chcete dotaz Gosu:: Okno Ak chcete zistiť, či je stlačené tlačidlo, zavolajte na tlačidlo nadol? spôsob s ID tlačidla, ktoré chcete skontrolovať. Nezabudnite na otáznik v tejto výzve! Ak zavoláte button_down (Gosu:: KbLeft), budeš reporting stlačením tlačidla Gosu:: Okno podtriedy. Aj keď nemáte definované žiadne metódy spätného volania, rodičovská trieda, Gosu:: Okno vôle. Nedôjde k žiadnej chybe, nebude to fungovať tak, ako očakávate. Len nezabudnite na otáznik!
Tu je prehrávač trieda prepísaná na použitie tlačidlo nadol? namiesto udalostí. K dispozícii je kompletný spustiteľný príklad tu. Tentoraz je vstup skontrolovaný na začiatku aktualizovať metóda. Tiež si všimnete, že tento príklad je kratší, ale podľa môjho názoru menej elegantný.
Tlačidlá myši sú ovládané rovnakým spôsobom ako tlačidlá klávesnice a gamepadu. Môžete ich obaja dotazovať tlačidlo nadol? a udalosti s tlačidlo nadol a button_up. Pohyb myši sa však môže spýtať iba na pohyb, neexistujú žiadne udalosti pre pohyb myši. Gosu:: Okno, s mouse_x a mouse_y metódy poskytujú súradnice X a Y ukazovateľa myši.
Všimnite si, že súradnice X a Y sú relatívne k oknu hry. Napríklad, ak je myš v ľavom hornom rohu, bude blízko súradnice (0,0). Tiež, ak je ukazovateľ myši zvonka okna hry, bude vždy hlásiť, kde je ukazovateľ relatívny k oknu. Takže oboje mouse_x a mouse_y môže byť menšia ako nula a väčšia ako šírka alebo výška okna.
Nasledujúci program zobrazí nové sprite, kdekoľvek kliknete myšou. Upozorňujeme, že používa vstup riadený udalosťou (pre kliknutia) a vstup riadený dopytom (na získanie polohy myši). K dispozícii je plný spustiteľný súbor tu.