Vstup myši a klávesnice v Gosu

click fraud protection

Hry jsou podle definice interaktivní. Gosu usnadňuje tuto interakci s jednoduchým rozhraním pro detekci a reakci na stisknutí tlačítka a myši.

Ve vašem programu lze zpracovat vstup dvěma způsoby. Prvním z nich je přístup zaměřený na události. Po stisknutí tlačítek vaše programy obdrží událost a vy můžete odpovídajícím způsobem reagovat. Druhým je kontrola, zda je v době aktualizace stisknuto určité tlačítko. Obě techniky jsou naprosto platné, používejte to, co vám nejlépe vyhovuje.

Za scénami jsou tlačítka představována celými čísly. Tyto celočíselné kódy jsou závislé na platformě a pravděpodobně by si neměly najít cestu do vašeho herního kódu. Chcete-li to abstraktní, Gosu poskytuje řadu konstant k použití.

Pro každou klávesu klávesnice existuje Gosu:: Kb * konstantní. U většiny klíčů lze názvy těchto konstant snadno uhádnout. Například klávesy se šipkami jsou Gosu:: KbLeft, Gosu:: KbRight, Gosu:: KbUp a Gosu:: KbDown. Úplný seznam viz dokumentace k modulu Gosu.

Vstupní události jsou doručovány do

instagram viewer
Gosu:: Okno instance. V hlavní smyčce, předtím Aktualizace se volá, Gosu doručí události pro všechna tlačítka, která byla stisknuta nebo uvolněna. Učiní to tak, že zavoláte button_down a button_up metody, předání ID stisknuté klávesy nebo tlačítka.

V button_down a button_up metody, často najdete pouzdro tvrzení. Toto, kromě toho, že je velmi funkční, poskytuje velmi elegantní a výrazný způsob, jak rozhodnout, co dělat v závislosti na tom, které tlačítko bylo stisknuto nebo uvolněno. Následuje krátký příklad toho, co a button_down metoda může vypadat. Měl by být umístěn ve vašem Gosu:: Okno podtřídy a zavře okno (ukončení programu), když uniknout je stisknuto.

Snadné, že? Pojďme to rozšířit. Tady je Hráč třída. Po stisknutí levého a pravého tlačítka se může pohybovat doleva a doprava. Všimněte si, že tato třída také button_down a button_up metody. Fungují stejně jako metody z a Gosu:: Okno podtřída. Gosu o tom nic neví Hráč i když, budeme volat Hráč's metodami ručně z Gosu:: Oknometody. Úplný, spustitelný příklad lze nalézt tady.

Pokud vstup založený na události není vaším stylem, můžete dotazovat jakýkoli Gosu:: Okno abyste zjistili, zda bylo kdykoli stisknuto nějaké tlačítko nebo tlačítko. Můžete ignorovat button_down a button_up zcela zpětná volání.

Chcete-li dotazovat Gosu:: Okno Chcete-li zjistit, zda je stisknuto nějaké tlačítko, zavolejte button_down? metoda s ID tlačítka, které chcete zkontrolovat. Nezapomeňte na otazník v tomto hovoru! Pokud zavoláte button_down (Gosu:: KbLeft), budeš podávání zpráv stiskem tlačítka Gosu:: Okno podtřída. I když nemáte definované žádné metody zpětného volání, nadřazená třída, Gosu:: Okno vůle. Nedojde k žádné chybě, prostě to nebude fungovat tak, jak očekáváte. Jen nezapomeňte na otazník!

Zde je Hráč třída přepsána k použití button_down? místo událostí. K dispozici je úplný spustitelný příklad tady. Tentokrát je vstup zkontrolován na začátku Aktualizace metoda. Také si všimnete, že tento příklad je kratší, ale podle mého názoru méně elegantní.

Tlačítka myši se ovládají stejným způsobem jako tlačítka klávesnice a gamepadu. Můžete je oba dotazovat button_down? a události s button_down a button_up. Pohyb myši však může být dotázán pouze, neexistují žádné události pro pohyb myši. Gosu:: Okno's mouse_x a hnědý metody poskytují souřadnice X a Y ukazatele myši.

Uvědomte si, že souřadnice X a Y se vztahují k oknu hry. Například pokud je myš v levém horním rohu, bude blízko souřadnic (0,0). Také pokud je ukazatel myši mimo okna hry úplně, bude stále hlásit, kde je ukazatel relativní k oknu. Takže obojí mouse_x a hnědý může být menší než nula a větší než šířka nebo výška okna.

Následující program zobrazí nový sprite, kamkoli kliknete myší. Všimněte si, že používá jak vstupem řízený událost (pro kliknutí), tak vstupem řízeným dotazem (pro získání polohy myši). K dispozici je plný spustitelný soubor tady.

instagram story viewer