Nov yog kev qhia rau Pygame rau cov neeg uas twb paub Python lawm. Kab lus no yuav qhia koj cov kauj ruam los tsim kev ua si yooj yim uas muaj cov neeg ua si dodging bouncing pob.
Cov kauj ruam
Ntu 1 ntawm 8: Txhim Kho Pygame
Kauj Ruam 1. Rub tawm Pygame
Nrhiav nws rau koj lub platform los ntawm
Kauj ruam 2. Khiav lub installer
Kauj Ruam 3. Txheeb xyuas tias kev teeb tsa ua haujlwm
Qhib tus nab npawb dav hlau. Hom "ntshuam pygame." Yog tias koj tsis pom ib qho yuam kev ces Pygame tau ua tiav teeb tsa.
ntshuam pygame
Ntu 2 ntawm 8: Teem Ib Lub Qhov Rooj Yooj Yim
Kauj Ruam 1. Qhib ib daim ntawv tshiab
Kauj ruam 2. Ntshuam Pygame
Pygame yog lub tsev qiv ntawv uas muab kev nkag mus rau lub luag haujlwm duab. Yog tias koj xav tau cov ntaub ntawv ntau ntxiv txog kev ua haujlwm no li cas, koj tuaj yeem saib lawv ntawm Pygame lub vev xaib.
ntshuam pygame los ntawm pygame.locals ntshuam *
Kauj Ruam 3. Teeb lub qhov rooj daws teeb meem
Koj yuav ua qhov hloov pauv thoob ntiaj teb rau kev tshuaj ntsuam lub vijtsam kom thiaj tuaj yeem hais txog hauv ntau qhov ntawm qhov kev ua si. Nws kuj yog qhov yooj yim mus nrhiav tau rau saum cov ntawv yog li nws tuaj yeem hloov pauv tom qab. Rau cov phiaj xwm siab dua, tso cov ntaub ntawv no rau hauv cov ntawv cais yuav yog lub tswv yim zoo dua.
daws teeb meem = (400, 300)
Kauj Ruam 4. Txhais qee yam xim
Cov xim hauv pygame yog (RBGA uas muaj ntau qhov tseem ceeb ntawm 0 thiab 255. Tus nqi alpha (A) yog nyob ntawm yeem tab sis lwm yam xim (liab, xiav, thiab ntsuab yog yuav tsum tau ua).
dawb = (255, 255, 255) dub = (0, 0, 0) liab = (255, 0, 0)
Kauj Ruam 5. Pib lub vijtsam
Siv qhov kev daws teeb meem sib txawv uas tau hais ua ntej.
screen = pygame.display.set_mode (daws teeb meem)
Kauj Ruam 6. Ua game voj
Rov ua qee yam kev ua hauv txhua tus ncej ntawm peb qhov kev ua si. Ua lub voj uas yuav ib txwm rov ua dua los ntawm txhua qhov kev ua no.
thaum Muaj Tseeb:
Kauj Ruam 7. Xim lub vijtsam
screen.fill (dawb)
Kauj Ruam 8. Tso lub vijtsam
Yog tias koj ua qhov program, lub vijtsam yuav tig dawb thiab tom qab ntawd qhov program yuav sib tsoo. Qhov no vim tias lub kaw lus ua haujlwm tau xa cov xwm txheej mus rau qhov kev ua si thiab qhov kev ua si tsis ua dab tsi nrog lawv. Thaum qhov kev ua si tau txais ntau qhov xwm txheej tsis tau daws, nws yuav tsoo.
thaum Muaj Tseeb:… pygame.display.flip ()
Kauj Ruam 9. Tswj cov xwm txheej
Tau txais cov npe ntawm txhua qhov xwm txheej uas tau tshwm sim hauv txhua tus ncej. Koj tsuas yog saib xyuas txog ib qho xwm txheej, qhov tshwm sim txiav tawm. Qhov no tshwm sim thaum tus neeg siv kaw qhov game game. Qhov no tseem yuav tiv thaiv peb txoj haujlwm los ntawm kev sib tsoo vim muaj xwm txheej ntau dhau.
thaum muaj tseeb:… rau qhov tshwm sim hauv pygame.event.get (): yog event.type == QUIT: pygame.quit ()
Kauj ruam 10. Sim nws
Nov yog qhov chaws yuav tsum zoo li tam sim no:
ntshuam pygame los ntawm pygame.locals ntshuam * daws teeb meem = (400, 300) dawb = (255, 255, 255) dub = (0, 0, 0) liab = (255, 0, 0) screen = pygame.display.set_mode (daws teeb meem) thaum Tseeb: screen.fill (dawb) pygame.display.flip () rau qhov tshwm sim hauv pygame.event.get (): yog event.type == QUIT: pygame.quit ()
Ntu 3 ntawm 8: Ua Lub Hom Phiaj Ua Si
Kauj Ruam 1. Ua chav kawm tshiab thiab tsim kho
Teem tag nrho cov khoom ntawm cov khoom. Koj kuj tseem muab qhov txiaj ntsig tsis raug rau txhua lub peev txheej.
Class Ball: 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 = "pob"
Kauj Ruam 2. Txheeb xyuas seb yuav kos tus kwv
Siv cov peev txheej uas tau hais tseg hauv tus tsim los kos lub pob ua lub voj voog thiab ntxiv rau saum npoo mus rau hauv txoj haujlwm los kos cov khoom. Qhov saum npoo yuav yog lub vijtsam uas tau tsim los siv kev daws teeb meem ua ntej.
def kos (tus kheej, nto): pygame.draw.circle (nto, dub, (self.x, self.y), self.radius)
Kauj Ruam 3. Ua piv txwv ntawm chav kawm nrog rau qhia lub voj game los kos lub pob hauv txhua lub voj
pob = Pob () thaum Tseeb:… ball.draw (screen)
Kauj Ruam 4. Ua kom cov khoom txav mus
Tsim txoj haujlwm uas yuav hloov kho txoj haujlwm ntawm tus kwv. Hu txoj haujlwm no hauv txhua qhov game game loop.
Class Ball:… def hloov tshiab (self): self.x += self.dx self.y += self.dy
Kauj Ruam 5. Txwv tus nqi
Pob yuav txav mus nrawm heev vim tias lub voj kev ua si tau khiav ntau pua zaus thib ob. Siv Pygame lub moos kom txwv tus lej tus lej rau 60 fps.
moos = pygame.time. Clock () thaum Tseeb:… clock.tick (60)
Kauj Ruam 6. Khaws pob ntawm qhov screen
Ntxiv cov tshev hauv qhov hloov tshiab ua haujlwm kom thim rov qab lub pob yog tias nws tsoo ib qho ntawm cov npoo ntawm lub vijtsam.
Class Ball:… def update (self):… if (self.x <= 0 or self.x> = resolution [0]): self.dx *= -1 if (self.y <= 0 or self.y > = daws teeb meem [1]): self.dy *= -1
Kauj Ruam 7. Sim nws
Nov yog qhov chaws yuav tsum zoo li tam sim no:
ntshuam pygame los ntawm pygame.locals ntshuam * daws teeb meem = (400, 300) dawb = (255, 255, 255) dub = (0, 0, 0) liab = (255, 0, 0) screen = pygame.display.set_mode (daws teeb meem) chav kawm Ball: 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 = "ball" def draw (self, surface): pygame.draw.circle (nto, dub, (self.x, self.y), self.radius) def hloov tshiab (self): self.x += self.dx self.y += self.dy yog (self.x <= 0 lossis self.x> = daws teeb meem [0]): self.dx *= -1 yog (self.y <= 0 lossis self.y> = daws teeb meem [1]): self.dy *= -1 pob = Pob () moos = pygame.time. Clock () thaum Muaj tseeb: tshuaj ntsuam sau (dawb) ball.draw (screen) ball.update () pygame.display.flip () clock.tick (60) rau kev tshwm sim hauv pygame.event.get (): yog event.type == QUIT: pygame.quit ()
Ntu 4 ntawm 8: Npaj Kev Ua Si
Kauj Ruam 1. Siv chav kawm los npaj txhua yam
Qhov kev ua si yuav nyuaj dua. Siv cov txheej txheem tsom mus rau kev npaj koj cov cai.
Kauj Ruam 2. Ua qhov kev sib tw ua si hauv chav kawm
Txij li peb qhov kev ua si tam sim no muaj cov ntaub ntawv suav nrog koj cov khoom ua si thiab kev ua haujlwm, nws ua rau nkag siab tig koj lub voj kev ua si hauv chav kawm.
chav ua si ():
Kauj Ruam 3. Ntxiv tus neeg tsim khoom
Ntawm no koj yuav ua tiav qee yam khoom ua si, tsim peb lub vijtsam thiab moos thiab pib Pygame. Pygame yuav tsum tau pib ua kom siv qee yam zoo li ntawv lossis suab.
chav kawm game (): def _init _ (tus kheej): pygame.init () self.screen = pygame.display.set_mode (daws teeb meem) self.clock = pygame.time. Clock ()
Kauj Ruam 4. Tswj cov xwm txheej hauv ib txoj haujlwm
game game ():… def handleEvents (tus kheej): rau kev tshwm sim hauv pygame.event.get (): yog event.type == QUIT: pygame.quit ()
Kauj Ruam 5. Ua kom lub game game ua haujlwm
Hu rau qhov kev tshwm sim tuav haujlwm txhua lub voj.
chav kawm game ():… def khiav (tus kheej): thaum Tseeb: self.handleEvents () self.screen.fill (dawb) self.clock.tick (60) pygame.display.flip ()
Kauj Ruam 6. Kov ntau yam khoom ua si
Tam sim no txoj cai no yuav tsum hu kos thiab hloov tshiab ntawm peb cov khoom txhua tus ncej. Qhov no yuav ua rau tsis haum yog tias koj muaj ntau yam khoom. Cia peb ntxiv peb cov khoom mus rau ib qho array thiab tom qab ntawd hloov kho thiab kos txhua yam khoom hauv kab lus txhua lub voj. Tam sim no koj tuaj yeem yooj yim ntxiv lwm yam khoom thiab muab nws pib ua haujlwm sib txawv.
game game (): def _init _ (self):… self.gameObjects = self.gameObjects.append (Pob ()) self.gameObjects.append (Pob (100))… def khiav (tus kheej): thaum Muaj tseeb: nws tus kheej.handleEvents () rau gameObj hauv tus kheej.gameObjects: gameObj.update () self.screen.fill (dawb) rau gameObj hauv tus kheej.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip ()
Kauj Ruam 7. Sim nws
Nov yog qhov chaws yuav tsum zoo li tam sim no:
ntshuam pygame los ntawm pygame.locals ntshuam * daws teeb meem = (400, 300) dawb = (255, 255, 255) dub = (0, 0, 0) liab = (255, 0, 0) screen = pygame.display.set_mode (daws teeb meem) chav kawm Ball: 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 = "ball" def draw (self, surface): pygame.draw.circle (nto, dub, (self.x, self.y), self.radius) def hloov tshiab (self): self.x += self.dx self.y += self.dy yog (self.x <= 0 lossis self.x> = daws teeb meem [0]): self.dx *= -1 yog (self.y <= 0 lossis self.y> = daws teeb meem [1]): self.dy *= -1 chav kawm game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (daws teeb meem) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (Pob ()) self.gameObjects.append (Pob (100)) def handleEvents tus kheej): rau qhov tshwm sim hauv pygame.event.get (): yog event.type == QUIT: pygame.quit () def run (self): thaum Muaj tseeb: self.handleEvent s () rau gameObj hauv tus kheej.gameObjects: gameObj.update () self.screen.fill (dawb) rau gameObj hauv tus kheej.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display flip () game (). khiav ()
Ntu 5 ntawm 8: Ntxiv Tus Neeg Ua Haujlwm Lub Hom Phiaj
Kauj Ruam 1. Ua tus neeg ua si hauv chav kawm thiab tus tsim
Koj yuav mus ua lwm lub voj voog uas yog tswj los ntawm nas. Pib qhov tseem ceeb hauv tus tsim. Lub vojvoog tsuas yog tus nqi tseem ceeb.
class Player: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad
Kauj Ruam 2. Txheeb xyuas seb yuav kos tus neeg uas ua ntawv li cas
Nws yuav yog tib txoj kev uas koj kos lwm cov khoom ua si.
chav Player:… def kos (tus kheej, nto): pygame.draw.circle (nto, liab, (self.x, self.y), self.radius)
Kauj Ruam 3. Ntxiv nas tswj rau tus neeg uas ua ntawv
Hauv txhua kab ntawv, txheeb xyuas qhov chaw ntawm nas thiab teeb tsa cov neeg ua si 'cov khoom' qhov chaw nyob ntawd.
class Player:… def hloov tshiab (tus kheej): qaum = pygame.mouse.get_pos () self.x = qaum [0] self.y = qaum [1]
Kauj Ruam 4. Ntxiv tus neeg uas ua ntawv mus rau gameObjects
Tsim tus neeg uas ua ntawv tshiab piv txwv thiab ntxiv rau hauv daim ntawv teev npe.
chav kawm game (): def _init _ (self):… self.gameObjects.append (Player ())
Kauj Ruam 5. Sim nws
Nov yog qhov chaws yuav tsum zoo li tam sim no:
ntshuam pygame los ntawm pygame.locals ntshuam * daws teeb meem = (400, 300) dawb = (255, 255, 255) dub = (0, 0, 0) liab = (255, 0, 0) screen = pygame.display.set_mode (daws teeb meem) chav kawm Ball: 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 = "ball" def draw (self, surface): pygame.draw.circle (nto, dub, (self.x, self.y), self.radius) def hloov tshiab (self): self.x += self.dx self.y += self.dy yog (self.x <= 0 lossis self.x> = daws teeb meem [0]): self.dx *= -1 if (self.y <= 0 or self.y> = resolution [1]): self.dy *= -1 class Player: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "player" def kos (tus kheej, nto): pygame.draw.circle (nto, liab, (self.x, self.y), self.radius) def hloov tshiab (tus kheej): qaum = pygame.mouse.get_pos () self.x = qaum [0] self.y = qaum [1] chav kawm game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_ hom (daws teeb meem) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (Player ()) self.gameObjects.append (Pob ()) self.gameObjects.append (Pob (100))) def handleEvents (tus kheej): rau qhov tshwm sim hauv pygame.event.get (): yog event.type == QUIT: pygame.quit () def run (self): thaum Muaj tseeb: self.handleEvents () rau gameObj hauv nws tus kheej.gameObjects: gameObj.update () self.screen.fill (dawb) rau gameObj hauv tus kheej.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () game (). khiav ()
Ntu 6 ntawm 8: Ua Cov Hom Phiaj Sib Tham nrog Tus Neeg Ua Si
Kauj Ruam 1. Hloov cov haujlwm hloov tshiab
Txhawm rau kom cov khoom sib cuam tshuam, lawv yuav tsum muaj kev nkag tau mus rau ib leeg. Cia peb ntxiv lwm qhov ntsuas los hloov kho kom dhau mus hauv cov npe gameObjects. Koj yuav tau ntxiv nws rau ob qho tib si tus neeg uas ua ntawv thiab cov khoom Pob. Yog tias koj muaj ntau yam khoom ua si, qhov qub txeeg qub teg tuaj yeem pab koj khaws txhua txoj hauv kev kos npe rau tib yam.
Class Ball:… def hloov tshiab (tus kheej, gameObjects):… class Player:… def hloov tshiab (tus kheej, gameObjects):
Kauj Ruam 2. Txheeb xyuas qhov sib tsoo ntawm tus neeg ua si thiab pob
Mus dhau txhua qhov khoom ua si thiab xyuas seb yam khoom twg yog pob. Tom qab ntawd siv ob yam khoom 'radii thiab cov qauv ntsuas nrug los txheeb xyuas yog tias lawv sib tsoo. Cov voj voos yooj yim heev los txheeb xyuas kev sib tsoo. Qhov no yog qhov laj thawj loj tshaj plaws uas koj tsis tau siv qee qhov zoo rau qhov kev ua si no.
class Player:… def hloov tshiab (tus kheej, gameObjects):… rau gameObj hauv gameObjects: yog gameObj.type == “pob”: yog (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2:
Kauj Ruam 3. Xaus qhov kev ua si yog tias tus neeg ua si tau "ntaus"
Cia cia li tso qhov kev ua si rau tam sim no.
yog (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: pygame.quit ()
Kauj Ruam 4. Sim nws
Nov yog Dab tsi yuav tsum zoo li tam sim no:
ntshuam pygame los ntawm pygame.locals ntshuam * daws teeb meem = (400, 300) dawb = (255, 255, 255) dub = (0, 0, 0) liab = (255, 0, 0) screen = pygame.display.set_mode (daws teeb meem) chav kawm Ball: 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 = "ball" def draw (self, surface): pygame.draw.circle (nto, dub, (self.x, self.y), self.radius) def hloov tshiab (tus kheej, gameObjects): self.x += self.dx self.y += self.dy yog (self.x <= 0 lossis self.x> = daws teeb meem [0]): tus kheej.dx *= -1 yog (self.y <= 0 lossis self.y> = daws teeb meem [1]): self.dy *= -1 chav Player: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "player" def kos (tus kheej, nto): pygame.draw.circle (nto, liab, (self.x, self.y), self.radius) def hloov tshiab (tus kheej, gameObjects): qaum = pygame.mouse.get_pos () self.x = qaum [0] self.y = hlua [1] rau gameObj hauv gameObjects: yog gameObj.type == "pob": yog (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: pygame.quit () chav kawm game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (daws teeb meem) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (Player ()) self.gameObjects.append (Pob ()) self.gameObjects.append (Pob (100)) def handleEvents (tus kheej): rau kev tshwm sim hauv pygame.event.get (): yog event.type == QUIT: pygame.quit () def khiav (tus kheej): thaum Tseeb: self.handleEvents () rau gameObj hauv tus kheej.gameObjects: gameObj.update (self.gameObjects) self.screen.fill (dawb) rau gameObj hauv tus kheej.gameObjects: gameObj.draw () self.screen) self.clock.tick (60) pygame.display.flip () game (). run ()
Ntu 7 ntawm 8: Ntxiv Game Controller los Tsim Cov Hom Phiaj
Kauj Ruam 1. Tsim chav tswj hwm game
Cov tswj kev ua si yog lub luag haujlwm rau "khiav" qhov kev ua si. Nws txawv ntawm peb chav kawm game uas yog lub luag haujlwm kos duab thiab hloov kho txhua yam khoom peb. Tus tswj hwm yuav ntxiv ib lub pob ntxiv rau ntawm lub vijtsam kom ua qhov nyuaj. Ntxiv tus tsim thiab pib qee qhov tseem ceeb. Lub sijhawm yuav yog lub sijhawm ua ntej ntxiv pob ntxiv.
chav GameController: def _init _ (self, interval = 5): self.inter = interval self.next = pygame.time.get_ticks () + (2 * 1000) self.type = "game controller"
Kauj Ruam 2. Ntxiv qhov hloov tshiab muaj nuj nqi
Qhov no yuav txheeb xyuas lub sijhawm ntau npaum li cas txij li lub sijhawm tau ntxiv pob lossis txij thaum pib ntawm qhov kev ua si. Yog tias lub sijhawm ntau dua li lub sijhawm koj yuav rov pib lub sijhawm thiab ntxiv pob.
chav GameController:… def hloov tshiab (tus kheej, gameObjects): yog self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (Pob ()))
Kauj Ruam 3. Muab cov npas nrawm nrawm
Koj yuav tsum tau siv tus lej random los ua qhov sib txawv hauv txhua lub sijhawm. Txawm li cas los xij, cov pob nrawm nrawm tam sim no yog tus lej taw tes ntab tsis txhob siv tus lej.
chav GameController:… def hloov tshiab (tus kheej, gameObjects): yog self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (Pob (xVel = random ()*2, yVel = random ()*2))
Kauj Ruam 4. Txhim kho qhov kos
Cov duab kos yuav tsis lees txais ntab. Cia peb hloov lub pob txoj haujlwm mus rau cov lej ua ntej lub pob yuav kos.
Chav Kawm Pob:… def kos (tus kheej, nto): pygame.draw.circle (nto, dub, (int (self.x), int (self.y)), self.radius)
Kauj Ruam 5. Txhais txoj hauv kev kos rau tus tswj game
Txij li nws yog cov khoom ua si, lub ntsiab lus tseem ceeb yuav sim kos nws. Koj yuav tsum tau txhais lub luag haujlwm kos uas tsis muaj dab tsi yog li qhov kev ua si tsis tsoo.
chav GameController:… def kos (tus kheej, tshuaj ntsuam): dhau
Kauj Ruam 6. Ntxiv cov game game rau gameObjects thiab tshem 2 pob
Tam sim no qhov kev ua si yuav tsum muab pob txhua tsib feeb.
chav kawm game (): def _init _ (self):… self.gameObjects = self.gameObjects.append (GameController ()) self.gameObjects.append (Player ())
Kauj Ruam 7. Sim nws
Nov yog qhov chaws yuav tsum zoo li tam sim no:
ntshuam pygame los ntawm kev rho tawm tsis raug los ntawm pygame.locals ntshuam * daws teeb meem = (400, 300) dawb = (255, 255, 255) dub = (0, 0, 0) liab = (255, 0, 0) screen = pygame. display.set_mode (daws teeb meem) chav kawm Ball: 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 = "ball" def draw (self, surface): pygame.draw.circle (nto, dub, (int (tus kheej. x), int (self.y)), self.radius) def hloov tshiab (tus kheej, gameObjects): self.x += self.dx self.y += self.dy yog (self.x <= 0 lossis tus kheej. x> = daws teeb meem [0]): self.dx *= -1 yog (self.y <= 0 lossis self.y> = daws teeb meem [1]): self.dy *= -1 chav Player: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "player" def kos (tus kheej, nto): pygame.draw.circle (nto, liab, (self.x, self.y), self.radius) def hloov tshiab (tus kheej, gameObjects): qaum = pygame.mouse.get_pos () self.x = qaum [0] self.y = qaum [1] rau gameObj hauv game Cov hom phiaj: yog gameObj.type == "pob": yog (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius)* * 2: pygame.quit () chav GameController: def _init _ (self, interval = 5): self.inter = interval self.next = pygame.time.get_ticks () + (2 * 1000) self.type = "game controller "def hloov tshiab (tus kheej, gameObjects): yog self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (Pob (xVel = random) ()*2, yVel = random ()*2)) def kos (tus kheej, tshuaj ntsuam): dhau chav kawm game (): def _init _ (tus kheej): pygame.init () self.screen = pygame.display.set_mode (daws teeb meem) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (GameController ()) self.gameObjects.append (Player ()) def handleEvents (tus kheej): rau kev tshwm sim hauv pygame.event.get (): yog event.type == QUIT: pygame.quit () def khiav (tus kheej): thaum Tseeb: self.handleEvents () rau gameObj hauv tus kheej.gameObjects: gameObj.update (self.gameObjects) self.screen.fill (dawb) rau gameObj hauv tus kheej.gameO bjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () game (). run ()
Ntu 8 ntawm 8: Ntxiv Cov Qhab Nia thiab Game Over
Kauj Ruam 1. Ntxiv tus qhab nia rau chav tswj hwm game
Tsim cov khoom font thiab cov qhab nia sib txawv. Koj yuav kos tus ntawv hauv txhua kab ntawv los tso saib cov qhab nia thiab nce cov qhab nia txhua tus ncej hauv kev hloov tshiab.
chav GameController: def _init _ (self, interval = 5):… self.score = 0 self.scoreText = pygame.font. Font (Tsis muaj, 12) def hloov tshiab (tus kheej, gameObjects):… self.score += 1 def kos (tus kheej, tshuaj ntsuam): screen.blit (tus kheej.scoreText.render (str (tus kheej.score), Tseeb, dub), (5, 5))
Kauj Ruam 2. Hloov kho qhov kev ua si xaus
Cia peb tshem tawm qhov kev txiav tawm thaum tus neeg uas ua ntawv pom tias muaj kev sib tsoo. Hloov chaw koj yuav teeb tsa qhov sib txawv hauv cov neeg uas ua ntawv uas tuaj yeem tshawb xyuas. Thaum gameOver tau teeb tsa, tsum tsis txhob hloov kho cov khoom. Qhov no yuav khov txhua yam hauv qhov chaw kom cov neeg ua si tuaj yeem pom dab tsi tshwm sim thiab txheeb xyuas lawv cov qhab nia. Nco ntsoov tias cov khoom tseem tab tom kos, tsuas yog tsis hloov kho tshiab.
chav Player: def _init _ (tus kheej, rad = 20):… self.gameOver = hloov tshiab tsis tseeb (tus kheej, gameObjects):… rau gameObj hauv gameObjects: yog gameObj.type == “pob”: yog (gameObj.x - tus kheej.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: self.gameOver = Game class tseeb (): def _init _ (tus kheej):.: self.gameOver = gameObj.gameOver
Kauj Ruam 3. Sim nws
Nov yog qhov ua tiav cov cai yuav tsum zoo li tam sim no:
ntshuam pygame los ntawm kev rho tawm tsis raug los ntawm pygame.locals ntshuam * daws teeb meem = (400, 300) dawb = (255, 255, 255) dub = (0, 0, 0) liab = (255, 0, 0) screen = pygame. display.set_mode (daws teeb meem) chav kawm Ball: 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 = "ball" def draw (self, surface): pygame.draw.circle (nto, dub, (int (tus kheej. x), int (self.y)), self.radius) def hloov tshiab (tus kheej, gameObjects): self.x += self.dx self.y += self.dy yog (self.x <= 0 lossis tus kheej. x> = daws teeb meem [0]): self.dx *= -1 yog (self.y <= 0 lossis self.y> = daws teeb meem [1]): self.dy *= -1 chav Player: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "player" self.gameOver = kos tsis tseeb kos (tus kheej, nto): pygame.draw.circle (nto, liab, (self.x, self.y), self.radius) def hloov tshiab (tus kheej, gameObjects): qaum = pygame.mouse.get_pos () self.x = qaum [0] self.y = qaum [1] rau gameObj hauv gameObjects: yog gameObj.type == "pob": yog (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: self.gameOver = Chav kawm muaj tseeb GameController: def _init _ (tus kheej, ncua sijhawm = 5): self.inter = interval self.next = pygame.time.get_ticks () + (2*1000) tus kheej. type = "game controller" self.score = 0 self.scoreText = pygame.font. Font (Tsis muaj, 12) def hloov tshiab (tus kheej, gameObjects): yog self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (tus kheej.inter*1000) gameObjects.append (Pob (xVel = random ()*2), yVel = random ()*2)) self.score + = 1 def kos (tus kheej, tshuaj ntsuam): screen.blit (self.scoreText.render (str (tus kheej qhov qhab nia), Tseeb, dub), (5, 5)) chav kawm game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (daws teeb meem) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (GameController ()) self.gameObjects.append (Player ()) self.gameOver = Tsis tseeb def handleEvents (tus kheej): rau qhov tshwm sim hauv pygame.event.get (): yog tias ev ent.type == QUIT: pygame.quit () def khiav (tus kheej): thaum Tseeb: self.handleEvents () yog tias tsis yog self.gameOver: rau gameObj hauv tus kheej.gameObjects: gameObj.update (self.gameObjects) yog gameObj. type == "player": self.gameOver = gameObj.gameOver self.screen.fill (dawb) rau gameObj hauv tus kheej.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () game (). khiav ()