PyGame er et populært bibliotek for å lage prosjekter med Python, og det gir et kraftig sett med verktøy for spillutvikling. I denne artikkelen vil du lære hvordan du lager en startmeny og spill over skjerm for et enkelt spill ved å bruke PyGame.
Opprette et enkelt spill
Før du lager startmenyen og spill over skjermen, la oss først lage et enkelt spill. I dette spillet vil du kontrollere en karakter med piltastene og prøve å unngå hindringer. For å gjøre ting enkelt, prøv å ikke bruke noen bilder.
For å komme i gang må du importere de nødvendige modulene. Du vil bruke pygame modul for å få tilgang til PyGames funksjoner. For å installere modulen kan du bruk pip-pakkebehandleren:
pip installere pygame
Nå som modulen vår er klar til bruk, la oss lage et enkelt spill med en spiller som kan bevege seg til venstre eller høyre ved hjelp av piltastene og en hindring. Hvis du kolliderer med hindringen, vil spillet avsluttes. Her er koden for det samme:
import pygame
pygame.i det()skjermbredde = 750
skjermhøyde = 450
screen = pygame.display.set_mode((screen_width, screen_height))hinder_x = 400
hindring_y = 400
hindringsbredde = 40
hinder_høyde = 40
player_x = 200
player_y = 400
player_width = 20
spillerhøyde = 20samtidig somekte:
tilbegivenhetipygame.begivenhet.få():
if event.type == pygame. SLUTTE:
pygame.slutte()
slutte()
keys = pygame.key.get_pressed()
hvisnøkler[pygame. K_LEFT]:
player_x -= 5
hvisnøkler[pygame. K_RIGHT]:
player_x += 5
hvis player_x + player_width > hinder_x og player_x < hindring_x + hindringsbreddeogspiller_y + spillerhøyde > hinder_y og spiller_y < hindring_y + hinder_høyde:
game_over = ekte
skjerm.fylle((0, 0, 0))
pygame.tegne.rect(skjerm, (255, 0, 0), (hindring_x, hindring_y, hindringsbredde, hinder_høyde))
pygame.tegne.rect(skjerm, (0, 255, 0), (spiller_x, spiller_y, player_width, spillerhøyde))
pygame.vise.Oppdater()
I koden ovenfor satte du opp spillvinduet og deklarerte spillvariablene. Du håndterte også brukerinnspill og tegnet elementene til skjermen.
Opprette startmenyen
Nå som du har et grunnleggende spill, la oss lage en startmeny. For å gjøre dette, må du deklarere en global variabel for spilltilstanden. Denne variabelen vil holde styr på gjeldende tilstand av spillet, for eksempel om startmenyen er aktiv eller spillet kjører. Du må legge til denne variabelen i begynnelsen av spillkoden:
game_state = "startmeny"
Deretter vil du legge til en funksjon for å tegne startmenyen til skjermen. Du kan bruke PyGame-funksjoner til å tegne teksten, knappene og andre elementer på skjermen.
defdraw_start_menu():
skjerm.fylle((0, 0, 0))
font = pygame.font. SysFont('arial', 40)
tittel = font.render("Mitt spill", ekte, (255, 255, 255))
start_button = font.render('Start', ekte, (255, 255, 255))
screen.blit (tittel, (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.vise.Oppdater()
Du kan deretter legge til draw_start_menu() funksjon til hovedspillsløyfen.
samtidig somekte:
tilbegivenhetipygame.begivenhet.få():
if event.type == pygame. SLUTTE:
pygame.slutte()
slutte()
hvis game_state == "startmeny":
draw_start_menu()
hvis game_state == "spill":
keys = pygame.key.get_pressed()
# resten av koden
Nå vil startmenyen bli trukket til skjermen. Det siste trinnet er å håndtere brukerinnspillet. Du kan legg til en hvis-setning til hovedspillsløyfen for å sjekke om brukeren har trykket på startknappen.
hvis game_state == "startmeny":
keys = pygame.key.get_pressed()
hvisnøkler[pygame. K_SPACE]:
player_x = 200
player_y = 400
game_state = "spill"
game_over = Falsk
Med denne koden vil spillet starte når brukeren trykker på startknappen.
Implementering av Game Over Screen
Nå som du har startmenyen, la oss lage spillet over skjermen. Denne funksjonen skal vise sluttresultatet og en game-over-melding.
defdraw_game_over_screen():
skjerm.fylle((0, 0, 0))
font = pygame.font. SysFont('arial', 40)
tittel = font.render('Spillet er over', ekte, (255, 255, 255))
restart_button = font.render('R - Start på nytt', ekte, (255, 255, 255))
quit_button = font.render('Q - Avslutt', ekte, (255, 255, 255))
screen.blit (tittel, (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.vise.Oppdater()
Du kan deretter legge til denne funksjonen i hovedspillsløyfen.
hvis game_state == "startmeny":
draw_start_menu()
hvis game_state == "spillet er over":
draw_game_over_screen()
hvis game_state == "spill":
keys = pygame.key.get_pressed()
hvisnøkler[pygame. K_LEFT]:
player_x -= 5
hvisnøkler[pygame. K_RIGHT]:
player_x += 5
hvis player_x + player_width > hinder_x og player_x < hindring_x + hindringsbreddeogspiller_y + spillerhøyde > hinder_y og spiller_y < hindring_y + hinder_høyde:
game_over = ekte
game_state = "spillet er over"
Til slutt må du håndtere brukerinndata for å håndtere brukerens valg. Du kan legge til en if-setning i hovedspillsløyfen for å sjekke om brukeren har trykket på omstart eller avslutt-knappen.
hvis game_state == "startmeny":
keys = pygame.key.get_pressed()
hvisnøkler[pygame. K_SPACE]:
game_state = "spill"
player_x = 200
player_y = 400
game_state = "spill"
game_over = Falsk
hvis game_state == "spillet er over":
keys = pygame.key.get_pressed()
hvisnøkler[pygame. K_r]:
game_state = "startmeny"
hvisnøkler[pygame. K_q]:
pygame.slutte()
slutte()
Med denne koden vil spillet starte på nytt når brukeren trykker på 'R'-knappen og avsluttes når brukeren trykker på 'Q'-knappen på tastaturet.
Nedenfor er hele koden:
import pygame
pygame.i det()
skjermbredde = 750
skjermhøyde = 450
screen = pygame.display.set_mode((screen_width, screen_height))
hinder_x = 400
hindring_y = 400
hindringsbredde = 40
hinder_høyde = 40
player_x = 200
player_y = 400
player_width = 20
spillerhøyde = 20
game_state = "startmeny"defdraw_start_menu():
skjerm.fylle((0, 0, 0))
font = pygame.font. SysFont('arial', 40)
tittel = font.render("Mitt spill", ekte, (255, 255, 255))
start_button = font.render('Start', ekte, (255, 255, 255))
screen.blit (tittel, (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.vise.Oppdater()defdraw_game_over_screen():
skjerm.fylle((0, 0, 0))
font = pygame.font. SysFont('arial', 40)
tittel = font.render('Spillet er over', ekte, (255, 255, 255))
restart_button = font.render('R - Start på nytt', ekte, (255, 255, 255))
quit_button = font.render('Q - Avslutt', ekte, (255, 255, 255))
screen.blit (tittel, (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.vise.Oppdater()
samtidig somekte:
tilbegivenhetipygame.begivenhet.få():
if event.type == pygame. SLUTTE:
pygame.slutte()
slutte()
hvis game_state == "startmeny":
draw_start_menu()
keys = pygame.key.get_pressed()
hvisnøkler[pygame. K_SPACE]:
player_x = 200
player_y = 400
game_state = "spill"
game_over = Falsk
elif game_state == "spillet er over":
draw_game_over_screen()
keys = pygame.key.get_pressed()
hvisnøkler[pygame. K_r]:
game_state = "startmeny"
hvisnøkler[pygame. K_q]:
pygame.slutte()
slutte()
elif game_state == "spill":
keys = pygame.key.get_pressed()
hvisnøkler[pygame. K_LEFT]:
player_x -= 5
hvisnøkler[pygame. K_RIGHT]:
player_x += 5
hvis player_x + player_width > hinder_x og player_x < hindring_x + hindringsbreddeogspiller_y + spillerhøyde > hinder_y og spiller_y < hindring_y + hinder_høyde:
game_over = ekte
game_state = "spillet er over"
skjerm.fylle((0, 0, 0))
pygame.tegne.rect(skjerm, (255, 0, 0), (hindring_x, hindring_y, hindringsbredde, hinder_høyde))
pygame.tegne.rect(skjerm, (0, 255, 0), (spiller_x, spiller_y, player_width, spillerhøyde))
pygame.vise.Oppdater()
elif spillet er over:
game_state = "spillet er over"
game_over = Falsk
Koden starter med å importere pygame modulen og initialisere den. Den oppretter deretter et spillvindu og deklarerer de nødvendige spillvariablene, inkludert spillerens og hindringens posisjon, dimensjon og spilltilstand.
Koden definerer to funksjoner, draw_start_menu() og draw_game_over_screen(), for å tegne startmenyen og spillet over skjermen. Disse funksjonene bruker PyGame-funksjonene til å tegne tekst og knapper til skjermen.
Hovedspillsløyfen starter med å håndtere hendelser og sjekke spilltilstanden. Hvis spilltilstanden er startmeny, er startmenyen trukket til skjermen. Hvis spilltilstanden er spillet er over, blir game-over-skjermen trukket til skjermen. Hvis spilltilstanden er noe annet, oppdateres spillet og trekker spilleren og hindringen til skjermen.
Spillet oppdateres ved å håndtere tastetrykk og se etter en kollisjon mellom spilleren og hindringen. Hvis det er en kollisjon, setter spillet spillet er over flagg til ekte og setter spilltilstanden til spillet er over.
Etter at spillet er oppdatert, trekkes spilleren og hindringen til skjermen. Til slutt sjekker koden om spillet er over flagget er satt, og hvis det er det, tilbakestiller det flagget og setter spilltilstanden til spillet er over.
Denne prosessen gjentas kontinuerlig til spillvinduet lukkes.
Øk brukerengasjementet med visuelt tiltalende brukergrensesnitt
Å bruke et godt designet brukergrensesnitt (UI) kan øke brukerengasjementet i et PyGame-spill betraktelig. En klar og lettlest skrift, visuelt tiltalende grafikk, enkel navigering og tilbakemeldinger fra brukere er alle viktige elementer å vurdere når du utformer brukergrensesnittet. Ved å implementere disse elementene kan du lage et brukergrensesnitt som bidrar til å holde spilleren interessert og fordypet i spillet.
Husk å teste brukergrensesnittet ditt og samle tilbakemeldinger fra spillere for å sikre at det er effektivt for å øke engasjementet. Totalt sett kan det å ta deg tid til å lage et sterkt brukergrensesnitt forbedre spillerens opplevelse og glede av spillet ditt.