Jinsi ya kupanga Mchezo katika Python na Pygame (na Picha)

Orodha ya maudhui:

Jinsi ya kupanga Mchezo katika Python na Pygame (na Picha)
Jinsi ya kupanga Mchezo katika Python na Pygame (na Picha)

Video: Jinsi ya kupanga Mchezo katika Python na Pygame (na Picha)

Video: Jinsi ya kupanga Mchezo katika Python na Pygame (na Picha)
Video: How To Install Python, Setup Virtual Environment VENV, Set Default Python System Path & Install Git 2024, Mei
Anonim

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 ():

ProgramuPygamePart1
ProgramuPygamePart1

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

ProgramuPygamePart2
ProgramuPygamePart2

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 ()

ProgramuPygamePart3
ProgramuPygamePart3

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 ())

ProgramuPygamePart4
ProgramuPygamePart4

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:

ProgramuPygamePart5
ProgramuPygamePart5

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 ())

ProgramuPygamePart6
ProgramuPygamePart6

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

ProgramuPygameFinal
ProgramuPygameFinal

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 ()

Ilipendekeza: