Naučite kreirati izbornike igara i dizajnirati korisnička sučelja bez napora koristeći Arcade GUI alate.
Izbornici igre i korisnička sučelja (UI) igraju ključnu ulogu u poboljšanju korisničkog iskustva i angažmana igre. Arcade, popularna Python biblioteka za razvoj igara, pruža moćne GUI (Graphical User Interface) alate koji olakšavaju dizajn i implementaciju izbornika igre i elemenata korisničkog sučelja.
Stvorite jednostavnu igru
Prije početka provjerite imate li pip instaliran na vašem uređaju. Upotrijebite ovu naredbu za instaliranje biblioteke arkadnih igara:
pip instaliraj arkadu
Započnite stvaranjem jednostavne igre koristeći Arcade.
Kôd korišten u ovom članku dostupan je u ovom GitHub spremište i besplatan je za korištenje pod MIT licencom.
Ova igra će sadržavati objekt igrača koji se može kretati lijevo i desno i neprijateljski objekt. Evo koda za igru:
uvoz arkada
ŠIRINA = 800
VISINA = 600
PLAYER_SPEED = 25razredaigra(arkada. Prozor):
def__u tome__(sebe):
super().__init__(ŠIRINA, VISINA, "Jednostavna igra")
self.player_x = WIDTH // 2
self.enemy_x = WIDTH - 50
self.game_over = lažnodefpostaviti(sebe):
arcade.set_background_color (arcade.color. BIJELA)defizvlačenje(sebe):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, VISINA // 2, 20, arkada.boja. PLAVA)
arcade.draw_circle_filled (self.enemy_x, VISINA // 2, 20, arkada.boja. CRVENA)defAžuriraj(sam, delta_vrijeme):
sebe.neprijatelj_x += 0.5
ako self.enemy_x >= WIDTH:
self.game_over = Pravidefna_pritisak_tipke(ja, ključ, modifikatori):
ako ključ == arkada.ključ. LIJEVO:
self.player_x -= PLAYER_SPEED
elif ključ == arkada.ključ. PRAVO:
self.player_x += PLAYER_SPEED
igra = igra()
game.setup()
arkada.run()
Dodavanje zaslona Game Over
Dodajte zaslon za kraj igre koji prikazuje poruku kada neprijatelj se kreće izvan prozora igre. Koristiti arkada.gui. UIManager i arkada.gui. UIMessageBox klase kako bi se to postiglo.
Stvorite primjerak UIManager i omogućite ga. Unutar izvlačenje način, provjerite je li igra je gotova zastavica je postavljena, i ako je tako, nacrtajte upravitelja korisničkog sučelja. The show_game_over_screen metoda stvara a UIMessageBox s porukom o završetku igre i dodaje je u upravitelj korisničkog sučelja. Također možete omogućiti i onemogućiti UI manager u Ažuriraj metoda temeljena na stanju igre.
Stvorite novu datoteku pod nazivom igra gotova.py i dodajte kod sa sljedećim ažuriranjima:
uvoz arkada
iz arkada.gui uvoz UIManager, UIMessageBoxŠIRINA = 800
VISINA = 600
PLAYER_SPEED = 25razredaigra(arkada. Prozor):
def__u tome__(sebe):
super().__init__(ŠIRINA, VISINA, "Jednostavna igra")
self.player_x = WIDTH // 2
self.enemy_x = WIDTH - 50
self.ui_manager = UIManager()
self.game_over = lažnodefpostaviti(sebe):
arcade.set_background_color (arcade.color. BIJELA)
self.ui_manager.enable() # Omogućite UI managerdefizvlačenje(sebe):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, VISINA // 2, 20, arkada.boja. PLAVA)
arcade.draw_circle_filled (self.enemy_x, VISINA // 2, 20, arkada.boja. CRVENA)
ako self.game_over:
self.ui_manager.draw()defAžuriraj(sam, delta_vrijeme):
sebe.neprijatelj_x += 0.5
ako self.enemy_x >= WIDTH:
self.show_game_over_screen()
self.game_over = Pravi
ako self.game_over:
self.ui_manager.enable()
drugo:
self.ui_manager.disable()defna_pritisak_tipke(ja, ključ, modifikatori):
ako ključ == arkada.ključ. LIJEVO:
self.player_x -= PLAYER_SPEED
elif ključ == arkada.ključ. PRAVO:
self.player_x += PLAYER_SPEEDdefshow_game_over_screen(sebe):
okvir_poruke = UIMessageBox(
širina=400,
visina=200,
tekst_poruke="Igra je gotova!"
)
self.ui_manager.add (message_box)
igra = igra()
game.setup()
arkada.run()
Ispod je izlaz:
Dodavanje gumba
Sada poboljšajte zaslon igre završene dodavanjem gumba za ponovno pokretanje igre ili izlaz. To možete postići korištenjem gumbi parametar od UIMessageBox i pružanje funkcije povratnog poziva za rukovanje klikovima gumba.
Stvorite novu datoteku pod nazivom gumbi.py i dodajte kod sa sljedećim ažuriranjima:
defshow_game_over_screen(sebe):
okvir_poruke = UIMessageBox(
širina=400,
visina=200,
tekst_poruke="Igra je gotova!",
gumbi=("Restart", "Izlaz"),
povratni poziv=self.on_game_over_button_click
)
self.ui_manager.add (message_box)defon_game_over_button_click(ja, button_text):
ako gumb_tekst == "Restart":
self.restart_game()
elif gumb_tekst == "Izlaz":
arcade.close_window()
defrestart_game(sebe):
self.game_over = lažno
self.enemy_x = WIDTH - 50
self.ui_manager.clear()
Ispod je izlaz:
u show_game_over_screen metoda, dodajte dva gumba, Ponovno pokretanje i Izlaz, prema UIMessageBox navodeći ih u gumbi parametar. Također omogućite funkciju povratnog poziva, on_game_over_button_click, za rukovanje klikovima gumba. Unutar funkcije povratnog poziva provjerite koji je gumb kliknut i izvršite odgovarajuću radnju.
Arcade GUI alati nude niz dodatnih značajki koje mogu dodatno poboljšati funkcionalnost i interaktivnost izbornika u igri i dizajna korisničkog sučelja. Evo nekoliko primjera:
UIDraggableMixin
The UIDraggableMixin klasa se može koristiti kako bi se bilo koji UI widget mogao povlačiti. Omogućuje funkcionalnost za rukovanje ponašanjem povlačenja, dopuštajući korisnicima da pomiču elemente korisničkog sučelja po zaslonu. Kombiniranje ovog mixina s drugim UI widgetima omogućuje vam stvaranje prozora ili panela koji se mogu povlačiti u vašoj igri.
UIMouseFilterMixin
The UIMouseFilterMixin klasa vam omogućuje da uhvatite sve događaje miša koji se dogode unutar određenog widgeta. Ovo je osobito korisno za widgete nalik prozorima gdje želite spriječiti da događaji miša utječu na temeljne elemente korisničkog sučelja. Filtriranjem događaja miša možete neovisno kontrolirati interakciju unutar widgeta.
UIWindowLikeMixin
The UIWindowLikeMixin klasa omogućuje widgetu ponašanje poput prozora. Obrađuje sve događaje miša koji se dogode unutar granica widgeta i omogućuje povlačenje widgeta. Ovo je idealno za stvaranje prozora ili panela koji se mogu povlačiti s kojima korisnici mogu komunicirati u vašoj igri.
Površinski
The Površinski klasa predstavlja međuspremnik za crtanje UI elemenata. Apstrahira crtež na međuspremniku i pruža metode za aktiviranje, brisanje i crtanje međuspremnika na zaslonu. Ovu klasu možete koristiti interno za renderiranje widgeta ili prilagođenih UI elemenata u vašoj igri.
Ove dodatne značajke nude mogućnosti za stvaranje interaktivnijih i dinamičnijih korisničkih iskustava u vašim igrama. Eksperimentirajte s ovim značajkama kako biste dodali jedinstvenu funkcionalnost i učinili da se izbornici u igri i dizajn korisničkog sučelja istaknu.
Najbolji primjeri iz prakse za uključivanje GUI-ja
Kada uključujete GUI alate u svoje igre koristeći Arcade, važno je slijediti neke najbolje prakse kako biste osigurali glatko i besprijekorno korisničko iskustvo. Evo nekoliko savjeta koje treba imati na umu:
Plan i prototip
Prije nego što se upustite u implementaciju, potrošite vrijeme na planiranje i izradu prototipa izbornika u igri i elemenata korisničkog sučelja. Razmotrite izgled, funkcionalnost i vizualnu estetiku kako biste osigurali koherentan dizajn jednostavan za korištenje.
Neka bude dosljedan
Održavajte dosljedan vizualni stil i raspored u izbornicima u igri i elementima korisničkog sučelja. To pomaže korisnicima da se lakše kreću kroz vašu igru i pruža kohezivno iskustvo.
Responzivni dizajn
Dizajnirajte elemente korisničkog sučelja tako da budu osjetljivi i prilagodljivi različitim veličinama i razlučivostima zaslona. To osigurava da izbornici i korisničko sučelje vaše igre ostanu upotrebljivi i vizualno privlačni na različitim uređajima.
Učinkovito rukovanje događajima
Učinkovito upravljajte događajima unosa korisnika kako biste osigurali brze i glatke interakcije. Izbjegavajte nepotrebne proračune ili obradu događaja koji bi mogli dovesti do kašnjenja ili kašnjenja u odzivu korisničkog sučelja.
Povratne informacije korisnika
Pružite jasne i trenutne povratne informacije korisnicima kada stupaju u interakciju s vašim izbornicima igre i elementima korisničkog sučelja. Vizualni znakovi, animacije i audio povratne informacije u igrama mogu poboljšati korisničko iskustvo i učiniti igru uglađenijom.
Slijedeći ove najbolje prakse, možete kreirati izbornike igara i dizajn korisničkog sučelja koji su intuitivni i vizualno privlačni.
Povećajte angažman korisnika s vizualno privlačnim korisničkim sučeljem
Dodavanje GUI elemenata vašoj igri ne samo da poboljšava upotrebljivost, već također povećava vizualnu privlačnost i ukupni angažman igrača. Bez obzira stvarate li početni izbornik, igru na zaslonu ili bilo koji drugi element korisničkog sučelja, Arcade GUI alati nude niz značajki i funkcionalnosti za poboljšanje korisničkog iskustva vaše igre.