A PyGame egy népszerű könyvtár a Python segítségével történő projektek létrehozásához, és hatékony eszközkészletet biztosít a játékfejlesztéshez. Ebből a cikkből megtudhatja, hogyan hozhat létre Start menüt és játékot a képernyőn egy egyszerű játékhoz a PyGame használatával.
Egyszerű játék létrehozása
Mielőtt létrehozná a start menüt és a játékot a képernyőn, készítsünk egy egyszerű játékot. Ebben a játékban a nyilakkal fogsz irányítani egy karaktert, és megpróbálod elkerülni az akadályokat. Az egyszerűség kedvéért ne használjon képeket.
A kezdéshez importálnia kell a szükséges modulokat. Ön fogja használni a pygame modul a PyGame funkcióinak eléréséhez. A modul telepítéséhez megteheti használja a pip csomagkezelőt:
csipog telepítés pygame
Most, hogy a modulunk használatra kész, készítsünk egy egyszerű játékot egy játékossal, amely a nyílbillentyűkkel és egy akadály segítségével balra vagy jobbra mozoghat. Ha ütközik az akadállyal, a játék véget ér. Íme a kód ugyanerre:
import pygame
pygame.benne()screen_width = 750
képernyő_magasság = 450
képernyő = pygame.display.set_mode((screen_width, screen_height))akadály_x = 400
akadály_y = 400
akadály_szélessége = 40
akadály_magasság = 40
játékos_x = 200
játékos_y = 400
játékos_szélessége = 20
játékos_magasság = 20mígIgaz:
számáraeseményban benpygame.esemény.kap():
if event.type == pygame. KILÉPÉS:
pygame.Kilépés()
Kilépés()
keys = pygame.key.get_pressed()
hakulcsok[pygame. K_LEFT]:
játékos_x -= 5
hakulcsok[pygame. K_JOBBRA]:
játékos_x += 5
ha játékos_x + játékos_szélessége > akadály_x és játékos_x < akadály_x + akadály_szélességeésjátékos_y + játékos_magasság > akadály_y és játékos_y < akadály_y + akadály_magasság:
game_over = Igaz
képernyő.tölt((0, 0, 0))
pygame.húz.Rect(képernyő, (255, 0, 0), (akadály_x, akadály_y, akadály_szélessége, akadály_magasság))
pygame.húz.Rect(képernyő, (0, 255, 0), (játékos_x, játékos_y, player_width, játékos_magasság))
pygame.kijelző.frissítés()
A fenti kódban beállítottad a játékablakot és deklaráltad a játékváltozókat. Ön kezelte a felhasználói bevitelt is, és a képernyőre rajzolta az elemeket.
A Start menü létrehozása
Most, hogy van egy alapjátékod, hozzunk létre egy start menüt. Ehhez deklarálnia kell egy globális változót a játék állapotához. Ez a változó nyomon követi a játék aktuális állapotát, például azt, hogy a start menü aktív vagy a játék fut-e. Ezt a változót hozzá kell adnia a játék kódjának elejéhez:
game_state = "Start menü"
Ezután hozzáad egy funkciót, amely a start menüt a képernyőre rajzolja. A PyGame funkcióival szöveget, gombokat és egyéb elemeket rajzolhat a képernyőre.
defdraw_start_menu():
képernyő.tölt((0, 0, 0))
font = pygame.font. SysFont("arial", 40)
title = font.render('Az én játékom', Igaz, (255, 255, 255))
start_button = font.render('Rajt', Igaz, (255, 255, 255))
screen.blit (title, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/2))
screen.blit (start_button, (screen_width/2 - start_button.get_width()/2, screen_height/2 + start_button.get_height()/2))
pygame.kijelző.frissítés()
Ezután hozzáadhatja a draw_start_menu() funkciót a fő játékhurokhoz.
mígIgaz:
számáraeseményban benpygame.esemény.kap():
if event.type == pygame. KILÉPÉS:
pygame.Kilépés()
Kilépés()
ha game_state == "Start menü":
draw_start_menu()
ha game_state == "játszma, meccs":
keys = pygame.key.get_pressed()
# a kód többi része
Most a képernyőn megjelenik a Start menü. Az utolsó lépés a felhasználói bevitel kezelése. tudsz adjunk hozzá egy if utasítást a fő játékhurokba, hogy ellenőrizze, hogy a felhasználó megnyomta-e a start gombot.
ha game_state == "Start menü":
keys = pygame.key.get_pressed()
hakulcsok[pygame. K_SPACE]:
játékos_x = 200
játékos_y = 400
game_state = "játszma, meccs"
game_over = Hamis
Ezzel a kóddal a játék akkor indul el, amikor a felhasználó megnyomja a start gombot.
A játék megvalósítása képernyőn
Most, hogy megvan a start menü, hozzuk létre a játékot a képernyőn. Ennek a funkciónak a végeredményt és a játék vége üzenetet kell megjelenítenie.
defdraw_game_over_screen():
képernyő.tölt((0, 0, 0))
font = pygame.font. SysFont("arial", 40)
title = font.render('Játék vége', Igaz, (255, 255, 255))
restart_button = font.render("R - Újraindítás", Igaz, (255, 255, 255))
quit_button = font.render('K - kilép', Igaz, (255, 255, 255))
screen.blit (title, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/3))
screen.blit (restart_button, (screen_width/2 - restart_button.get_width()/2, screen_height/1.9 + restart_button.get_height()))
screen.blit (quit_button, (screen_width/2 - quit_button.get_width()/2, screen_height/2 + quit_button.get_height()/2))
pygame.kijelző.frissítés()
Ezután hozzáadhatja ezt a funkciót a fő játékhurokhoz.
ha game_state == "Start menü":
draw_start_menu()
ha game_state == "játék vége":
draw_game_over_screen()
ha game_state == "játszma, meccs":
keys = pygame.key.get_pressed()
hakulcsok[pygame. K_LEFT]:
játékos_x -= 5
hakulcsok[pygame. K_JOBBRA]:
játékos_x += 5
ha játékos_x + játékos_szélessége > akadály_x és játékos_x < akadály_x + akadály_szélességeésjátékos_y + játékos_magasság > akadály_y és játékos_y < akadály_y + akadály_magasság:
game_over = Igaz
game_state = "játék vége"
Végül kezelnie kell a felhasználói bevitelt a felhasználó választásának kezeléséhez. A fő játékhurokhoz hozzáadhat egy if utasítást, hogy ellenőrizze, hogy a felhasználó megnyomta-e az újraindítás vagy a kilépés gombot.
ha game_state == "Start menü":
keys = pygame.key.get_pressed()
hakulcsok[pygame. K_SPACE]:
game_state = "játszma, meccs"
játékos_x = 200
játékos_y = 400
game_state = "játszma, meccs"
game_over = Hamis
ha game_state == "játék vége":
keys = pygame.key.get_pressed()
hakulcsok[pygame. K_r]:
game_state = "Start menü"
hakulcsok[pygame. K_q]:
pygame.Kilépés()
Kilépés()
Ezzel a kóddal a játék újraindul, amikor a felhasználó megnyomja az „R” gombot, és kilép, ha a felhasználó megnyomja a „Q” gombot a billentyűzeten.
Alább a teljes kód:
import pygame
pygame.benne()
screen_width = 750
képernyő_magasság = 450
képernyő = pygame.display.set_mode((screen_width, screen_height))
akadály_x = 400
akadály_y = 400
akadály_szélessége = 40
akadály_magasság = 40
játékos_x = 200
játékos_y = 400
játékos_szélessége = 20
játékos_magasság = 20
game_state = "Start menü"defdraw_start_menu():
képernyő.tölt((0, 0, 0))
font = pygame.font. SysFont("arial", 40)
title = font.render('Az én játékom', Igaz, (255, 255, 255))
start_button = font.render('Rajt', Igaz, (255, 255, 255))
screen.blit (title, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/2))
screen.blit (start_button, (screen_width/2 - start_button.get_width()/2, screen_height/2 + start_button.get_height()/2))
pygame.kijelző.frissítés()defdraw_game_over_screen():
képernyő.tölt((0, 0, 0))
font = pygame.font. SysFont("arial", 40)
title = font.render('Játék vége', Igaz, (255, 255, 255))
restart_button = font.render("R - Újraindítás", Igaz, (255, 255, 255))
quit_button = font.render('K - kilép', Igaz, (255, 255, 255))
screen.blit (title, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/3))
screen.blit (restart_button, (screen_width/2 - restart_button.get_width()/2, screen_height/1.9 + restart_button.get_height()))
screen.blit (quit_button, (screen_width/2 - quit_button.get_width()/2, screen_height/2 + quit_button.get_height()/2))
pygame.kijelző.frissítés()
mígIgaz:
számáraeseményban benpygame.esemény.kap():
if event.type == pygame. KILÉPÉS:
pygame.Kilépés()
Kilépés()
ha game_state == "Start menü":
draw_start_menu()
keys = pygame.key.get_pressed()
hakulcsok[pygame. K_SPACE]:
játékos_x = 200
játékos_y = 400
game_state = "játszma, meccs"
game_over = Hamis
elif game_state == "játék vége":
draw_game_over_screen()
keys = pygame.key.get_pressed()
hakulcsok[pygame. K_r]:
game_state = "Start menü"
hakulcsok[pygame. K_q]:
pygame.Kilépés()
Kilépés()
elif game_state == "játszma, meccs":
keys = pygame.key.get_pressed()
hakulcsok[pygame. K_LEFT]:
játékos_x -= 5
hakulcsok[pygame. K_JOBBRA]:
játékos_x += 5
ha játékos_x + játékos_szélessége > akadály_x és játékos_x < akadály_x + akadály_szélességeésjátékos_y + játékos_magasság > akadály_y és játékos_y < akadály_y + akadály_magasság:
game_over = Igaz
game_state = "játék vége"
képernyő.tölt((0, 0, 0))
pygame.húz.Rect(képernyő, (255, 0, 0), (akadály_x, akadály_y, akadály_szélessége, akadály_magasság))
pygame.húz.Rect(képernyő, (0, 255, 0), (játékos_x, játékos_y, player_width, játékos_magasság))
pygame.kijelző.frissítés()
elif játék vége:
game_state = "játék vége"
game_over = Hamis
A kód importálásával kezdődik pygame modult és inicializálja. Ezután létrehoz egy játékablakot, és deklarálja a szükséges játékváltozókat, beleértve a játékos és az akadály helyzetét, méretét és a játék állapotát.
A kód két funkciót határoz meg, draw_start_menu() és draw_game_over_screen(), a Start menü és a játék képernyőre rajzolásához. Ezek a funkciók a PyGame funkcióit használják szövegek és gombok képernyőre rajzolásához.
A fő játékkör az események kezelésével és a játék állapotának ellenőrzésével kezdődik. Ha a játék állapota az Start menü, a Start menü megjelenik a képernyőn. Ha a játék állapota az játék vége, a játék-over képernyő a képernyőhöz húzódik. Ha a játék állapota más, a játék frissíti, és a játékost és az akadályt a képernyőre vonja.
A játék a gombnyomások kezelésével és a játékos és az akadály ütközésének ellenőrzésével frissül. Ha ütközés történik, a játék beállítja a játék vége zászlót, hogy Igaz és beállítja a játék állapotát játék vége.
A játék frissítése után a játékos és az akadály megjelenik a képernyőn. Végül a kód ellenőrzi, hogy a játék vége jelző be van állítva, és ha igen, akkor visszaállítja a jelzőt és a játék állapotát játék vége.
Ez a folyamat folyamatosan ismétlődik, amíg a játékablak be nem záródik.
Növelje a felhasználók elköteleződését vizuálisan tetszetős felhasználói felülettel
Egy jól megtervezett felhasználói felület (UI) használata nagyban növelheti a felhasználók elkötelezettségét a PyGame játékban. Az áttekinthető és könnyen olvasható betűtípus, a tetszetős grafika, az egyszerű navigáció és a felhasználói visszajelzések mind fontos szempontok, amelyeket figyelembe kell venni a felhasználói felület megtervezésekor. Ezen elemek megvalósításával olyan felhasználói felületet hozhat létre, amely segít fenntartani a játékos érdeklődését és elmerülni a játékban.
Ne felejtse el tesztelni a felhasználói felületet, és visszajelzést gyűjteni a játékosoktól, hogy megbizonyosodjon arról, hogy az hatékonyan növeli az elkötelezettséget. Összességében elmondható, hogy egy erős felhasználói felület létrehozására fordított idő nagyban javíthatja a játékos élményét és a játék élvezetét.