Tanuljon meg könnyedén létrehozni játékmenüket és megtervezni a felhasználói felületeket az Arcade grafikus felhasználói felületének segítségével.

A játékmenük és felhasználói felületek (UI) döntő szerepet játszanak a játék felhasználói élményének és elköteleződésének javításában. Az Arcade, egy népszerű Python-könyvtár játékfejlesztéshez, hatékony GUI (Graphical User Interface) eszközöket biztosít, amelyek megkönnyítik a játékmenük és felhasználói felület elemeinek tervezését és megvalósítását.

Hozzon létre egy egyszerű játékot

Mielőtt elkezdené, győződjön meg arról, hogy rendelkezik pip telepítve van a készülékére. Ezzel a paranccsal telepítheti az arcade könyvtárat:

pip install arcade

Kezdje egy egyszerű játék létrehozásával az Arcade segítségével.

A cikkben használt kód itt érhető el GitHub adattár és az MIT licence alapján ingyenesen használható.

Ez a játék tartalmaz egy játékos tárgyat, amely balra és jobbra mozoghat, valamint egy ellenséges tárgyat. Íme a játék kódja:

import árkád

SZÉLESSÉG = 800
MAGASSÁG = 600
PLAYER_SPEED = 25

osztályJátszma, meccs(árkád. Ablak):
def__benne__(maga):
szuper().__init__(WIDTH, HEIGHT, "Egyszerű játék")
self.player_x = SZÉLESSÉG // 2
self.enemy_x = SZÉLESSÉG - 50
self.game_over = Hamis

defbeállít(maga):
arcade.set_background_color (arcade.color. FEHÉR)

defon_draw(maga):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, HEIGHT // 2, 20, arcade.color. KÉK)
arcade.draw_circle_filled (self.enemy_x, HEIGHT // 2, 20, arcade.color. PIROS)

deffrissítés(self, delta_time):
self.enemy_x += 0.5
ha self.enemy_x >= WIDTH:
self.game_over = Igaz

defon_key_press(én, kulcs, módosítók):
ha kulcs == arcade.key. BAL:
self.player_x -= PLAYER_SPEED
elif kulcs == arcade.key. JOBB:
self.player_x += PLAYER_SPEED

játék = játék()
game.setup()
arcade.run()

Játék hozzáadása a képernyőn keresztül

Adjon hozzá egy játékot a képernyőhöz, amely üzenetet jelenít meg, amikor a az ellenség a játékablakon kívül mozog. Használja a arcade.gui. UIMager és arcade.gui. UIMessageBox osztályok ennek eléréséhez.

Hozzon létre egy példányt a UIMager és engedélyezze azt. Benne on_draw módszert, ellenőrizze, hogy a játék vége zászló be van állítva, és ha igen, rajzolja meg a felhasználói felületkezelőt. A show_game_over_screen módszer létrehozza a UIMessageBox egy játék-over üzenettel, és hozzáadja a felhasználói felületkezelőhöz. Ezenkívül engedélyezheti és letilthatja a felhasználói felületkezelőt a frissítés a játék állapotán alapuló módszer.

Hozzon létre egy új nevű fájlt game-over.py és adja hozzá a kódot az alábbi frissítésekkel:

import árkád
tól től arcade.gui import UIMager, UIMessageBox

SZÉLESSÉG = 800
MAGASSÁG = 600
PLAYER_SPEED = 25

osztályJátszma, meccs(árkád. Ablak):
def__benne__(maga):
szuper().__init__(WIDTH, HEIGHT, "Egyszerű játék")
self.player_x = SZÉLESSÉG // 2
self.enemy_x = SZÉLESSÉG - 50
self.ui_manager = UIMager()
self.game_over = Hamis

defbeállít(maga):
arcade.set_background_color (arcade.color. FEHÉR)
self.ui_manager.enable() # Engedélyezze a felhasználói felületkezelőt

defon_draw(maga):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, HEIGHT // 2, 20, arcade.color. KÉK)
arcade.draw_circle_filled (self.enemy_x, HEIGHT // 2, 20, arcade.color. PIROS)
ha self.game_over:
self.ui_manager.draw()

deffrissítés(self, delta_time):
self.enemy_x += 0.5
ha self.enemy_x >= WIDTH:
self.show_game_over_screen()
self.game_over = Igaz
ha self.game_over:
self.ui_manager.enable()
más:
self.ui_manager.disable()

defon_key_press(én, kulcs, módosítók):
ha kulcs == arcade.key. BAL:
self.player_x -= PLAYER_SPEED
elif kulcs == arcade.key. JOBB:
self.player_x += PLAYER_SPEED

defshow_game_over_screen(maga):
message_box = UIMessageBox(
szélesség=400,
magasság=200,
üzenet_szöveg="Játék vége!"
)
self.ui_manager.add (message_box)

játék = játék()
game.setup()
arcade.run()

Alább látható a kimenet:

Gombok hozzáadása

Most javítsa a játékot a képernyőn a játék újraindításához vagy a kilépéshez gombok hozzáadásával. Ezt a segítségével érheti el gombokat paramétere UIMessageBox és visszahívási funkció biztosítása a gombkattintások kezelésére.

Hozzon létre egy új nevű fájlt gombok.py és adja hozzá a kódot az alábbi frissítésekkel:

defshow_game_over_screen(maga):
message_box = UIMessageBox(
szélesség=400,
magasság=200,
üzenet_szöveg="Játék vége!",
gombok=("Újrakezd", "Kijárat"),
callback=self.on_game_over_button_click
)
self.ui_manager.add (message_box)

defon_game_over_button_click(self, button_text):
ha button_text == "Újrakezd":
self.restart_game()
elif button_text == "Kijárat":
arcade.close_window()

defrestart_game(maga):
self.game_over = Hamis
self.enemy_x = SZÉLESSÉG - 50
self.ui_manager.clear()

Alább látható a kimenet:

Ban,-ben show_game_over_screen módszer, adjon hozzá két gombot, Újrakezd és Kijárat, hoz UIMessageBox pontban történő megadásával gombokat paraméter. Visszahívási funkciót is biztosít, on_game_over_button_click, gombkattintások kezelésére. A visszahívási funkción belül ellenőrizze, hogy melyik gombra kattintott, és hajtsa végre a megfelelő műveletet.

Az Arcade GUI eszközei számos további funkciót kínálnak, amelyek tovább javíthatják a játékmenük és a felhasználói felület kialakításának funkcionalitását és interaktivitását. Íme néhány példa:

UIDraggableMixin

A UIDraggableMixin osztály segítségével bármelyik UI widgetet áthúzhatóvá tehetjük. Funkciókat biztosít a húzási viselkedés kezelésére, lehetővé téve a felhasználók számára a felhasználói felület elemeinek mozgatását a képernyőn. Ha ezt a keverést más UI widgetekkel kombinálja, húzható ablakokat vagy paneleket hozhat létre a játékban.

UIMouseFilterMixin

A UIMouseFilterMixin osztály lehetővé teszi az összes egéresemény elkapását, amely egy adott widgeten belül történik. Ez különösen hasznos ablakszerű widgetek esetén, ahol meg szeretné akadályozni, hogy az egéresemények befolyásolják a mögöttes felhasználói felület elemeit. Az egéresemények szűrésével önállóan szabályozhatja a widgeten belüli interakciót.

UIWindowLikeMixin

A UIWindowLikeMixin osztály ablakszerű viselkedést biztosít egy widget számára. Kezeli az összes egéreseményt, amely a widget határain belül történik, és lehetővé teszi a widget húzását. Ez ideális olyan húzható ablakok vagy panelek létrehozásához, amelyekkel a felhasználók interakcióba léphetnek a játékban.

Felület

A Felület osztály egy puffert jelent a felhasználói felület elemeinek rajzolásához. Absztrahálja a pufferen lévő rajzot, és módszereket biztosít a puffer aktiválására, törlésére és a képernyőre való rajzolására. Ezt az osztályt belsőleg is használhatja widgetek vagy egyéni felhasználói felület-elemek megjelenítésére a játékban.

Ezek a kiegészítő funkciók lehetőséget kínálnak arra, hogy interaktívabb és dinamikusabb felhasználói élményt teremtsenek a játékokban. Kísérletezzen ezekkel a funkciókkal, hogy egyedi funkciókat adjon hozzá, és kiemelje játékmenüit és felhasználói felületét.

A grafikus felhasználói felület beépítésének legjobb gyakorlatai

Amikor GUI-eszközöket épít be játékaiba az Arcade használatával, fontos, hogy kövessen néhány bevált gyakorlatot a zökkenőmentes és zökkenőmentes felhasználói élmény biztosítása érdekében. Íme néhány tipp, amit érdemes szem előtt tartani:

Terv és prototípus

Mielőtt belevágna a megvalósításba, szánjon időt a játékmenük és a felhasználói felület elemeinek megtervezésére és prototípusának elkészítésére. Fontolja meg az elrendezést, a funkcionalitást és a vizuális esztétikát, hogy koherens és felhasználóbarát kialakítást biztosítson.

Tartsa következetesen

Tartson fenn egységes vizuális stílust és elrendezést a játékmenük és a felhasználói felület elemei között. Ez segít a felhasználóknak könnyebben navigálni a játékban, és összetartó élményt biztosít.

Reszponzív dizájn

Tervezze meg a felhasználói felület elemeit úgy, hogy reagáljanak és alkalmazkodjanak a különböző képernyőméretekhez és -felbontásokhoz. Ez biztosítja, hogy a játékmenük és a felhasználói felület használható és tetszetős maradjanak a különböző eszközökön.

Hatékony eseménykezelés

Hatékonyan kezelje a felhasználói beviteli eseményeket a reagáló és zökkenőmentes interakciók biztosítása érdekében. Kerülje a szükségtelen számításokat vagy eseményfeldolgozást, amely késést vagy késleltetést okozhat a felhasználói felület válaszkészségében.

Felhasználói visszajelzés

Adjon egyértelmű és azonnali visszajelzést a felhasználóknak, amikor interakcióba lépnek a játék menüivel és a felhasználói felület elemeivel. Vizuális jelzések, animációk és hangos visszajelzés a játékokban javíthatja a felhasználói élményt és csiszoltabbnak érzi a játékot.

A bevált gyakorlatok követésével olyan játékmenüket és felhasználói felület-terveket hozhat létre, amelyek intuitívak és tetszetősek.

Növelje a felhasználók elköteleződését vizuálisan tetszetős felhasználói felülettel

A GUI-elemek hozzáadása a játékhoz nemcsak a használhatóságot javítja, hanem javítja a játékosok vizuális vonzerejét és általános elkötelezettségét is. Akár indítómenüt, akár képernyőn játszható játékot vagy bármilyen más UI-elemet hoz létre, az Arcade grafikus felhasználói felületének eszközei számos szolgáltatást és funkcionalitást kínálnak a játék felhasználói élményének javítása érdekében.