To je uvod v Pygame za ljudi, ki Python že poznajo. Ta članek vas bo naučil korakov za izdelavo preproste igre, v kateri se igralec izogiba odbijajočim žogam.
Koraki
1. del od 8: Namestitev programa Pygame
Korak 1. Prenesite Pygame
Poiščite ga za svojo platformo na naslovu
Korak 2. Zaženite namestitveni program
Korak 3. Preverite, ali je namestitev delovala
Odprite terminal Python. Vnesite "import pygame." Če ne vidite nobenih napak, je bil Pygame uspešno nameščen.
uvozi pygame
2. del od 8: Nastavitev osnovnega okna
Korak 1. Odprite novo datoteko
Korak 2. Uvozite Pygame
Pygame je knjižnica, ki omogoča dostop do grafičnih funkcij. Če želite več informacij o delovanju teh funkcij, jih lahko poiščete na spletnem mestu Pygame.
uvozi pygame iz pygame.locals uvoz *
Korak 3. Nastavite ločljivost okna
Za ločljivost zaslona boste ustvarili globalno spremenljivko, na katero se lahko sklicujete v več delih igre. Prav tako ga je enostavno najti na vrhu datoteke, zato ga lahko kasneje spremenite. Za napredne projekte bi bilo bolje dati te podatke v ločeno datoteko.
ločljivost = (400, 300)
Korak 4. Določite nekaj barv
Barve v pigamu so (RBGA, ki segajo v vrednosti med 0 in 255. Vrednost alfa (A) ni obvezna, druge barve (rdeča, modra in zelena pa so obvezne).
bela = (255, 255, 255) črna = (0, 0, 0) rdeča = (255, 0, 0)
Korak 5. Inicializirajte zaslon
Uporabite spremenljivko ločljivosti, ki je bila definirana prej.
screen = pygame.display.set_mode (ločljivost)
Korak 6. Naredite zanko igre
Ponovite določena dejanja v vsakem kadru naše igre. Naredite zanko, ki se bo vedno ponavljala skozi vsa ta dejanja.
medtem ko je res:
Korak 7. Pobarvajte zaslon
screen.fill (bela)
Korak 8. Prikažite zaslon
Če zaženete program, se zaslon obarva belo in program se bo zrušil. To je zato, ker operacijski sistem pošilja dogodke v igro in igra z njimi ne počne ničesar. Ko igra prejme preveč neobdelanih dogodkov, se bo zrušila.
medtem ko je True:… pygame.display.flip ()
Korak 9. Obravnavajte dogodke
Pridobite seznam vseh dogodkov, ki so se zgodili v vsakem okviru. Zanima vas le en dogodek, dogodek prenehanja. To se zgodi, ko uporabnik zapre okno igre. To bo tudi preprečilo zrušitev našega programa zaradi preveč dogodkov.
medtem ko True:… za dogodek v pygame.event.get (): if event.type == QUIT: pygame.quit ()
Korak 10. Preizkusite
Tako naj bi koda izgledala zdaj:
uvoz pygame iz pygame.locals uvoz * ločljivost = (400, 300) bela = (255, 255, 255) črna = (0, 0, 0) rdeča = (255, 0, 0) zaslon = pygame.display.set_mode (ločljivost), medtem ko je True: screen.fill (belo) pygame.display.flip () za dogodek v pygame.event.get (): if event.type == QUIT: pygame.quit ()
3. del od 8: Izdelava predmeta igre
Korak 1. Ustvarite nov razred in konstruktor
Nastavite vse lastnosti predmeta. Za vse lastnosti podajate tudi privzete vrednosti.
razred Ball: def _init _ (self, xPos = resolucija [0] / 2, yPos = resolucija [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball"
Korak 2. Določite, kako narisati predmet
Uporabite lastnosti, ki so bile določene v konstruktorju, da kroglico narišete kot krog, pa tudi, da površino vnesete v funkcijo, da narišete predmet. Površina bo objekt zaslona, ki je bil ustvarjen z uporabo ločljivosti prej.
def draw (self, surface): pygame.draw.circle (površina, črna, (self.x, self.y), self.radius)
Korak 3. Naredite primerek razreda in povejte igralni zanki, naj v vsaki zanki potegne žogo
ball = Ball () medtem ko je True:… ball.draw (zaslon)
Korak 4. Premaknite predmet
Ustvarite funkcijo, ki bo posodobila položaj predmeta. To funkcijo pokličite v vsaki zanki igre.
razred Ball:… def update (self): self.x += self.dx self.y += self.dy
Korak 5. Omejite hitrost sličic
Žoga se bo zelo hitro premikala, ker igralna zanka teče stotine krat na sekundo. Z uro Pygame omejite hitrost sličic na 60 sličic na sekundo.
ura = pygame.time. Clock () medtem ko je True:… clock.tick (60)
Korak 6. Držite žogo na zaslonu
Dodajte preverjanja v funkcijo posodobitve, da obrnete smer žoge, če zadene enega od robov zaslona.
razred Ball:… def posodobitev (self):… if (self.x <= 0 ali self.x> = resolucija [0]): self.dx *= -1 if (self.y <= 0 ali self.y > = ločljivost [1]): self.dy *= -1
Korak 7. Preizkusite
Tako naj bi koda izgledala zdaj:
uvoz pygame iz pygame.locals uvoz * ločljivost = (400, 300) bela = (255, 255, 255) črna = (0, 0, 0) rdeča = (255, 0, 0) zaslon = pygame.display.set_mode (ločljivost) razred Ball: def _init _ (self, xPos = resolucija [0] / 2, yPos = ločljivost [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw (self, surface): pygame.draw.circle (površina, črna, (self.x, self.y), self.radius) def update (self): self.x += self.dx self.y += self.dy if (self.x <= 0 ali self.x> = ločljivost [0]): self.dx *= -1 if (self.y <= 0 or self.y> = resolucija [1]): self.dy *= -1 ball = Ball () ura = pygame.time. Clock () while True: zaslon. fill (white) ball.draw (screen) ball.update () pygame.display.flip () clock.tick (60) za dogodek v pygame.event.get (): if event.type == QUIT: pygame.quit ()
4. del od 8: Organiziranje igre
Korak 1. Uporabite razrede, da vse organizirate
Igra se bo še bolj zapletla. Za ureditev kode uporabite objektno usmerjene tehnike.
Korak 2. Iz igre naredite zanko v razred
Ker naša igra zdaj vsebuje podatke, vključno z vašimi predmeti in funkcijami igre, je smiselno, da svojo zanko igre spremenite v razred.
razredna igra ():
Korak 3. Dodajte konstruktor
Tukaj boste ustvarili nekaj igralnih predmetov, ustvarili naš zaslon in uro ter inicializirali Pygame. Pygame je treba inicializirati za uporabo nekaterih funkcij, kot sta besedilo ali zvok.
class game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (ločljivost) self.clock = pygame.time. Clock ()
Korak 4. Upravljanje dogodkov v funkciji
class game ():… def handleEvents (self): za dogodek v pygame.event.get (): if event.type == QUIT: pygame.quit ()
Korak 5. Naj bo zanka igre funkcija
Vsako zanko pokličite funkcijo upravljanja dogodkov.
class game ():… def run (self): while True: self.handleEvents () self.screen.fill (bela) self.clock.tick (60) pygame.display.flip ()
Korak 6. Ravnajte z več predmeti igre
Ta koda mora zdaj za vsak okvir poklicati risanje in posodobitev našega predmeta. Če bi imeli veliko predmetov, bi to postalo neredno. Dodajmo naš predmet v matriko, nato pa v vsaki zanki posodobimo in narišimo vse predmete v matriki. Zdaj lahko preprosto dodate drug predmet in mu daste drugačen začetni položaj.
class game (): def _init _ (self):… self.gameObjects = self.gameObjects.append (Ball ()) self.gameObjects.append (Ball (100))… def run (self): while True: self.handleEvents () za gameObj v self.gameObjects: gameObj.update () self.screen.fill (belo) za gameObj v self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip ()
Korak 7. Preizkusite
Tako naj bi koda izgledala zdaj:
uvoz pygame iz pygame.locals uvoz * ločljivost = (400, 300) bela = (255, 255, 255) črna = (0, 0, 0) rdeča = (255, 0, 0) zaslon = pygame.display.set_mode (ločljivost) razred Ball: def _init _ (self, xPos = resolucija [0] / 2, yPos = resolucija [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw (self, surface): pygame.draw.circle (površina, črna, (self.x, self.y), self.radius) def update (self): self.x += self.dx self.y += self.dy if (self.x <= 0 ali self.x> = ločljivost [0]): self.dx *= -1 if (self.y <= 0 or self.y> = resolution [1]): self.dy *= -1 class game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (ločljivost) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (Ball ()) self.gameObjects.append (Ball (100)) def handleEvents (self): za dogodek v pygame.event.get (): if event.type == QUIT: pygame.quit () def run (self): while True: self.handleEvent s () za gameObj v self.gameObjects: gameObj.update () self.screen.fill (belo) za gameObj v self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display. flip () game (). run ()
5. del od 8: Dodajanje predmeta igralca
Korak 1. Naredite razred igralca in konstruktor
Naredili boste še en krog, ki ga nadzira miška. Inicializirajte vrednosti v konstruktorju. Polmer je edina pomembna vrednost.
razred Player: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad
Korak 2. Določite, kako narisati predmet predvajalnika
Podobno bo, kot ste narisali druge predmete igre.
razred Player:… def draw (self, surface): pygame.draw.circle (surface, red, (self.x, self.y), self.radius)
Korak 3. Dodajte nadzorni gumb miške za predmet predvajalnika
V vsakem kadru preverite lokacijo miške in nastavite lokacijo predmetov igralcev na to točko.
razred Player:… def update (self): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1]
Korak 4. Dodajte predmet predvajalnika v gameObjects
Ustvarite nov primerek predvajalnika in ga dodajte na seznam.
class game (): def _init _ (self):… self.gameObjects.append (Player ())
Korak 5. Preizkusite
Tako naj bi koda izgledala zdaj:
uvoz pygame iz pygame.locals uvoz * ločljivost = (400, 300) bela = (255, 255, 255) črna = (0, 0, 0) rdeča = (255, 0, 0) zaslon = pygame.display.set_mode (ločljivost) razred Ball: def _init _ (self, xPos = resolucija [0] / 2, yPos = resolucija [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw (self, surface): pygame.draw.circle (površina, črna, (self.x, self.y), self.radius) def update (self): self.x += self.dx self.y += self.dy if (self.x <= 0 ali self.x> = ločljivost [0]): self.dx *= -1 if (self.y <= 0 ali self.y> = resolucija [1]): self.dy *= -1 razred Igralec: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "player" def draw (self, surface): pygame.draw.circle (surface, red, (self.x, self.y), self.radius) def update (self): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1] class game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_ način (ločljivost) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (Player ()) self.gameObjects.append (Ball ()) self.gameObjects.append (Ball (100)) def handleEvents (self): za dogodek v pygame.event.get (): if event.type == QUIT: pygame.quit () def run (self): while True: self.handleEvents () za gameObj v sebi.gameObjects: gameObj.update () self.screen.fill (belo) za gameObj v self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () game (). run ()
6. del od 8: Ustvarjanje predmetov v interakciji s predvajalnikom
Korak 1. Spremenite funkcije posodobitve
Da bi lahko predmeti medsebojno delovali, morajo imeti dostop do drugega. Posodobitvi dodamo še en parameter, ki bo prešel na seznam gameObjects. Dodati ga boste morali predmetu predvajalnika in predmetu žogica. Če imate veliko predmetov iger, bi vam lahko z dedovanjem pomagali ohraniti vse podpise metod enake.
class Ball:… def update (self, gameObjects):… class player:… def update (self, gameObjects):
Korak 2. Preverite trke med igralcem in žogicami
Pojdite skozi vse predmete igre in preverite, ali je vrsta predmetov žoga. Nato s polmeri obeh predmetov in formulo razdalje preverite, ali se trčita. Kroge je res enostavno preveriti. To je največji razlog, da za to igro niste uporabili druge oblike.
class Player:… def update (self, gameObjects):… for gameObj v gameObjects: if gameObj.type == "ball": if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2:
Korak 3. Končajte igro, če igralec dobi "zadetek"
Zaenkrat pustimo igro.
if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: pygame.quit ()
Korak 4. Preizkusite
Takole bi morala izgledati koda:
uvoz pygame iz pygame.locals uvoz * ločljivost = (400, 300) bela = (255, 255, 255) črna = (0, 0, 0) rdeča = (255, 0, 0) zaslon = pygame.display.set_mode (ločljivost) razred Ball: def _init _ (self, xPos = resolucija [0] / 2, yPos = resolucija [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw (self, surface): pygame.draw.circle (površina, črna, (self.x, self.y), self.radius) def posodobitev (self, gameObjects): self.x += self.dx self.y += self.dy if (self.x <= 0 ali self.x> = resolucija [0]): self.dx *= -1 if (self.y <= 0 ali self.y> = resolucija [1]): self.dy *= -1 razred Igralec: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "player" def draw (self, surface): pygame.draw.circle (površina, rdeča, (self.x, self.y), self.radius) def posodobitev (self, gameObjects): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1] za gameObj v gameObjects: če je gameObj.type == "žoga": if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: pygame.quit () razred igra (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (ločljivost) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (Player ()) self.gameObjects.append (Ball ()) self.gameObjects.append (Ball (100)) def handleEvents (self): za dogodek v pygame.event.get (): if event.type == QUIT: pygame.quit () def run (self): while True: self.handleEvents () za gameObj v self.gameObjects: gameObj.update (self.gameObjects) self.screen.fill (belo) za gameObj v self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () game (). run ()
7. del od 8: Dodajanje krmilnika iger za ustvarjanje predmetov
Korak 1. Ustvarite razred krmilnika iger
Krmilniki iger so odgovorni za "vodenje" igre. Razlikuje se od našega razreda iger, ki je odgovoren za risanje in posodabljanje vseh naših predmetov. Krmilnik bo občasno dodal še eno žogo na zaslon, da bo igra otežena. Dodajte konstruktor in inicializirajte nekaj osnovnih vrednosti. Interval bo čas, preden se doda druga žoga.
razred GameController: def _init _ (self, interval = 5): self.inter = interval self.next = pygame.time.get_ticks () + (2 * 1000) self.type = "krmilnik igre"
Korak 2. Dodajte funkcijo posodobitve
S tem se preveri, koliko časa je minilo od trenutka, ko je bila žogica dodana, ali od začetka igre. Če je čas večji od intervala, ga ponastavite in dodate žogo.
razred GameController:… def posodobitev (self, gameObjects): če self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (Ball ())
Korak 3. Dajte kroglicam naključne hitrosti
Če želite igro vsakič narediti drugačno, boste morali uporabiti naključne številke. Hitrosti kroglic pa so zdaj število s plavajočo vejico namesto celo število.
razred GameController:… def posodobitev (self, gameObjects): če self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (Ball (xVel = naključno ()*2, yVel = naključno ()*2))
Korak 4. Odpravite funkcijo žrebanja
Funkcija risanja ne sprejema plavajočih. Pretvorimo položaj žoge v cela števila, preden se žogice izvlečejo.
razred Ball:… def draw (self, surface): pygame.draw.circle (površina, črna, (int (self.x), int (self.y)), self.radius)
Korak 5. Določite način žrebanja za krmilnik igre
Ker gre za predmet igre, ga bo glavna zanka poskušala narisati. Določiti morate funkcijo žrebanja, ki ne naredi ničesar, da se igra ne zruši.
razred GameController:… def draw (self, screen): pass
Korak 6. Dodajte igralni krmilnik v gameObjects in odstranite 2 kroglici
Igra bi morala zdaj sprostiti žogo vsakih pet sekund.
class game (): def _init _ (self):… self.gameObjects = self.gameObjects.append (GameController ()) self.gameObjects.append (Player ())
Korak 7. Preizkusite
Tako naj bi koda izgledala zdaj:
uvoz pigame iz naključnega uvoza naključno iz pygame.locals uvoz * ločljivost = (400, 300) bela = (255, 255, 255) črna = (0, 0, 0) rdeča = (255, 0, 0) zaslon = pygame. display.set_mode (ločljivost) razred Ball: def _init _ (self, xPos = resolucija [0] / 2, yPos = resolucija [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw (self, surface): pygame.draw.circle (površina, črna, (int (self) x), int (self.y)), self.radius) def posodobitev (self, gameObjects): self.x += self.dx self.y += self.dy if (self.x <= 0 ali self. x> = resolucija [0]): self.dx *= -1 if (self.y <= 0 ali self.y> = ločljivost [1]): self.dy *= -1 razred Igralec: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "player" def draw draw (self, surface): pygame.draw.circle (površina, rdeča, (self.x, self.y), self.radius) def posodobitev (self, gameObjects): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1] za gameObj v igri Predmeti: if gameObj.type == "ball": if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius)* * 2: pygame.quit () razred GameController: def _init _ (self, interval = 5): self.inter = interval self.next = pygame.time.get_ticks () + (2 * 1000) self.type = "krmilnik igre "def update (self, gameObjects): if self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (Ball (xVel = naključno ()*2, yVel = random ()*2)) def draw (self, screen): pass class game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (resolucija) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (GameController ()) self.gameObjects.append (Player ()) def handleEvents (self): za dogodek v pygame.event.get (): if event.type == QUIT: pygame.quit () def run (self): while True: self.handleEvents () za gameObj v self.gameObjects: gameObj.update (self.gameObjects) self.screen.polnite (belo) za gameObj v self.gameO bjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () game (). run ()
8. del od 8: Dodajanje rezultata in končana tekma
Korak 1. Dodajte rezultat razredu igralnih krmilnikov
Ustvarite predmet pisave in spremenljivko ocene. Pisavo boste narisali v vsak okvir, da prikažete rezultat in povečate rezultat v vsakem okviru v posodobitvi.
razred GameController: def _init _ (self, interval = 5):… self.score = 0 self.scoreText = pygame.font. Font (Brez, 12) def update (self, gameObjects):… self.score += 1 def draw (self, screen): screen.blit (self.scoreText.render (str (self.score), True, črno), (5, 5))
Korak 2. Spremenite, kako se igra konča
Znebimo se odpovedi, ko igralec zazna trk. Namesto tega boste v predvajalniku nastavili spremenljivko, ki jo lahko igra preveri. Ko je nastavljen gameOver, ustavite posodabljanje predmetov. To bo zamrznilo vse na mestu, tako da bo lahko igralec videl, kaj se je zgodilo, in preveril svoj rezultat. Upoštevajte, da se predmeti še vedno rišejo, samo ne posodabljajo.
class Player: def _init _ (self, rad = 20):… self.gameOver = False def update (self, gameObjects):… za gameObj v gameObjects: if gameObj.type == "ball": if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: self.gameOver = True class game (): def _init _ (self): … Self.gameOver = False def run (self): while True: self.handleEvents () če ne self.gameOver: za gameObj v self.gameObjects: gameObj.update (self.gameObjects), če gameObj.type == "player": self.gameOver = gameObj.gameOver
Korak 3. Preizkusite
Takole bi morala izgledati končana koda:
uvoz pigame iz naključnega uvoza naključno iz pygame.locals uvoz * ločljivost = (400, 300) bela = (255, 255, 255) črna = (0, 0, 0) rdeča = (255, 0, 0) zaslon = pygame. display.set_mode (ločljivost) razred Ball: def _init _ (self, xPos = resolucija [0] / 2, yPos = resolucija [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw (self, surface): pygame.draw.circle (površina, črna, (int (self) x), int (self.y)), self.radius) def posodobitev (self, gameObjects): self.x += self.dx self.y += self.dy if (self.x <= 0 ali self. x> = resolucija [0]): self.dx *= -1 if (self.y <= 0 ali self.y> = ločljivost [1]): self.dy *= -1 razred Igralec: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "player" self.gameOver = False def draw (self, surface): pygame.draw.circle (površina, rdeča, (self.x, self.y), self.radius) posodobitev def (self, gameObjects): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1] za gameObj v gameObjects: if gameObj.type == "ball": if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: self.gameOver = Pravi razred GameController: def _init _ (self, interval = 5): self.inter = interval self.next = pygame.time.get_ticks () + (2*1000) self. type = "krmilnik igre" self.score = 0 self.scoreText = pygame.font. Font (Brez, 12) def update (self, gameObjects): če self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter*1000) gameObjects.append (Ball (xVel = random ()*2, yVel = random ()*2)) self.score + = 1 def draw (self, screen): screen.blit (self.scoreText.render (str (self.score), True, black), (5, 5)) class game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (ločljivost) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (GameController ()) self.gameObjects.append (Player ()) self.gameOver = False def handleEvents (self): za dogodek v pygame.event.get (): če ev ent.type == QUIT: pygame.quit () def run (self): while True: self.handleEvents () če ne self.gameOver: za gameObj v self.gameObjects: gameObj.update (self.gameObjects) if gameObj. vnesite == "player": self.gameOver = gameObj.gameOver self.screen.fill (belo) za gameObj v self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () game (). run ()