PyGame on suosittu kirjasto projektien luomiseen Pythonilla, ja se tarjoaa tehokkaat työkalut pelien kehittämiseen. Tässä artikkelissa opit luomaan aloitusvalikon ja pelin näytön kautta yksinkertaiselle pelille PyGamella.
Yksinkertaisen pelin luominen
Ennen kuin luot aloitusvalikon ja pelin näytölle, tehdään ensin yksinkertainen peli. Tässä pelissä ohjaat hahmoa nuolinäppäimillä ja yrität välttää esteitä. Jotta asiat olisivat yksinkertaisia, yritä olla käyttämättä kuvia.
Aloita tuomalla tarvittavat moduulit. Tulet käyttämään pygame moduuli PyGamen toimintojen käyttämiseen. Voit asentaa moduulin käytä pip-pakettien hallintaa:
pip Asentaa pygame
Nyt kun moduulimme on käyttövalmis, luodaan yksinkertainen peli, jossa pelaaja voi liikkua vasemmalle tai oikealle nuolinäppäimillä ja esteellä. Jos törmäät esteeseen, peli päättyy. Tässä on sama koodi:
tuonti pygame
pygame.sen sisällä()screen_width = 750
näytön_korkeus = 450
näyttö = pygame.display.set_mode((näytön_leveys, näytön_korkeus))este_x = 400
este_y = 400
esteen_leveys = 40
esteen_korkeus = 40
pelaaja_x = 200
pelaaja_y = 400
Player_width = 20
pelaajan_korkeus = 20sillä aikaaTotta:
vartentapahtumasisäänpygame.tapahtuma.saada():
if event.type == pygame. LOPETTAA:
pygame.lopettaa()
lopettaa()
avaimet = pygame.key.get_pressed()
josavaimet[pygame. K_LEFT]:
pelaaja_x - = 5
josavaimet[pygame. K_OIKEA]:
pelaaja_x += 5
jos pelaaja_x + pelaajan_leveys > este_x ja pelaaja_x < este_x + este_leveysjapelaaja_y + pelaajan_korkeus > este_y ja pelaaja_y < este_y + este_height:
game_over = Totta
näyttö.täyttää((0, 0, 0))
pygame.draw.oikea(näyttö, (255, 0, 0), (este_x, este_y, este_leveys, este_korkeus))
pygame.draw.oikea(näyttö, (0, 255, 0), (pelaaja_x, pelaaja_y, Player_width, pelaajan_korkeus))
pygame.näyttö.päivittää()
Yllä olevassa koodissa määritit peliikkunan ja määritit pelin muuttujat. Käsittelit myös käyttäjän syötteitä ja piirsit elementit näytölle.
Käynnistä-valikon luominen
Nyt kun sinulla on peruspeli, luodaan aloitusvalikko. Tätä varten sinun on ilmoitettava pelitilalle globaali muuttuja. Tämä muuttuja seuraa pelin nykyistä tilaa, kuten onko aloitusvalikko aktiivinen vai onko peli käynnissä. Sinun on lisättävä tämä muuttuja pelikoodisi alkuun:
pelin_tila = "Aloitusvalikko"
Seuraavaksi lisäät toiminnon, joka piirtää aloitusvalikon näyttöön. PyGame-toimintojen avulla voit piirtää tekstiä, painikkeita ja muita elementtejä näytölle.
defdraw_start_menu():
näyttö.täyttää((0, 0, 0))
font = pygame.font. SysFont("arial", 40)
title = font.render("Minun pelini", Totta, (255, 255, 255))
start_button = font.render('Alkaa', Totta, (255, 255, 255))
screen.blit (nimi, (näytön_leveys/2 - otsikko.get_leveys()/2, näytön_korkeus/2 - otsikko.get_korkeus()/2))
screen.blit (aloituspainike, (screen_width/2 - start_button.get_width()/2, screen_height/2 + start_button.get_height()/2))
pygame.näyttö.päivittää()
Voit sitten lisätä draw_start_menu() toiminto pääpelisilmukkaan.
sillä aikaaTotta:
vartentapahtumasisäänpygame.tapahtuma.saada():
if event.type == pygame. LOPETTAA:
pygame.lopettaa()
lopettaa()
jos pelin tila == "Aloitusvalikko":
draw_start_menu()
jos pelin tila == "peli":
avaimet = pygame.key.get_pressed()
# loput koodista
Nyt aloitusvalikko vedetään näyttöön. Viimeinen vaihe on käsitellä käyttäjän syötteitä. Sinä pystyt lisää jos-lauseke pääpelisilmukkaan tarkistaaksesi, onko käyttäjä painanut aloituspainiketta.
jos pelin tila == "Aloitusvalikko":
avaimet = pygame.key.get_pressed()
josavaimet[pygame. K_SPACE]:
pelaaja_x = 200
pelaaja_y = 400
pelin_tila = "peli"
game_over = Väärä
Tällä koodilla peli alkaa, kun käyttäjä painaa käynnistyspainiketta.
Pelin toteuttaminen näytöllä
Nyt kun sinulla on aloitusvalikko, luodaan peli näytön yli. Tämän toiminnon pitäisi näyttää lopullinen tulos ja pelin päättymisviesti.
defdraw_game_over_screen():
näyttö.täyttää((0, 0, 0))
font = pygame.font. SysFont("arial", 40)
title = font.render('Peli ohi', Totta, (255, 255, 255))
restart_button = font.render("R - Käynnistä uudelleen", Totta, (255, 255, 255))
quit_button = font.render('Q - Lopeta', Totta, (255, 255, 255))
screen.blit (otsikko, (näytön_leveys/2 - otsikko.get_leveys()/2, näytön_korkeus/2 - otsikko.get_korkeus()/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.näyttö.päivittää()
Voit sitten lisätä tämän toiminnon pääpelisilmukkaan.
jos pelin tila == "Aloitusvalikko":
draw_start_menu()
jos pelin tila == "peli ohi":
draw_game_over_screen()
jos pelin tila == "peli":
avaimet = pygame.key.get_pressed()
josavaimet[pygame. K_LEFT]:
pelaaja_x - = 5
josavaimet[pygame. K_OIKEA]:
pelaaja_x += 5
jos pelaaja_x + pelaajan_leveys > este_x ja pelaaja_x < este_x + este_leveysjapelaaja_y + pelaajan_korkeus > este_y ja pelaaja_y < este_y + este_height:
game_over = Totta
pelin_tila = "peli ohi"
Lopuksi sinun on käsiteltävä käyttäjän syötettä käsitelläksesi käyttäjän valintoja. Voit lisätä if-lauseen pääpelisilmukkaan tarkistaaksesi, onko käyttäjä painanut uudelleenkäynnistys- tai lopetuspainiketta.
jos pelin tila == "Aloitusvalikko":
avaimet = pygame.key.get_pressed()
josavaimet[pygame. K_SPACE]:
pelin_tila = "peli"
pelaaja_x = 200
pelaaja_y = 400
pelin_tila = "peli"
game_over = Väärä
jos pelin tila == "peli ohi":
avaimet = pygame.key.get_pressed()
josavaimet[pygame. K_r]:
pelin_tila = "Aloitusvalikko"
josavaimet[pygame. K_q]:
pygame.lopettaa()
lopettaa()
Tällä koodilla peli käynnistyy uudelleen, kun käyttäjä painaa R-painiketta, ja lopettaa, kun käyttäjä painaa näppäimistön Q-painiketta.
Alla koko koodi:
tuonti pygame
pygame.sen sisällä()
screen_width = 750
näytön_korkeus = 450
näyttö = pygame.display.set_mode((näytön_leveys, näytön_korkeus))
este_x = 400
este_y = 400
esteen_leveys = 40
esteen_korkeus = 40
pelaaja_x = 200
pelaaja_y = 400
Player_width = 20
pelaajan_korkeus = 20
pelin_tila = "Aloitusvalikko"defdraw_start_menu():
näyttö.täyttää((0, 0, 0))
font = pygame.font. SysFont("arial", 40)
title = font.render("Minun pelini", Totta, (255, 255, 255))
start_button = font.render('Alkaa', Totta, (255, 255, 255))
screen.blit (nimi, (näytön_leveys/2 - otsikko.get_leveys()/2, näytön_korkeus/2 - otsikko.get_korkeus()/2))
screen.blit (aloituspainike, (screen_width/2 - start_button.get_width()/2, screen_height/2 + start_button.get_height()/2))
pygame.näyttö.päivittää()defdraw_game_over_screen():
näyttö.täyttää((0, 0, 0))
font = pygame.font. SysFont("arial", 40)
title = font.render('Peli ohi', Totta, (255, 255, 255))
restart_button = font.render("R - Käynnistä uudelleen", Totta, (255, 255, 255))
quit_button = font.render('Q - Lopeta', Totta, (255, 255, 255))
screen.blit (otsikko, (näytön_leveys/2 - otsikko.get_leveys()/2, näytön_korkeus/2 - otsikko.get_korkeus()/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.näyttö.päivittää()
sillä aikaaTotta:
vartentapahtumasisäänpygame.tapahtuma.saada():
if event.type == pygame. LOPETTAA:
pygame.lopettaa()
lopettaa()
jos pelin tila == "Aloitusvalikko":
draw_start_menu()
avaimet = pygame.key.get_pressed()
josavaimet[pygame. K_SPACE]:
pelaaja_x = 200
pelaaja_y = 400
pelin_tila = "peli"
game_over = Väärä
elif pelin tila == "peli ohi":
draw_game_over_screen()
avaimet = pygame.key.get_pressed()
josavaimet[pygame. K_r]:
pelin_tila = "Aloitusvalikko"
josavaimet[pygame. K_q]:
pygame.lopettaa()
lopettaa()
elif pelin tila == "peli":
avaimet = pygame.key.get_pressed()
josavaimet[pygame. K_LEFT]:
pelaaja_x - = 5
josavaimet[pygame. K_OIKEA]:
pelaaja_x += 5
jos pelaaja_x + pelaajan_leveys > este_x ja pelaaja_x < este_x + este_leveysjapelaaja_y + pelaajan_korkeus > este_y ja pelaaja_y < este_y + este_height:
game_over = Totta
pelin_tila = "peli ohi"
näyttö.täyttää((0, 0, 0))
pygame.draw.oikea(näyttö, (255, 0, 0), (este_x, este_y, este_leveys, este_korkeus))
pygame.draw.oikea(näyttö, (0, 255, 0), (pelaaja_x, pelaaja_y, Player_width, pelaajan_korkeus))
pygame.näyttö.päivittää()
elif peli ohi:
pelin_tila = "peli ohi"
game_over = Väärä
Koodi alkaa tuomalla pygame moduuli ja alusta se. Sitten se luo peliikkunan ja ilmoittaa tarvittavat pelimuuttujat, mukaan lukien pelaajan ja esteen sijainnin, ulottuvuuden ja pelin tilan.
Koodi määrittelee kaksi toimintoa, draw_start_menu() ja draw_game_over_screen(), piirtääksesi aloitusvalikon ja pelin näytön yli. Nämä toiminnot käyttävät PyGame-toimintoja tekstin ja painikkeiden piirtämiseen näytölle.
Pääpelisilmukka alkaa tapahtumien käsittelyllä ja pelin tilan tarkistamisella. Jos pelin tila on Aloitusvalikko, aloitusvalikko piirretään näyttöön. Jos pelin tila on peli ohi, pelin yli -näyttö piirretään näytölle. Jos pelin tila on jokin muu, peli päivittyy ja vetää pelaajan ja esteen näytölle.
Peli päivittyy käsittelemällä näppäinpainalluksia ja tarkistamalla, ettei pelaajan ja esteen välillä ole törmäystä. Jos tapahtuu törmäys, peli asettaa sen peli ohi liputtaa Totta ja asettaa pelin tilan peli ohi.
Kun peli on päivitetty, pelaaja ja este vedetään näytölle. Lopuksi koodi tarkistaa, onko peli ohi lippu on asetettu, ja jos se on, se nollaa lipun ja asettaa pelin tilan peli ohi.
Tätä prosessia toistetaan jatkuvasti, kunnes peliikkuna suljetaan.
Lisää käyttäjien sitoutumista visuaalisesti houkuttelevalla käyttöliittymällä
Hyvin suunnitellun käyttöliittymän (UI) käyttäminen voi lisätä huomattavasti käyttäjien sitoutumista PyGame-peliin. Selkeä ja helposti luettava fontti, visuaalisesti houkutteleva grafiikka, helppo navigointi ja käyttäjien palaute ovat tärkeitä tekijöitä, jotka on otettava huomioon suunniteltaessa käyttöliittymää. Ottamalla nämä elementit käyttöön voit luoda käyttöliittymän, joka auttaa pitämään pelaajan kiinnostuneena ja uppoutumaan peliin.
Muista testata käyttöliittymääsi ja kerätä palautetta pelaajilta varmistaaksesi, että se tehostaa sitoutumista. Kaiken kaikkiaan vahvan käyttöliittymän luominen voi parantaa huomattavasti pelaajan kokemusta ja pelinautintoa.