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 = 25

razredaigra(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žno

instagram viewer

defpostaviti(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 = Pravi

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_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 = 25

razredaigra(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žno

defpostaviti(sebe):
arcade.set_background_color (arcade.color. BIJELA)
self.ui_manager.enable() # Omogućite UI manager

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)
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_SPEED

defshow_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.