Învățați să creați meniuri de joc și să proiectați interfețe cu utilizatorul fără efort folosind instrumentele GUI de la Arcade.
Meniurile de joc și interfețele cu utilizatorul (UI) joacă un rol crucial în îmbunătățirea experienței utilizatorului și a angajării unui joc. Arcade, o bibliotecă populară Python pentru dezvoltarea jocurilor, oferă instrumente puternice GUI (Graphical User Interface) care facilitează proiectarea și implementarea meniurilor de joc și a elementelor UI.
Creați un joc simplu
Înainte de a începe, asigurați-vă că aveți pip instalat pe dispozitivul dvs. Utilizați această comandă pentru a instala biblioteca arcade:
pip install arcade
Începeți prin a crea un joc simplu folosind Arcade.
Codul folosit în acest articol este disponibil în acest articol Depozitul GitHub și este gratuit pentru utilizare sub licența MIT.
Acest joc va prezenta un obiect jucător care se poate mișca la stânga și la dreapta și un obiect inamic. Iată codul jocului:
import arcadă
LĂȚime = 800
ÎNĂLȚIE = 600
PLAYER_SPEED = 25clasăJoc(arcadă. Fereastră):
def__init__(de sine):
super().__init__(LAȚIME, ÎNĂLȚIE, "Joc simplu")
self.player_x = WIDTH // 2
self.enemy_x = WIDTH - 50
self.game_over = Falsdefînființat(de sine):
arcade.set_background_color (arcade.color. ALB)defon_draw(de sine):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, HEIGHT // 2, 20, arcade.color. ALBASTRU)
arcade.draw_circle_filled (self.enemy_x, HEIGHT // 2, 20, arcade.color. ROȘU)defActualizați(self, delta_time):
sine.duşman_x += 0.5
dacă self.enemy_x >= WIDTH:
self.game_over = Adevăratdefon_key_press(sine, cheie, modificatori):
dacă cheie == arcade.key. STÂNGA:
self.player_x -= PLAYER_SPEED
elif cheie == arcade.key. DREAPTA:
self.player_x += PLAYER_SPEED
joc = joc()
game.setup()
arcade.run()
Adăugarea jocului peste ecran
Adăugați un joc peste ecran care afișează un mesaj atunci când inamicul se mișcă în afara ferestrei de joc. Folosește arcade.gui. UIManager și arcade.gui. UIMessageBox cursuri pentru a realiza acest lucru.
Creați o instanță de UIManager și activați-l. În interiorul on_draw metoda, verificați dacă joc încheiat steag este setat și, dacă da, desenați managerul UI. The show_game_over_screen metoda creează a UIMessageBox cu un mesaj de finalizare și îl adaugă la managerul UI. De asemenea, puteți activa și dezactiva managerul UI în Actualizați metoda bazata pe starea jocului.
Creați un fișier nou numit game-over.py și adăugați codul cu actualizările de mai jos:
import arcadă
din arcade.gui import UIManager, UIMessageBoxLĂȚime = 800
ÎNĂLȚIE = 600
PLAYER_SPEED = 25clasăJoc(arcadă. Fereastră):
def__init__(de sine):
super().__init__(LAȚIME, ÎNĂLȚIE, "Joc simplu")
self.player_x = WIDTH // 2
self.enemy_x = WIDTH - 50
self.ui_manager = UIManager()
self.game_over = Falsdefînființat(de sine):
arcade.set_background_color (arcade.color. ALB)
self.ui_manager.enable() # Activați managerul UIdefon_draw(de sine):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, HEIGHT // 2, 20, arcade.color. ALBASTRU)
arcade.draw_circle_filled (self.enemy_x, HEIGHT // 2, 20, arcade.color. ROȘU)
dacă self.game_over:
self.ui_manager.draw()defActualizați(self, delta_time):
sine.duşman_x += 0.5
dacă self.enemy_x >= WIDTH:
self.show_game_over_screen()
self.game_over = Adevărat
dacă self.game_over:
self.ui_manager.enable()
altfel:
self.ui_manager.disable()defon_key_press(sine, cheie, modificatori):
dacă cheie == arcade.key. STÂNGA:
self.player_x -= PLAYER_SPEED
elif cheie == arcade.key. DREAPTA:
self.player_x += PLAYER_SPEEDdefshow_game_over_screen(de sine):
mesaj_box = UIMessageBox(
latime=400,
inaltime=200,
mesaj_text="Joc încheiat!"
)
self.ui_manager.add (caseta de mesaje)
joc = joc()
game.setup()
arcade.run()
Mai jos este rezultatul:
Adăugarea de butoane
Acum, îmbunătățiți jocul pe ecran adăugând butoane pentru a reporni jocul sau a ieși. Puteți realiza acest lucru folosind butoane parametrul de UIMessageBox și oferind o funcție de apel invers pentru a gestiona clicurile pe butoane.
Creați un fișier nou numit butoane.py și adăugați codul cu actualizările de mai jos:
defshow_game_over_screen(de sine):
mesaj_box = UIMessageBox(
latime=400,
inaltime=200,
mesaj_text="Joc încheiat!",
butoane=("Repornire", "Ieșire"),
callback=self.on_game_over_button_click
)
self.ui_manager.add (caseta de mesaje)defon_game_over_button_click(self, button_text):
dacă button_text == "Repornire":
self.restart_game()
elif button_text == "Ieșire":
arcade.close_window()
defrestart_game(de sine):
self.game_over = Fals
self.enemy_x = WIDTH - 50
self.ui_manager.clear()
Mai jos este rezultatul:
În show_game_over_screen metoda, adăugați două butoane, Repornire și Ieșire, la UIMessageBox prin precizarea lor în butoane parametru. De asemenea, oferă o funcție de apel invers, on_game_over_button_click, pentru a gestiona clicurile pe butoane. În interiorul funcției de apel invers, verificați pe ce buton s-a făcut clic și efectuați acțiunea corespunzătoare.
Instrumentele GUI de la Arcade oferă o varietate de caracteristici suplimentare care pot îmbunătăți și mai mult funcționalitatea și interactivitatea meniurilor tale de joc și a designului UI. Iată câteva exemple:
UIDraggableMixin
The UIDraggableMixin clasa poate fi folosită pentru a face orice widget UI să fie trasabil. Oferă funcționalitate pentru a gestiona comportamentul de glisare, permițând utilizatorilor să mute elementele UI pe ecran. Combinarea acestei combinații cu alte widget-uri UI vă permite să creați ferestre sau panouri care pot fi glisate în joc.
UIMouseFilterMixin
The UIMouseFilterMixin clasa vă permite să capturați toate evenimentele mouse-ului care apar într-un anumit widget. Acest lucru este util în special pentru widget-uri asemănătoare ferestrelor în care doriți să preveniți ca evenimentele mouse-ului să afecteze elementele interfeței de utilizare subiacente. Prin filtrarea evenimentelor mouse-ului, puteți controla independent interacțiunea din cadrul widgetului.
UIWindowLikeMixin
The UIWindowLikeMixin clasa oferă un comportament asemănător ferestrei unui widget. Se ocupă de toate evenimentele mouse-ului care apar în limitele widget-ului și permite tragerea widget-ului. Acesta este ideal pentru a crea ferestre sau panouri care pot fi trasabile cu care utilizatorii să poată interacționa în jocul dvs.
Suprafaţă
The Suprafaţă clasa reprezintă un buffer pentru desenarea elementelor UI. Rezuma desenul de pe tampon și oferă metode pentru a activa, șterge și desena tamponul pe ecran. Puteți folosi această clasă intern pentru redarea widget-urilor sau a elementelor personalizate de UI în jocul dvs.
Aceste caracteristici suplimentare oferă oportunități de a crea experiențe de utilizator mai interactive și mai dinamice în jocurile tale. Experimentați cu aceste funcții pentru a adăuga funcționalități unice și pentru a face meniurile de joc și design-urile UI să iasă în evidență.
Cele mai bune practici pentru încorporarea GUI
Când încorporați instrumente GUI în jocurile dvs. folosind Arcade, este important să urmați câteva dintre cele mai bune practici pentru a asigura o experiență de utilizator fluidă și fără probleme. Iată câteva sfaturi de care trebuie să țineți cont:
Plan și prototip
Înainte de a te apuca de implementare, petreceți timp planificând și creând prototipuri meniurile de joc și elementele UI. Luați în considerare aspectul, funcționalitatea și estetica vizuală pentru a asigura un design coerent și ușor de utilizat.
Păstrează-l constant
Păstrați un stil vizual și un aspect coerent în meniurile de joc și elementele UI. Acest lucru îi ajută pe utilizatori să navigheze mai ușor prin jocul dvs. și oferă o experiență coerentă.
Design receptiv
Proiectați-vă elementele UI astfel încât să fie receptive și adaptabile la diferite dimensiuni și rezoluții ale ecranului. Acest lucru vă asigură că meniurile de joc și interfața de utilizare rămân utilizabile și atractive vizual pe diferite dispozitive.
Gestionare eficientă a evenimentelor
Gestionați eficient evenimentele introduse de utilizator pentru a asigura interacțiuni receptive și fluide. Evitați calculele inutile sau procesarea evenimentelor care ar putea introduce întârziere sau întârziere în răspunsul la interfața de utilizare.
Feedback utilizator
Oferiți feedback clar și imediat utilizatorilor atunci când interacționează cu meniurile de joc și elementele UI. Indici vizuale, animații și feedback-ul audio în jocuri poate îmbunătăți experiența utilizatorului și face jocul să se simtă mai șlefuit.
Urmând aceste bune practici, puteți crea meniuri de joc și modele de interfață de utilizator care sunt intuitive și atrăgătoare din punct de vedere vizual.
Creșteți implicarea utilizatorilor cu o interfață de utilizare atractivă din punct de vedere vizual
Adăugarea elementelor GUI în jocul tău nu numai că îmbunătățește utilizarea, ci și atractivitatea vizuală și implicarea generală a jucătorilor. Indiferent dacă creați un meniu de pornire, un joc peste ecran sau orice alt element de interfață de utilizare, instrumentele GUI de la Arcade oferă o gamă largă de caracteristici și funcționalități pentru a îmbunătăți experiența utilizatorului jocului dvs.