Pygame er en modul i Python brukt til videospilldesign; Disse videospillene spenner fra en enkel tic tac tå til romkjempere. Enten du vil designe et enkelt spill eller et komplisert, må du starte med det grunnleggende om hvordan Pygame fungerer. I denne opplæringen vil vi gjennomgå det grunnleggende om Pygame ved å lage et videospill.
Installer Pygame ved å bruke:
Pip installer pygame
Trinn 1: Opprette det første vinduet
Det første trinnet i å lage et videospill er å initialisere pygame ved hjelp av init () -metoden. Deretter setter vi geometrien til skjermen ved hjelp av Pygame.vise.set_mode (), der vi passerer bredden og høyden på skjermen (i den rekkefølgen). Disse to kodelinjene vil lage et vindu som raskt vil forsvinne, så vi trenger et hovedloop for å holde vinduet i gang. Innenfor denne hovedloopen vil vi legge til en exit -strategi. Utgangsstrategien opprettes ved å velge en hendelse fra hendelseslisten (denne hendelseslisten ligger i Pygame.begivenhet.få () som har alle tilgjengelige hendelser). Deretter oppgir vi at hvis hendelsen som vi har valgt er Pygame.Slutte, deretter gå ut. Sistnevnte vil opprette et mainloop for vinduet, som vil holde vinduet i gang til du trykker på sluttknappen.
Importer pygame
Importer Sys
Pygame.i det()
størrelse = bredde, høyde = 800, 600
skjerm = Pygame.vise.set_mode (størrelse)
Mens sant:
For arrangement i Pygame.begivenhet.få():
Hvis arrangementet.type == pygame.SLUTTE:
sys.exit()
Trinn 2: Legge til titler, ikoner, bakgrunnsfarger og bilder
I denne delen legger vi til titler, bakgrunnsfarger og bilder og ikoner i vinduet.
(a) Tittelen legges til ved hjelp av:
# sett tittelen på vinduet
Pygame.vise.set_caption ("videospill")
(b) Jeg fikk logoen min fra https: // icons8.com/ikon/sett/datamaskin-hardware/doodle. Hvis du bruker Pycharm, kan du plassere ikonet du laster ned i riktig mappe (i mitt tilfelle var det C: \ Brukere \ Never \ PycharmProjects \ PythonProject2 \ Icon.png). Logoen er lagt til ved hjelp av:
# Angi ikonet
Bilde = Pygame.bilde.Last ("Ikon.png ")
Pygame.vise.set_icon (bilde)
(c) Du kan også endre bakgivfargen. For dette bruker vi skjerm.Fyll () som tar en RGB -farge. I mitt tilfelle har jeg satt den til (0,0,0). Når du har angitt fargen, må du også oppdatere pygame for at fargeendringen trer i kraft.
# Fyll bakgrunnen
skjerm.Fyll ((0, 0, 0))
Pygame.vise.Oppdater()
(d) Hva om du ville angi et bakgrunnsbilde på skjermen? Det er mulig også. Siden du vil at bildet skal løpe hele tiden, må det plasseres i stundsløyfen. Faktisk må alt som må løpe kontinuerlig plasseres i hovedloop. Vi bruker Pygame.bilde.Last () for å velge et bilde vi vil laste og blit () -metoden for å plassere det. Her, skjerm.Blit () tar to argumenter - det lastede bildet, tupelen på stedet der bildets øverste venstre hjørne blir plassert. Videre, Pygame.vise.oppdatering () må plasseres helt på slutten for å oppdatere skjermen! Når du designer videospill, betyr rekkefølgen du plasserer koden viktig!!! For eksempel kan oppdateringen ikke komme før bildene!
# Lag bakgrunnsbildet
BG_IMAGE = Pygame.bilde.Last ("BG_IMAGE.jpg ")
skjerm.Blit (BG_IMAGE, (-15, -25))
Pygame.vise.Oppdater()
Alternativt kan vi også dumpe den i en bakgrunnsfunksjon (som vil være nyttig senere), så vi skriver om bakgrunnen som følger:
# Lag bakgrunnsbildet
BG_IMAGE = Pygame.bilde.Last ("BG_IMAGE_3.jpg ")
def bakgrunn ():
skjerm.Blit (BG_IMAGE, (-15, -25))
Vær oppmerksom på at vi har plassert bakgrunnen i en funksjon som heter bakgrunn (), som vi vil aktivere i mens Loop senere.
Trinn 3: Legge til bilder av spilleren på vinduet
Neste, la oss opprette en person. Dette gjøres ved først å laste inn bildet og deretter bruke skjermen.blit () for å plassere bildet.
# personbilde
image_person = pygame.bilde.Last ("person.png ")
skjerm.Blit (Image_person, (400, 550))
Vær oppmerksom på at rekkefølgen du plasserer koden også betyr noe! Hvis du plasserer koden for bakgrunnen etter koden for fienden, vil verken personen eller fienden være synlig!
Imidlertid, igjen, for hele koden, vil vi plassere den i en funksjon. Så koden kan skrives på nytt som følger:
# personbilde
Person_x = 400
Person_y = 550
image_person = pygame.bilde.Last ("jente.png ")
def person (x, y):
skjerm.blit (image_person, (x, y))
Denne funksjonen kan aktiveres i stundsløyfen som følger:
person (person_x, person_y)
Trinn 4: Flytt person ()
Nå blir det vanskelig, så vær oppmerksom. Vi må trykke på tastene for å flytte personen rett, så vi vil legge dem inn i stundsløyfen som følger:
pressed_keys = pygame.nøkkel.get_pressed ()
Hvis PRESSED_KEYS [Pygame.K_right]:
Person_x += 0.1
Hvis PRESSED_KEYS [Pygame.K_left]:
Person_x += -0.1
Vi bruker Pygame.nøkkel.get_pressed () for å få den pressede nøkkelen, sjekk den deretter. Hvis den pressede tasten er den høyre piltasten (Pygame.K_right), da økes vår variable person_x med en verdi av 0.1. Hvis, derimot, er nøkkelen som er presset på venstre pil (Pygame.K_left), så reduserer vi med 0.1. Det vi gjør er å endre plasseringen av bildet på konsollen. Hvis høyre pil trykkes, vil den første tupelen på (400, 550) bli (400.1, 550) - og dette er plasseringen av bildet!
Vi må også aktivere begge funksjonene - bakgrunn () og person (). Funksjonsbakgrunnen () vil fjerne skjermen hver gang sløyfen starter, og uten den vil du ha en "dra".
Koden som helhet rett på dette tidspunktet vil se slik ut:
Importer pygame
Importer Sys
# Initialiser
Pygame.i det()
# Sett skjermgeometri
størrelse = bredde, høyde = 800, 600
skjerm = Pygame.vise.set_mode (størrelse)
# sett tittelen på vinduet
Pygame.vise.set_caption ("videospill")
# Angi ikonet
Bilde = Pygame.bilde.Last ("Ikon.png ")
Pygame.vise.set_icon (bilde)
# Lag bakgrunnsbildet
BG_IMAGE = Pygame.bilde.Last ("BG_IMAGE_3.jpg ")
def bakgrunn ():
skjerm.Blit (BG_IMAGE, (-15, -25))
# personbilde
Person_x = 400
Person_y = 550
image_person = pygame.bilde.Last ("jente.png ")
def person (x, y):
skjerm.blit (image_person, (x, y))
# mainloop
Mens sant:
For arrangement i Pygame.begivenhet.få():
Hvis arrangementet.type == pygame.SLUTTE:
sys.exit()
# sjekk for tastene trykket
pressed_keys = pygame.nøkkel.get_pressed ()
# Hvis nøkkelen er presset er den høyre pilen,
# Gå deretter til høyre
Hvis PRESSED_KEYS [Pygame.K_right]:
Person_x += 0.1
# Hvis nøkkelen som er presset er venstre pil,
# flytt deretter til venstre
Hvis PRESSED_KEYS [Pygame.K_left]:
Person_x += -0.1
# Aktiver bakgrunnsfunksjonen
bakgrunn()
# Aktiver personfunksjonen
person (person_x, person_y)
# Oppdater alt
Pygame.vise.Oppdater()
Trinn 5: Angi grensegrenser
Når vi trykker på høyre eller venstre pil, for øyeblikket, vil personen (eller hovedpersonen) i spillet vårt fortsette å bevege seg og bevege seg selv utenfor rekkevidden eller utenfor konsollvinduet. Så det neste vi må gjøre er å sette grenser for bevegelsen.
Å sette grenser er enkelt. Vi går til våre pressed_keys [pygame.K_right] argument og legge til en tilstand. Vi legger til tilstanden at x må være mindre enn skjermbredden vår - karakterens bredde.
I mitt tilfelle var karakterens bredde 50 piksler, og skjermens x bredde var 800. Så jeg satte høyre side til 800 - 50 = 750 piksler. Hva dette gjør er å begrense karakterens bevegelse. Karakteren min kan ikke gå utover 750 piksler og vil dermed forbli på konsollskjermen til enhver tid.
pressed_keys = pygame.nøkkel.get_pressed ()
# Hvis nøkkelen er presset er den høyre pilen,
# Gå deretter til høyre
Hvis PRESSED_KEYS [Pygame.K_right] og person_x < 750:
Person_x += 0.1
# Hvis nøkkelen som er presset er venstre pil,
# flytt deretter til venstre
Hvis PRESSED_KEYS [Pygame.K_left] og person_x> 0:
Person_x += -0.1
Trinn 6: Opprette fienden
Å skape fienden er den enkle delen. Vi gjør det på samme måte som vi opprettet hovedpersonen. Her vil vi randomisere stedet der fienden vises, så vi vil bruke den tilfeldige modulen til å gjøre det. Vi bruker tilfeldig.randint () for å sette et tilfeldig sted.
importere tilfeldig
# fiendens image
fiende_x = tilfeldig.Randint (0, 750)
fiende_y = tilfeldig.Randint (0, 300)
image_enemy = pygame.bilde.belastning ("fiende.png ")
def fiende (x, y):
skjerm.blit (image_enemy, (x, y))
Husk å aktivt fienden i mens Loop:
# Aktiver fienden
fiende (fiende_x, fiende_y)
Trinn 7: Flytte fienden
Å flytte fienden krever litt fantasi. Vi initialiserer variablene (utenfor While Loop):
#initialiser variabler
fiende_diff = 0.6
fiende_x = 0
Og innenfor stundsløyfen skriver vi:
# Flytt fienden
Enemy_x += Enemy_diff
Hvis fiende_x <= 0:
fiende_x = 0
fiende_diff = 0.6
Hvis fiende_x> = 730:
fiende_x = 730
Enemy_diff = -0.6
Hva dette gjør er at hvis bildet av fienden er innenfor grenser (i dette tilfellet, mellom 0 og 730), vil det beregne ligningen Enemy_x = Enemy_x + Enemy_diff og flytte den. Hvis derimot, plasseringen av fienden er større enn 730, setter vi fiendens plassering til 730 og reverserer hastigheten ved å skrive -0.6 i stedet for 0.6. Hvis fiendens beliggenhet er mindre enn 0, setter vi fienden_x -variabelen til 0 og ber den om å komme videre med 0.6 piksler. Fordi vi har å gjøre med en stundsløyfe, hver gang sløyfen starter på nytt, får den fienden_x -variabelen til å endre seg og derfor fiendens beliggenhet endres. Til slutt, alt dette vil gjøre er å flytte fienden frem og tilbake til venstre og høyre for alltid.
Trinn 8: Opprette og skyte flere kuler
I mitt tilfelle skal jeg kaste bøker på ildkulen. Så kulen min er en bok eller flere bøker. La oss først initialisere alle variablene vi trenger:
#initialiser variabler
bøker_diff = 4
Books_y = 520
Books_x = 420
Books_x og Books_y er deres første beliggenhet; Jeg har plassert dem i nærheten av hovedpersonen. Bøker_diff er hastigheten. Deretter initialiserer vi tilstanden, som "ikke beveger seg" og laster bildet.
# bøker image
bøker_state = "ikke beveger seg"
Image_Books = Pygame.bilde.Last ("Bøker.png ")
Vi lager deretter en funksjon som tar Books_state. Hvis vi plasserer boka på nettet, endrer vi tilstanden til å "bevege seg". Denne funksjonen er hovedfunksjonen som vil plassere kulen på kartet/konsollen. Videre, i funksjonsbøkene (), har jeg skrevet x+15 og y+1 for å sentrere bildet. Uten sistnevnte ser bøkene ut til den ene siden.
def bøker (x, y):
Global Books_state
Books_state = "Moving"
skjerm.blit (image_books, (x + 15, y + 1))
Og innenfor hovedsløyfen ville du skrevet:
# bøker bevegelse
Hvis Books_y <= 0:
Books_y = 420
bøker_state = "ikke beveger seg"
Hvis Books_state er "beveger seg":
bøker_x = person_x
bøker (bøker_x, bøker_y)
bøker_y -= bøker_diff
# Brann hvis romknappen trykkes
Hvis PRESSED_KEYS [Pygame.K_space]:
bøker_x = person_x
bøker (bøker_x, bøker_y)
Vi definerer først hva som skjer når kulen/bøkene beveger seg av nettet eller er i posisjon y<0. In this case, we change the state back to “not moving” and place the books back on the y-axis at 420. If, on the other hand, the state of the book is “moving”, we say that we want it to move (books_y -= books_diff where books_diff is its speed). Next, we also state that if the key is pressed, we want the books() function to be activated, placing the books' image onto the console grid.
Koden som helhet på dette tidspunktet ville se ut slik:
Importer pygame
Importer Sys
# Initialiser
Pygame.i det()
# Initialiser klokken
klokke = pygame.tid.Klokke()
# Sett skjermgeometri
størrelse = bredde, høyde = 800, 600
skjerm = Pygame.vise.set_mode (størrelse)
# sett tittelen på vinduet
Pygame.vise.set_caption ("videospill")
# Angi ikonet
Bilde = Pygame.bilde.Last ("Ikon.png ")
Pygame.vise.set_icon (bilde)
# Lag bakgrunnsbildet
BG_IMAGE = Pygame.bilde.Last ("BG_IMAGE_3.jpg ")
def bakgrunn ():
skjerm.Blit (BG_IMAGE, (-15, -25))
# personbilde
Person_x = 400
Person_y = 550
image_person = pygame.bilde.Last ("jente.png ")
def person (x, y):
skjerm.blit (image_person, (x, y))
importere tilfeldig
# fiendens image
fiende_x = tilfeldig.Randint (0, 750)
fiende_y = tilfeldig.Randint (0, 300)
image_enemy = pygame.bilde.belastning ("fiende.png ")
def fiende (x, y):
skjerm.blit (image_enemy, (x, y))
#Initialiser fiendens variabler
fiende_diff = 0.6
fiende_x = 0
#initialiser variabler
bøker_diff = 4
Books_y = 520
Books_x = 420
# bøker image
bøker_state = "ikke beveger seg"
Image_Books = Pygame.bilde.Last ("Bøker.png ")
def bøker (x, y):
Global Books_state
Books_state = "Moving"
skjerm.blit (image_books, (x + 15, y + 1))
# mainloop
Mens sant:
For arrangement i Pygame.begivenhet.få():
Hvis arrangementet.type == pygame.SLUTTE:
sys.exit()
# sjekk for tastene trykket
pressed_keys = pygame.nøkkel.get_pressed ()
# Hvis nøkkelen er presset er den høyre pilen,
# Gå deretter til høyre
Hvis PRESSED_KEYS [Pygame.K_right] og person_x < 750:
Person_x += 0.8
# Hvis nøkkelen som er presset er venstre pil,
# flytt deretter til venstre
Hvis PRESSED_KEYS [Pygame.K_left] og person_x> 0:
Person_x += -0.8
# Aktiver bakgrunnsfunksjonen
bakgrunn()
# Aktiver personfunksjonen
person (person_x, person_y)
# Flytt fienden
Enemy_x += Enemy_diff
Hvis fiende_x <= 0:
fiende_x = 0
fiende_diff = 0.6
Hvis fiende_x> = 730:
fiende_x = 730
Enemy_diff = -0.6
# bøker bevegelse
Hvis Books_y <= 0:
Books_y = 420
bøker_state = "ikke beveger seg"
Hvis Books_state er "beveger seg":
bøker_x = person_x
bøker (bøker_x, bøker_y)
bøker_y -= bøker_diff
# Brann hvis romknappen trykkes
Hvis PRESSED_KEYS [Pygame.K_space]:
bøker_x = person_x
bøker (bøker_x, bøker_y)
# Aktiver fienden
fiende (fiende_x, fiende_y)
# Oppdater alt
Pygame.vise.Oppdater()
klokke.Tick (60)
Denne koden vil skyte flere bøker etter hverandre når romnøkkelen trykkes.
Trinn 9: Kollisjonsdeteksjon
Neste trinn er å oppdage en kollisjon, og dette virker ganske greit. Du vil bruke pygame.Rekt (x, y, bredde, høyde) for å definere et rektangel. Bruk deretter Colliderect () -metoden for å oppdage kollisjon mellom to rektangler. Vi sier også at hvis den oppdager en kollisjon, øker vi poengsummen med 1, lokaliserer fienden på nytt og fjerner kulen ved å tilbakestille den.
# kollisjonsdeteksjon
Enemy_rect = Pygame.RECT (Enemy_x, Enemy_y, 64, 64)
Books_Rect = Pygame.RECT (Books_x, Books_y, 64, 64)
Hvis Books_rect.Collidectect (Enemy_rect):
fiende_x = tilfeldig.RandRange (0, 800)
fiende_y = tilfeldig.RandRange (0, 300)
poengsum += 1
bullet_state = "ikke beveger seg"
fiende (fiende_x, fiende_y)
bøker_y = 0
Trinn 10: Viser tekst
Utenfor mainloop, ville du skrevet:
poengsum = 0
#initialiser font
Pygame.Font.i det()
MyFont = Pygame.Font.Sysfont ('Comic Sans MS', 50)
def text_score (x, y):
text_score = myfont.Render ('poengsum:'+ str (score), true, (0, 0, 0))
skjerm.blit (tekst_score, (x, y))
Innenfor hovedsløyfen ville du skrevet:
# Aktiver tekstpoeng
tekst_score (6, 6)
Her må skrifter initialiseres, så initialiser den ved hjelp av pygame.Font.i det(). Så velger du font ved hjelp av pygame.Font.Sysfont () hvor du passerer skriften og størrelsen. Deretter, la oss definere en funksjon der vi bruker gjengivelsesmetoden for å gjengi den. Her, siden poengsummen er et heltall, bruker vi STR (poengsum). Og så plasserer vi dem på skjermen ved hjelp av Blit () -metoden.
På dette tidspunktet vil hele koden se slik ut:
Importer pygame
Importer Sys
# Initialiser
Pygame.i det()
# Initialiser klokken
klokke = pygame.tid.Klokke()
# Sett skjermgeometri
størrelse = bredde, høyde = 800, 600
skjerm = Pygame.vise.set_mode (størrelse)
# sett tittelen på vinduet
Pygame.vise.set_caption ("videospill")
# Angi ikonet
Bilde = Pygame.bilde.Last ("Ikon.png ")
Pygame.vise.set_icon (bilde)
# Lag bakgrunnsbildet
BG_IMAGE = Pygame.bilde.Last ("BG_IMAGE_3.jpg ")
def bakgrunn ():
skjerm.Blit (BG_IMAGE, (-15, -25))
# personbilde
Person_x = 400
Person_y = 550
image_person = pygame.bilde.Last ("jente.png ")
def person (x, y):
skjerm.blit (image_person, (x, y))
importere tilfeldig
# fiendens image
fiende_x = tilfeldig.Randint (0, 750)
fiende_y = tilfeldig.Randint (0, 300)
image_enemy = pygame.bilde.belastning ("fiende.png ")
def fiende (x, y):
skjerm.blit (image_enemy, (x, y))
#Initialiser fiendens variabler
fiende_diff = 0.6
fiende_x = 0
#initialiser variabler
bøker_diff = 4
Books_y = 520
Books_x = 420
# bøker image
bøker_state = "ikke beveger seg"
Image_Books = Pygame.bilde.Last ("Bøker.png ")
def bøker (x, y):
Global Books_state
Books_state = "Moving"
skjerm.blit (image_books, (x + 15, y + 1))
poengsum = 0
#initialiser font
Pygame.Font.i det()
MyFont = Pygame.Font.Sysfont ('Comic Sans MS', 50)
def text_score (x, y):
text_score = myfont.Render ('poengsum:'+ str (score), true, (0, 0, 0))
skjerm.blit (tekst_score, (x, y))
# mainloop
Mens sant:
For arrangement i Pygame.begivenhet.få():
Hvis arrangementet.type == pygame.SLUTTE:
sys.exit()
# sjekk for tastene trykket
pressed_keys = pygame.nøkkel.get_pressed ()
# Hvis nøkkelen er presset er den høyre pilen,
# Gå deretter til høyre
Hvis PRESSED_KEYS [Pygame.K_right] og person_x < 750:
Person_x += 0.8
# Hvis nøkkelen som er presset er venstre pil,
# flytt deretter til venstre
Hvis PRESSED_KEYS [Pygame.K_left] og person_x> 0:
Person_x += -0.8
# Aktiver bakgrunnsfunksjonen
bakgrunn()
# Aktiver personfunksjonen
person (person_x, person_y)
# Flytt fienden
Enemy_x += Enemy_diff
Hvis fiende_x <= 0:
fiende_x = 0
fiende_diff = 0.6
Hvis fiende_x> = 730:
fiende_x = 730
Enemy_diff = -0.6
# bøker bevegelse
Hvis Books_y <= 0:
Books_y = 420
bøker_state = "ikke beveger seg"
Hvis Books_state er "beveger seg":
bøker_x = person_x
bøker (bøker_x, bøker_y)
bøker_y -= bøker_diff
# Brann hvis romknappen trykkes
Hvis PRESSED_KEYS [Pygame.K_space]:
bøker_x = person_x
bøker (bøker_x, bøker_y)
# Aktiver fienden
fiende (fiende_x, fiende_y)
# kollisjonsdeteksjon
Enemy_rect = Pygame.RECT (Enemy_x, Enemy_y, 64, 64)
Books_Rect = Pygame.RECT (Books_x, Books_y, 64, 64)
Hvis Books_rect.Collidectect (Enemy_rect):
fiende_x = tilfeldig.RandRange (0, 800)
fiende_y = tilfeldig.RandRange (0, 300)
poengsum += 1
bullet_state = "ikke beveger seg"
fiende (fiende_x, fiende_y)
bøker_y = 0
# Aktiver tekstpoeng
tekst_score (6, 6)
# Oppdater alt
Pygame.vise.Oppdater()
klokke.Tick (60)
Trinn 11: Legge til lyder
Å legge til lyder er superduper enkelt!
Utenfor hovedsløyfen ville du skrevet:
# Initialiser lyder
Pygame.mikser.i det()
Pygame.mikser.musikk.Last ("Gun-cocking-01.WAV ")
Innenfor mainloop skal jeg aktivere lyden hvis det er en kollisjon! Her bruker vi Pygame.mikser.musikk.spille().
# kollisjonsdeteksjon
Enemy_rect = Pygame.RECT (Enemy_x, Enemy_y, 64, 64)
Books_Rect = Pygame.RECT (Books_x, Books_y, 64, 64)
Hvis Books_rect.Collidectect (Enemy_rect):
fiende_x = tilfeldig.RandRange (0, 800)
fiende_y = tilfeldig.RandRange (0, 300)
poengsum += 1
bullet_state = "ikke beveger seg"
fiende (fiende_x, fiende_y)
bøker_y = 0
Pygame.mikser.musikk.spille()
Trinn 12: Avslutter spillet
Jeg skal sette dette spillet til en seier hvis poengsummen er større enn 5. Så utenfor hovedløkken skriver vi følgende kode:
text_game_over = pygame.Font.Sysfont ('Comic Sans MS', 80)
# spill over funksjon
def game_over (x, y):
text_game_over_2 = myfont.Render ('You Won', True, (0, 0, 0))
skjerm.blit (text_game_over_2, (x, y))
Og innenfor hovedsløyfen ville du skrevet:
# Sjekk for Win
Hvis score> 5:
Game_over (400, 300)
Pygame.vise.Flip ()
tid.søvn (5)
gå i stykker
# Aktiver tekstpoeng
tekst_score (6, 6)
Timer (500, 6)
Dette betyr at hvis poengsummen er større enn 5, vil Game_Over () -funksjonen bli aktivert, skjermen vil bli oppdatert, og så sier vi, sove litt før du slutter.
Hele koden vil se slik ut:
Importer pygame
Importer Sys
Importer tid
# Initialiser
Pygame.i det()
# Initialiser klokken
klokke = pygame.tid.Klokke()
# Sett skjermgeometri
størrelse = bredde, høyde = 800, 600
skjerm = Pygame.vise.set_mode (størrelse)
# sett tittelen på vinduet
Pygame.vise.set_caption ("videospill")
# Angi ikonet
Bilde = Pygame.bilde.Last ("Ikon.png ")
Pygame.vise.set_icon (bilde)
# Lag bakgrunnsbildet
BG_IMAGE = Pygame.bilde.Last ("BG_IMAGE_3.jpg ")
def bakgrunn ():
skjerm.Blit (BG_IMAGE, (-15, -25))
# personbilde
Person_x = 400
Person_y = 550
image_person = pygame.bilde.Last ("jente.png ")
def person (x, y):
skjerm.blit (image_person, (x, y))
importere tilfeldig
# fiendens image
fiende_x = tilfeldig.Randint (0, 750)
fiende_y = tilfeldig.Randint (0, 300)
image_enemy = pygame.bilde.belastning ("fiende.png ")
def fiende (x, y):
skjerm.blit (image_enemy, (x, y))
#Initialiser fiendens variabler
fiende_diff = 0.6
fiende_x = 0
#initialiser variabler
bøker_diff = 4
Books_y = 520
Books_x = 420
# bøker image
bøker_state = "ikke beveger seg"
Image_Books = Pygame.bilde.Last ("Bøker.png ")
def bøker (x, y):
Global Books_state
Books_state = "Moving"
skjerm.blit (image_books, (x + 15, y + 1))
poengsum = 0
#initialiser font
Pygame.Font.i det()
MyFont = Pygame.Font.Sysfont ('Comic Sans MS', 50)
def text_score (x, y):
text_score = myfont.Render ('poengsum:'+ str (score), true, (0, 0, 0))
skjerm.blit (tekst_score, (x, y))
# Initialiser lyder
Pygame.mikser.i det()
Pygame.mikser.musikk.Last ("Gun-cocking-01.WAV ")
text_game_over = pygame.Font.Sysfont ('Comic Sans MS', 80)
# spill over funksjon
def game_over (x, y):
text_game_over_2 = myfont.Render ('You Won', True, (0, 0, 0))
skjerm.blit (text_game_over_2, (x, y))
Def Timer (x, y):
text_timer = myfont.Render ('Tid:'+ Str (Pygame.tid.get_ticks ()), true, (0, 0, 0))
skjerm.blit (text_timer, (x, y))
# mainloop
Mens sant:
For arrangement i Pygame.begivenhet.få():
Hvis arrangementet.type == pygame.SLUTTE:
sys.exit()
# sjekk for tastene trykket
pressed_keys = pygame.nøkkel.get_pressed ()
# Hvis nøkkelen er presset er den høyre pilen,
# Gå deretter til høyre
Hvis PRESSED_KEYS [Pygame.K_right] og person_x < 750:
Person_x += 0.8
# Hvis nøkkelen som er presset er venstre pil,
# flytt deretter til venstre
Hvis PRESSED_KEYS [Pygame.K_left] og person_x> 0:
Person_x += -0.8
# Aktiver bakgrunnsfunksjonen
bakgrunn()
# Aktiver personfunksjonen
person (person_x, person_y)
# Flytt fienden
Enemy_x += Enemy_diff
Hvis fiende_x <= 0:
fiende_x = 0
fiende_diff = 0.6
Hvis fiende_x> = 730:
fiende_x = 730
Enemy_diff = -0.6
# bøker bevegelse
Hvis Books_y <= 0:
Books_y = 420
bøker_state = "ikke beveger seg"
Hvis Books_state er "beveger seg":
bøker_x = person_x
bøker (bøker_x, bøker_y)
bøker_y -= bøker_diff
# Brann hvis romknappen trykkes
Hvis PRESSED_KEYS [Pygame.K_space]:
bøker_x = person_x
bøker (bøker_x, bøker_y)
# Aktiver fienden
fiende (fiende_x, fiende_y)
# kollisjonsdeteksjon
Enemy_rect = Pygame.RECT (Enemy_x, Enemy_y, 64, 64)
Books_Rect = Pygame.RECT (Books_x, Books_y, 64, 64)
Hvis Books_rect.Collidectect (Enemy_rect):
fiende_x = tilfeldig.RandRange (0, 800)
fiende_y = tilfeldig.RandRange (0, 300)
poengsum += 1
bullet_state = "ikke beveger seg"
fiende (fiende_x, fiende_y)
bøker_y = 0
Pygame.mikser.musikk.spille()
# Sjekk for Win
Hvis score> 5:
Game_over (400, 300)
Pygame.vise.Flip ()
tid.søvn (5)
gå i stykker
# Aktiver tekstpoeng
tekst_score (6, 6)
Timer (500, 6)
# Oppdater alt
Pygame.vise.Oppdater()
klokke.Tick (60)
Dette er selvfølgelig det enkleste av alle spillene du muligens kan lage! Imidlertid er det en start for de som vil lære pygame og designe bedre videospill.
Happy Gaming!