Vnos miške in tipkovnice v Gosu

Igre so po definiciji interaktivne. Gosu to interakcijo poenostavi s preprostim vmesnikom za zaznavanje in odzivanje na pritiske tipk in mišk.

Obstajata dva glavna načina za obravnavo vnosa v vašem programu. Prva je pristopno usmerjen pristop. Ko pritisnete gumbe, vaši programi prejmejo dogodek in lahko ustrezno reagirate. Drugo je preveriti, ali je v času posodobitve pritisnjen določen gumb. Obe tehniki sta popolnoma veljavni. Uporabite tisto, ki vam najbolj ustreza.

Za kulisami so gumbi predstavljeni s celi številki. Te celoštevilčne kode so odvisne od platforme in najbrž ne bi smele najti poti v svojo kodo igre. Če to odvzamemo, Gosu ponuja številne konstante za uporabo.

Za vsako tipko na tipkovnici obstaja Gosu:: Kb * konstantna. O večini tipk se imena teh konstant zlahka ugibajo. Na primer, puščice so Gosu:: KbLeft, Gosu:: KbRight, Gosu:: KbUp in Gosu:: KbDown. Za celoten seznam glej dokumentacija za modul Gosu.

Vhodni dogodki se dostavijo na Gosu:: Okno primera. V glavni zanki, prej nadgradnja

instagram viewer
Gosu bo dostavil dogodke za vse gumbe, ki so bili bodisi pritisnjeni ali sproščeni. To stori s klicem na gumb_popust in gumb_up metode, pri čemer id pritisnete tipko ali gumb.

V gumb_popust in gumb_up metode, ki jih pogosto najdete Ovitek izjava. To poleg tega, da je zelo funkcionalen, omogoča zelo eleganten in izrazen način odločitve, kaj storiti, odvisno od tega, kateri gumb je bil pritisnjen ali sproščen. V nadaljevanju je kratek primer tega, kaj gumb_popust metoda lahko izgleda. Dajte ga v svoj Gosu:: Okno podrazred in bo zaprl okno (konča program), ko pobeg tipka je pritisnjena.

Lahko, kajne? Razširimo to. Tukaj je a Igralec razred. Če pritisnete levo in desno tipko, se lahko premika levo in desno. Upoštevajte, da ima tudi ta razred gumb_popust in gumb_up metod. Delujejo tako kot metode iz Gosu:: Okno podrazred. Gosu ne ve ničesar Igralec čeprav bomo klicali Igralecročno iz Gosu:: Oknometode. Primer, ki ga je mogoče najti v celoti tukaj.

Če vnos na podlagi dogodkov ni vaš slog, lahko poizvedujete po katerem koli Gosu:: Okno kadar koli preverite, ali je katerikoli pritisnjen gumb ali tipka. Tega lahko prezrete gumb_popust in gumb_up povratne klice v celoti.

Za poizvedbo Gosu:: Okno Če želite preveriti, ali je tipka pritisnjena, pokličite gumb_dvig? z id gumbom, ki ga želite preveriti. Ne pozabite na vprašanje v tem klicu! Če pokličete button_down (Gosu:: KbLeft), boš poročanje pritisnite gumb na Gosu:: Okno podrazred. Tudi če nimate definiranih nobenih načinov povratnega klica, je nadrejeni razred, Gosu:: Okno volja. Napake ne bo, preprosto ne bo delovalo, kot ste pričakovali. Samo ne pozabite tega vprašalnika!

Tukaj je Igralec razred, ponovno napisan za uporabo gumb_dvig? namesto dogodkov. Na voljo je popoln primer izvedbe tukaj. Tokrat je vnos preverjen na začetku nadgradnja metoda. Opazili boste tudi, da je ta primer krajši, a po mojem mnenju manj eleganten.

Z gumbi miške upravljamo na enak način kot z gumbi in tipkovnico. Oboje lahko poizvedete z njimi gumb_dvig? in dogodki s gumb_popust in gumb_up. Vendar je gibanje miške mogoče samo poizvedovati, za premikanje miške ni dogodkov. Gosu:: Oknos miš_x in miška_y metode zagotavljajo koordinate X in Y kazalca miške.

Koordinate X in Y so glede na okno igre. Če je miška na primer v zgornjem levem kotu, bo blizu koordinate (0,0). Tudi, če je kazalec miške zunaj v celotnem oknu igre še vedno poroča, kje je kazalec glede na okno. Torej oboje miš_x in miška_y je lahko manjša od nič in večja od širine ali višine okna.

Naslednji program prikaže nov sprite, kjer koli kliknete miško. Upoštevajte, da uporablja vhod, ki temelji na dogodkih (za klike), in vnos, ki temelji na poizvedbah (da dobite položaj miške). Na voljo je celotna datoteka tukaj.

instagram story viewer