Huu ni utangulizi wa Pygame kwa watu ambao tayari wanajua Python. Nakala hii itakufundisha hatua za kujenga mchezo rahisi ambao mchezaji anakwepa mipira ya kuruka.
Hatua
Sehemu ya 1 ya 8: Kufunga Pygame
Hatua ya 1. Pakua Pygame
Pata kwa jukwaa lako kutoka
Hatua ya 2. Endesha kisanidi
Hatua ya 3. Thibitisha kuwa usakinishaji ulifanya kazi
Fungua kituo cha chatu. Andika "kuagiza pygame." Ikiwa hauoni makosa yoyote basi Pygame ilifanikiwa kusanikishwa.
kuagiza pygame
Sehemu ya 2 ya 8: Kuweka Dirisha la Msingi
Hatua ya 1. Fungua faili mpya
Hatua ya 2. Leta Pygame
Pygame ni maktaba ambayo hutoa ufikiaji wa kazi za picha. Ikiwa unataka habari zaidi juu ya jinsi kazi hizi zinavyofanya kazi, unaweza kuziangalia kwenye wavuti ya Pygame.
kuagiza pygame kutoka pygame.locals kuagiza *
Hatua ya 3. Weka azimio la dirisha
Utafanya mabadiliko ya ulimwengu kwa azimio la skrini ili iweze kurejelewa katika sehemu kadhaa za mchezo. Pia ni rahisi kupata juu ya faili ili iweze kubadilishwa baadaye. Kwa miradi ya hali ya juu, kuweka habari hii katika faili tofauti itakuwa wazo bora.
azimio = (400, 300)
Hatua ya 4. Fafanua rangi zingine
Rangi katika pygame ni (RBGA ambayo ina viwango kati ya 0 na 255. Thamani ya alpha (A) ni ya hiari lakini rangi zingine (nyekundu, bluu na kijani ni lazima).
nyeupe = (255, 255, 255) nyeusi = (0, 0, 0) nyekundu = (255, 0, 0)
Hatua ya 5. Anzisha skrini
Tumia mabadiliko ya azimio ambayo yalifafanuliwa mapema.
skrini = pygame.display.set_mode (azimio)
Hatua ya 6. Tengeneza kitanzi cha mchezo
Rudia vitendo kadhaa katika kila fremu ya mchezo wetu. Tengeneza kitanzi ambacho kitarudia kuzunguka kwa vitendo hivi vyote.
wakati Kweli:
Hatua ya 7. Rangi skrini
skrini. kujaza (nyeupe)
Hatua ya 8. Onyesha skrini
Ikiwa utaendesha programu, skrini itageuka kuwa nyeupe na kisha programu itaanguka. Hii ni kwa sababu mfumo wa uendeshaji unatuma hafla kwenye mchezo na mchezo haufanyi chochote nao. Mara mchezo unapopokea hafla nyingi ambazo hazijashughulikiwa, utaanguka.
wakati Kweli:… pygame.display.flip ()
Hatua ya 9. Shughulikia matukio
Pata orodha ya matukio yote yaliyotokea katika kila fremu. Utajali tu tukio moja, tukio la kuacha. Hii hutokea wakati mtumiaji anafunga dirisha la mchezo. Hii pia itazuia programu yetu kuanguka kutokana na hafla nyingi.
wakati Kweli:… kwa tukio katika pygame.event.get ():
Hatua ya 10. Jaribu
Hapa ndivyo nambari inapaswa kuonekana kama sasa:
kuagiza pygame kutoka pygame.locals kuagiza * resolution = (400, 300) nyeupe = (255, 255, 255) nyeusi = (0, 0, 0) nyekundu = (255, 0, 0) screen = pygame.display.set_mode (azimio) wakati wa Kweli: screen.fill (nyeupe) pygame.display.flip () kwa hafla katika pygame.event.get (): ikiwa event.type == QUIT: pygame.quit ()
Sehemu ya 3 ya 8: Kufanya Kitu cha Mchezo
Hatua ya 1. Tengeneza darasa mpya na mjenzi
Weka mali yote ya kitu. Pia unatoa maadili chaguomsingi kwa mali zote.
Mpira wa darasa: def _init _ (self, xPos = resolution [0] / 2, yPos = resolution [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos binafsi.dx = xVel self.dy = yVel self.radius = rad self.type = "mpira"
Hatua ya 2. Eleza jinsi ya kuteka kitu
Tumia mali ambazo zilifafanuliwa kwa mjenzi kuteka mpira kama duara na vile vile kupitisha uso kwenye kazi ili kuteka kitu. Uso huo utakuwa kitu cha skrini ambacho kiliundwa kwa kutumia azimio hapo awali.
kuteka def (binafsi, uso): pygame.draw.circle (uso, nyeusi, (self.x, self.y), self.radius)
Hatua ya 3. Tengeneza mfano wa darasa na vile vile kuwaambia kitanzi cha mchezo kuteka mpira katika kila kitanzi
mpira = Mpira () wakati Ukweli:… mpira.draw (skrini)
Hatua ya 4. Fanya kitu kiende
Unda kazi ambayo itasasisha nafasi ya kitu. Piga kazi hii katika kila kitanzi cha mchezo.
Mpira wa darasa:… def update (self): self.x + = self.dx self.y + = self.dy
Hatua ya 5. Punguza kiwango cha fremu
Mpira utasonga haraka sana kwa sababu kitanzi cha mchezo kinaendesha mara mia kwa sekunde. Tumia saa ya Pygame kupunguza kiwango cha fremu hadi 60 fps.
saa = pygame.time. Clock () wakati ni Kweli:… clock.tick (60)
Hatua ya 6. Weka mpira kwenye skrini
Ongeza hundi katika kazi ya sasisho ili kugeuza mwelekeo wa mpira ikiwa unapiga moja ya kingo za skrini.
Mpira wa darasa:… def update (self):… if (self.x <= 0 or self.x> = resolution [0]): self.dx * = -1 if (self.y <= 0 or self.y > = azimio [1]): self.dy * = -1
Hatua ya 7. Jaribu
Hapa ndivyo nambari inapaswa kuonekana kama sasa:
kuagiza pygame kutoka pygame.locals kuagiza * resolution = (400, 300) nyeupe = (255, 255, 255) nyeusi = (0, 0, 0) nyekundu = (255, 0, 0) screen = pygame.display.set_mode (azimio) darasa la mpira: def _init _ (self, xPos = resolution [0] / 2, yPos = resolution [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 = "mpira" def draw (self, surface): pygame.draw.circle (uso, nyeusi, (self.x, self.y), self.radius) def update (self): self.x + = self.dx self.y + = self.dy ikiwa (self.x <= 0 au self.x> = resolution [0]): self.dx * = -1 ikiwa (self.y <= 0 au self.y> = resolution [1]): self.dy * = -1 mpira = Mpira () saa = pygame. time. Clock () wakati ni kweli: screen. jaza (nyeupe) mpira.draw (skrini) mpira.update () pygame.display.flip () saa.tick (60) kwa hafla katika pygame.event.get (): ikiwa event.type == QUIT: pygame.quit ()
Sehemu ya 4 ya 8: Kuandaa Mchezo
Hatua ya 1. Tumia madarasa kupanga kila kitu
Mchezo unakuwa ngumu zaidi. Tumia mbinu zinazoelekezwa na vitu kupanga nambari yako.
Hatua ya 2. Fanya kitanzi cha mchezo kuwa darasa
Kwa kuwa mchezo wetu sasa una data pamoja na vitu na mchezo wako wa mchezo, ni busara kugeuza kitanzi chako cha mchezo kuwa darasa.
mchezo wa darasa ():
Hatua ya 3. Ongeza mjenzi
Hapa utasisitiza vitu vya mchezo, tengeneza skrini yetu na saa na uanzishe Pygame. Pygame inahitaji kuanzishwa ili kutumia huduma kama maandishi au sauti.
mchezo wa darasa (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (resolution) self.clock = pygame.time. Clock ()
Hatua ya 4. Shughulikia hafla katika kazi
mchezo wa darasa ():
Hatua ya 5. Fanya kitanzi cha mchezo kuwa kazi
Piga kazi ya kushughulikia hafla kila kitanzi.
mchezo wa darasa ():… def run (self): wakati True: self.handleEvents () self.screen.fill (nyeupe) self.clock.tick (60) pygame.display.flip ()
Hatua ya 6. Shughulikia vitu vingi vya mchezo
Hivi sasa nambari hii inapaswa kupiga kuteka na kusasisha kwenye kitu chetu kila fremu. Hii ingekuwa mbaya ikiwa ungekuwa na vitu vingi. Wacha tuongeze kitu chetu kwa safu na kisha tusasishe na kuchora vitu vyote katika safu kila kitanzi. Sasa unaweza kuongeza kitu kingine kwa urahisi na ukipe nafasi tofauti ya kuanzia.
mchezo wa darasa (): def _init _ (self):… self.gameObjects = self.gameObjects.append (Ball ()) self.gameObjects.append (Ball (100))… def run (self): wakati True: self. HandleEvents () ya gameObj katika self.gameObjects: gameObj.update () self.screen.fill (nyeupe) kwa gameObj in self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display flip ()
Hatua ya 7. Jaribu
Hapa ndivyo nambari inapaswa kuonekana kama sasa:
kuagiza pygame kutoka pygame.locals kuagiza * resolution = (400, 300) nyeupe = (255, 255, 255) nyeusi = (0, 0, 0) nyekundu = (255, 0, 0) screen = pygame.display.set_mode (azimio) darasa la mpira: def _init _ (self, xPos = resolution [0] / 2, yPos = resolution [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 = "mpira" def draw (self, surface): pygame.draw.circle (uso, nyeusi, (self.x, self.y), self.radius) def update (self): self.x + = self.dx self.y + = self.dy ikiwa (self.x <= 0 au self.x> = resolution [0]): self.dx * = -1 ikiwa (self.y <= 0 au self.y> = resolution [1]): self.dy * = -1 mchezo wa darasa (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (resolution) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (Ball ()) self.gameObjects.append (Ball (100)) def handleEvents (ubinafsi): kwa tukio katika pygame.event.get (): ikiwa event.type == TOKA: pygame.quit () def run (self): wakati True: self.handleEvent s () kwa gameObj katika self.gameObjects: gameObj.update () self.screen.fill (nyeupe) kwa gameObj in self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display. flip () mchezo (). kukimbia ()
Sehemu ya 5 ya 8: Kuongeza Kitu cha Mchezaji
Hatua ya 1. Fanya darasa la wachezaji na mjenzi
Utafanya mduara mwingine ambao unadhibitiwa na panya. Anzisha maadili katika mjenzi. Radi ni thamani pekee muhimu.
Mchezaji wa darasa: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad
Hatua ya 2. Fafanua jinsi ya kuteka kitu cha kichezaji
Itakuwa njia ile ile uliyochora vitu vingine vya mchezo.
Mchezaji wa darasa:… def draw (self, surface): pygame.draw.circle (uso, nyekundu, (self.x, self.y), self.radius)
Hatua ya 3. Ongeza udhibiti wa panya kwa kitu cha kichezaji
Katika kila fremu, angalia eneo la panya na uweke eneo la vitu vya wachezaji kufikia hapo.
Mchezaji wa darasa:… def update (self): cord = pygame.mouse.get_pos () self.x = kamba [0] self.y = kamba [1]
Hatua ya 4. Ongeza kitu cha kichezaji kwenye Vitu vya mchezo
Unda mfano mpya wa kicheza na uiongeze kwenye orodha.
mchezo wa darasa (): def _init _ (self):… self.gameObjects.append (Player ())
Hatua ya 5. Jaribu
Hapa ndivyo nambari inapaswa kuonekana kama sasa:
kuagiza pygame kutoka pygame.locals kuagiza * resolution = (400, 300) nyeupe = (255, 255, 255) nyeusi = (0, 0, 0) nyekundu = (255, 0, 0) screen = pygame.display.set_mode (azimio) darasa la mpira: def _init _ (self, xPos = resolution [0] / 2, yPos = resolution [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 = "mpira" def draw (self, surface): pygame.draw.circle (uso, nyeusi, (self.x, self.y), self.radius) def update (self): self.x + = self.dx self.y + = self.dy ikiwa (self.x <= 0 au self.x> = resolution [0]): self.dx * = -1 ikiwa (self.y <= 0 au self.y> = resolution [1]): self.dy * = -1 darasa la Mchezaji: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "player" def draw (self, surface): pygame.draw.circle (uso, nyekundu, (self.x, self.y), self.radius) def update (kibinafsi): kamba = pygame.mouse.get_pos () self.x = kamba [0] self.y = kamba [1] mchezo wa darasa (): def _init _ (self): pygame.init () self.screen = pygame cheza.set_ mode (resolution) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (Player ()) self.gameObjects.append (Ball ()) self.gameObjects.append (Mpira (100))) def handleEvents (self): for event in pygame.event.get (): if event.type == QUIT: pygame.quit () def run (self): wakati True: self.handleEvents () ya gameObj kwa ubinafsi. GameObjects: gameObj.update () self.screen.fill (nyeupe) kwa gameObj in self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () mchezo (). kukimbia ()
Sehemu ya 6 ya 8: Kufanya Vitu Kuingiliana na Mchezaji
Hatua ya 1. Badilisha kazi za Mwisho
Ili vitu viingiliane, watahitaji kuwa na ufikiaji wa kila mmoja. Wacha tuongeze parameter nyingine kwa Sasisho kupitisha kwenye orodha ya Vitu vya mchezo. Itabidi uongeze kwa kitu cha mchezaji na vitu vya Mpira. Ikiwa una vitu vingi vya mchezo, urithi unaweza kukusaidia kuweka saini za njia zako sawa.
Mpira wa darasa:
Hatua ya 2. Angalia migongano kati ya mchezaji na mipira
Pitia vitu vyote vya mchezo na uangalie ikiwa aina ya vitu ni mpira. Kisha tumia mionzi ya vitu viwili na fomula ya umbali kuangalia ikiwa zinagongana. Miduara ni rahisi sana kuangalia kugongana. Hii ndio sababu kubwa kwamba haukutumia sura nyingine kwa mchezo huu.
Mchezaji wa darasa:… def update (self, gameObjects):… kwa gameObj katika gameObjects: ikiwa gameObj.type == "mpira": ikiwa (gameObj.x - self.x) ** 2 + (gameObj.y - self.y ** 2 <= (mchezoObj.radius + self.radius) ** 2:
Hatua ya 3. Maliza mchezo ikiwa mchezaji atapata "hit"
Wacha tu tuache mchezo kwa sasa.
ikiwa (mchezoObj.x - self.x) ** 2 + (mchezoObj.y - self.y) ** 2 <= (mchezoObj.radius + self.radius) ** 2: pygame.quit ()
Hatua ya 4. Jaribu
Hapa ndivyo nambari inapaswa kuonekana kama sasa:
kuagiza pygame kutoka pygame.locals kuagiza * resolution = (400, 300) nyeupe = (255, 255, 255) nyeusi = (0, 0, 0) nyekundu = (255, 0, 0) screen = pygame.display.set_mode (azimio) darasa la mpira: def _init _ (self, xPos = resolution [0] / 2, yPos = resolution [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 = "mpira" def draw (self, surface): pygame.draw.circle (uso, nyeusi, (self.x, self.y), self.radius) def update (self, gameObjects): self.x + = self.dx self.y + = self.dy ikiwa (self.x <= 0 au self.x> = resolution [0]): ubinafsi.dx * = -1 ikiwa (self.y <= 0 au self.y> = azimio [1]): self.dy * = -1 darasa la Mchezaji: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "mchezaji" def draw (self, surface): pygame.draw.circle (uso, nyekundu, (self.x, self.y), self.radius) sasisha def (self, gameObjects): cord = pygame.mouse.get_pos () self.x = kamba [0] self.y = kamba [1] ya gameObj katika gameObjects: ikiwa gameObj.type == "mpira": ikiwa (mchezoObj.x - self.x) ** 2 + (mchezoObj.y - self.y) ** 2 <= (mchezoObj.radius + self.radius) ** 2: pygame.quit () mchezo wa darasa (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (resolution) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (Mchezaji ()). () def run (self): wakati ni kweli: skrini ya kibinafsi) alama ya kibinafsi (60) pygame.display.flip () mchezo (). kukimbia ()
Sehemu ya 7 ya 8: Kuongeza Kidhibiti cha Mchezo Kuunda Vitu
Hatua ya 1. Unda darasa la mtawala wa mchezo
Watawala wa mchezo wanawajibika kwa "kuendesha" mchezo. Ni tofauti na darasa letu la mchezo ambalo linawajibika kwa kuchora na kusasisha vitu vyetu vyote. Kidhibiti mara kwa mara huongeza mpira mwingine kwenye skrini ili kufanya mchezo kuwa mgumu. Ongeza mjenzi na anzisha maadili kadhaa ya kimsingi. Muda utakuwa wakati kabla ya mpira mwingine kuongezwa.
darasa GameController: def _init _ (self, interval = 5): self.inter = interval self.next = pygame.time.get_ticks () + (2 * 1000) self.type = "mdhibiti wa mchezo"
Hatua ya 2. Ongeza kazi ya sasisho
Hii itaangalia ni muda gani umepita tangu wakati mpira uliongezwa au kutoka mwanzo wa mchezo. Ikiwa wakati ni zaidi ya muda utaweka tena wakati na kuongeza mpira.
darasa GameController:… def update (self, gameObjects): ikiwa self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (Mpira ())
Hatua ya 3. Wape mipira kasi ya nasibu
Utahitaji kutumia nambari za nasibu kufanya mchezo kuwa tofauti kila wakati. Walakini, kasi ya mipira sasa ni nambari ya kuelea badala ya nambari.
darasa GameController:… def update (self, gameObjects): ikiwa self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (Mpira (xVel = bila mpangilio () * 2, yVel = nasibu () * 2))
Hatua ya 4. Rekebisha kazi ya kuteka
Kazi ya kuteka haitakubali kuelea. Wacha tubadilishe msimamo wa mpira kuwa nambari kamili kabla ya mipira kutolewa.
Mpira wa darasa:… def draw (self, surface): pygame.draw.circle (uso, nyeusi, (int (self.x), int (self.y)), self.radius)
Hatua ya 5. Fafanua njia ya kuteka kwa mdhibiti wa mchezo
Kwa kuwa ni kitu cha mchezo, kitanzi kuu kitajaribu kuteka. Utahitaji kufafanua kazi ya kuteka ambayo haifanyi chochote ili mchezo usianguke.
Darasa la GameController:… def draw (self, screen): pass
Hatua ya 6. Ongeza mtawala wa mchezo kwenye Vitu vya mchezo na uondoe mipira 2
Mchezo sasa unapaswa kuzaa mpira kila sekunde tano.
mchezo wa darasa (): def _init _ (self):… self.gameObjects = self.gameObjects.append (GameController ()) self.gameObjects.append (Player ())
Hatua ya 7. Jaribu
Hapa ndivyo nambari inapaswa kuonekana kama sasa:
kuagiza pygame kutoka kwa random kuagiza bila mpangilio kutoka pygame.locals kuagiza * resolution = (400, 300) nyeupe = (255, 255, 255) nyeusi = (0, 0, 0) nyekundu = (255, 0, 0) screen = pygame. kuonyesha.set_mode (resolution) darasa la mpira: def _init _ (self, xPos = resolution [0] / 2, yPos = resolution [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 = "mpira" def draw (self, surface): pygame.draw.circle (uso, nyeusi, (int (self. x), int (self.y)), self.radius) def update (self, gameObjects): self.x + = self.dx self.y + = self.dy ikiwa (self.x <= 0 au self. x> = azimio [0]): self.dx * = -1 ikiwa (self.y <= 0 au self.y> = resolution [1]): self.dy * = -1 darasa Mchezaji: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "mchezaji" def draw (self, surface): pygame.draw.circle (uso, nyekundu, (self.x, self.y), self.radius) def update (self, gameObjects): cord = pygame.mouse.get_pos () self.x = kamba [0] self.y = kamba [1] ya mchezoObj katika mchezo Vitu: ikiwa gameObj.type == "mpira": ikiwa (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) * * 2: pygame.quit () darasa GameController: def _init _ (self, interval = 5): self.inter = interval self.next = pygame.time.get_ticks () + (2 * 1000) self.type = "mdhibiti wa mchezo "def update (self, gameObjects): ikiwa self.next <pygame. () * 2, yVel = bila mpangilio () * 2)) def draw (self, screen): pitisha mchezo wa darasa (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (resolution)] self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (GameController ()) self.gameObjects.append (Player ()) def handleEvents (self): kwa tukio katika pygame.event.get (): ikiwa event.type == QUIT: pygame.quit () def run (self): wakati True: self.handleEvents () ya gameObj in self.gameObjects: gameObj.update (self.gameObjects) self.screen.jaza (nyeupe) kwa mchezoObj katika self.gameO bjects: mchezoObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () mchezo (). run ()
Sehemu ya 8 ya 8: Kuongeza Bao na Mchezo Kumalizika
Hatua ya 1. Ongeza alama kwenye darasa la mtawala wa mchezo
Unda kitu cha fonti na alama tofauti. Utachora fonti katika kila fremu ili kuonyesha alama na kuongeza alama kila fremu katika sasisho.
darasa GameController: def _init _ (self, interval = 5):… self.score = 0 self.scoreText = pygame.font. Font (Hakuna, 12) def update (self, gameObjects):… self.score + = 1 def draw (kibinafsi, skrini): screen.blit (self.scoreText.render (str (self.score), Kweli, nyeusi), (5, 5))
Hatua ya 2. Badilisha jinsi mchezo unamalizika
Wacha tuachane na kuacha wakati mchezaji atagundua mgongano. Badala yake utaweka tofauti katika kichezaji ambacho mchezo unaweza kuangalia. Wakati GameOver imewekwa, acha kusasisha vitu. Hii itafungia kila kitu mahali ili mchezaji aone kilichotokea na angalia alama zao. Kumbuka kuwa vitu bado vinachorwa, sio tu vimesasishwa.
Mchezaji wa darasa: def _init _ (self, rad = 20):… self.gameOver = False def update (self, gameObjects):… kwa gameObj katika gameObjects: ikiwa gameObj.type == "ball": if (gameObj.x - self.x) ** 2 + (mchezoObj.y - self.y) ** 2 <= (mchezoObj.radius + self.radius) ** 2: self.gameOver = Mchezo wa kweli wa darasa (): def _init _ (self): ….: self.gameOver = mchezoObj.gameOver
Hatua ya 3. Jaribu
Hivi ndivyo nambari iliyomalizika inapaswa kuonekana sasa:
kuagiza pygame kutoka kwa random bila mpangilio kutoka kwa pygame.locals kuagiza * resolution = (400, 300) nyeupe = (255, 255, 255) nyeusi = (0, 0, 0) nyekundu = (255, 0, 0) screen = pygame. kuonyesha.set_mode (resolution) darasa la mpira: def _init _ (self, xPos = resolution [0] / 2, yPos = resolution [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 = "mpira" def draw (self, surface): pygame.draw.circle (uso, nyeusi, (int (self. x), int (self.y)), self.radius) def update (self, gameObjects): self.x + = self.dx self.y + = self.dy ikiwa (self.x <= 0 au self. x> = azimio [0]): self.dx * = -1 ikiwa (self.y <= 0 au self.y> = resolution [1]): self.dy * = -1 darasa la Mchezaji: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "player" self.gameOver = Uongo wa kuchora (uwongo, uso): pygame.draw.circle (uso, nyekundu, (self.x, self.y), self.radius) def update (self, gameObjects): kamba = pygame.mouse.get_pos () self.x = kamba [0] self.y = kamba [1] ya gameObj katika mchezoObjects: ikiwa gameObj.type == "mpira": ikiwa (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: self.gameOver = Darasa la kweli GameController: def _init _ (self, interval = 5): self.inter = interval self.next = pygame.time.get_ticks () + (2 * 1000) self. aina = "mdhibiti wa mchezo" self.score = 0 self.scoreText = pygame.font. Font (Hakuna, 12) def update (self, gameObjects): ikiwa 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 (ubinafsi, skrini screen.blit (self.scoreText.render (str (self.score), Kweli, nyeusi), (5, 5)) mchezo wa darasa (): def _init _ (self): pygame.init () self.screen = pygame.display. def handleEvents (self): kwa hafla katika pygame.event.get (): ikiwa ev ent. aina == "mchezaji": self.gameOver = gameObj.gameOver self.screen.fill (nyeupe) kwa gameObj katika self.gameObjects: () mchezo (). kukimbia ()