Python+Pygame實(shí)戰(zhàn)之泡泡游戲的實(shí)現(xiàn)
導(dǎo)語
泡泡王國 歡樂多多
咕嚕嚕,吹泡泡,七彩泡泡滿天飄。大的好像彩氣球,小的就像紫葡萄。
?當(dāng)泡泡漫天飛舞時(shí),大朋友、小朋友都會(huì)情不自禁地被它吸引。而當(dāng)珍珠般的泡泡遇上可愛的程序員門時(shí),又會(huì)出現(xiàn)什么樣的美麗風(fēng)景呢?
說到4399小游戲,沒有人會(huì)陌生吧?我小時(shí)候經(jīng)常趁著家長不在家的時(shí)候偷偷打開電腦打開小游戲的網(wǎng)頁,在電腦桌前一坐就是一下午,真的不能賴我不適可而止,而是這些游戲真的太好
玩了!關(guān)于童年的經(jīng)典游戲and有關(guān)泡泡的,之前已經(jīng)仿寫了一款童年《泡泡龍》游戲!
Pygame實(shí)戰(zhàn):風(fēng)靡全球的經(jīng)典泡泡龍小游戲來襲
今天續(xù)寫另一個(gè)版本的泡泡故事叭
一、環(huán)境安裝
1)素材(圖片)
嘻嘻很久沒寫游戲了,先寫個(gè)簡單的大家潤潤喉~
2)運(yùn)行環(huán)境
小編使用的環(huán)境:Python3、Pycharm社區(qū)版、Pygame 模塊部分自帶就不一一展示啦。
模塊安裝:pip install -i https://pypi.douban.com/simple/+模塊名
二、代碼展示
import pygame,random,os from pygame.locals import * from pygame.sprite import Sprite,Group,spritecollide def load_image(name): fullname=os.path.join(os.path.join(os.path.split(os.path.abspath(__file__))[0],"filedata"),name) image=pygame.image.load(fullname) return image class Surface: def __init__(self,screen): self.screen=screen self.screenrect=self.screen.get_rect() self.surfacetype=1 self.image=load_image("surface"+str(self.surfacetype)+".png") self.rect=self.image.get_rect() self.rect.center=self.screenrect.center self.speed=3.5 self.moveUp=False self.moveDown=False self.moveLeft=False self.moveRight=False def update(self): if self.moveUp and self.rect.top>0: self.rect.centery-=self.speed if self.moveDown and self.rect.bottom<HEIGHT: self.rect.centery+=self.speed if self.moveLeft and self.rect.left>0: self.rect.centerx-=self.speed if self.moveRight and self.rect.right<WIDTH: self.rect.centerx+=self.speed def blit(self): self.screen.blit(self.image,self.rect) def addtype(self): self.surfacetype+=1 if self.surfacetype>3: self.surfacetype=1 self.image=load_image("surface"+str(self.surfacetype)+".png") class Trap(Sprite): def __init__(self,screen,traptyper): super(Trap,self).__init__() self.screen=screen self.screenrect=self.screen.get_rect() self.traptype=traptyper self.image=load_image("trap"+str(self.traptype)+".png") self.rect=self.image.get_rect() self.rectat=random.choice(["top","left","right","bottom"]) self.__updatespeed() def __updatespeed(self): self.xspeed=round(random.uniform(1,3),2) self.yspeed=round(random.uniform(1,3),2) if self.rectat=="top": self.rect.center=(random.randint(0,WIDTH),0) elif self.rectat=="bottom": self.rect.center=(random.randint(0,WIDTH),HEIGHT) self.yspeed=-self.yspeed elif self.rectat=="left": self.xspeed=-self.xspeed self.rect.center=(0,random.randint(0,HEIGHT)) elif self.rectat=="right": self.rect.center=(WIDTH,random.randint(0,HEIGHT)) def update(self): global traptype self.traptype=traptype self.image=load_image("trap"+str(self.traptype)+".png") self.rect.centerx+=self.xspeed self.rect.centery+=self.yspeed if self.rect.top>self.screenrect.height or self.rect.bottom<0: self.kill() elif self.rect.left>self.screenrect.width or self.rect.right<0: self.kill() WIDTH=1200 HEIGHT=650 traptype=1 def initmain(): global traptype traptype=1 pygame.init() screen=pygame.display.set_mode((WIDTH,HEIGHT)) pygame.display.set_caption("泡泡王國") bgcolorlist=((0,255,255),(255,128,0),(128,0,255)) colortype=0 bgcolor=bgcolorlist[colortype] rates=0 gamestart=True fpstime=pygame.time.Clock() fps=100 gameFont=pygame.font.SysFont("黑體",26,True) surface=Surface(screen) traps=Group() while gamestart: fpstime.tick(fps) screen.fill(bgcolor) surface.blit() rates+=1 if rates%20==0: newtrap=Trap(screen,traptype) traps.add(newtrap) if rates%1000==0 and rates!=0: colortype+=1 traptype+=1 if colortype>2: colortype=0 if traptype>3: traptype=1 bgcolor=bgcolorlist[colortype] surface.addtype() if spritecollide(surface,traps,True): screen.fill(bgcolor) gamestart=False break screen.blit(gameFont.render("Score: "+str(rates),True,(0,0,0)),(2,2)) surface.update() traps.update() traps.draw(screen) for event in pygame.event.get(): if event.type==QUIT: gamestart=False elif event.type==KEYDOWN: if event.key==K_RIGHT: surface.moveRight=True elif event.key==K_LEFT: surface.moveLeft=True elif event.key==K_UP: surface.moveUp=True elif event.key==K_DOWN: surface.moveDown=True elif event.key==K_SPACE: surface.speed=4.5 elif event.type==KEYUP: if event.key==K_RIGHT: surface.moveRight=False elif event.key==K_LEFT: surface.moveLeft=False elif event.key==K_UP: surface.moveUp=False elif event.key==K_DOWN: surface.moveDown=False elif event.key==K_SPACE: surface.speed=3.5 pygame.display.flip() screen.fill(bgcolor) screen.blit(gameFont.render("Score: "+str(rates//30),True,(0,0,0)),(2,2)) screen.blit(gameFont.render("Press enter to retry ; Press ESC to exit",True,(0,0,0)),(6,32)) screen.blit(gameFont.render("Rules:",True,(0,0,0)),(6,82)) screen.blit(gameFont.render("Press the arrow keys to control the bubbles to avoid touching the stinging ball and press the space bar to speed up.", True,(0,0,0)),(66,112)) pygame.display.flip() while True: for event in pygame.event.get(): if event.type==QUIT: pygame.quit() __import__("sys").exit() elif event.type==KEYDOWN: if event.key==K_RETURN: pygame.quit() initmain() elif event.key==K_ESCAPE: pygame.quit() __import__("sys").exit() if __name__=="__main__": initmain()
三、效果展示
游戲規(guī)則:Enter開始游戲,ESC退出游戲,上下左右鍵按住泡泡移動(dòng)。躲避隨機(jī)出現(xiàn)的隕石
哦!躲避的時(shí)間越長,分?jǐn)?shù)越高啦!勇士們開始你門的挑戰(zhàn)叭!
1)隨機(jī)截圖一
2)隨機(jī)截圖二
3)撞擊結(jié)束
以上就是Python+Pygame實(shí)戰(zhàn)之泡泡游戲的實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于Python Pygame泡泡游戲的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python采用socket模擬TCP通訊的實(shí)現(xiàn)方法
這篇文章主要介紹了Python采用socket模擬TCP通訊的實(shí)現(xiàn)方法,程序分為TCP的server端與client端兩部分,分別對這兩部分進(jìn)行了較為深入的分析,需要的朋友可以參考下2014-11-11Python實(shí)戰(zhàn)之實(shí)現(xiàn)獲取動(dòng)態(tài)圖表
這篇文章主要介紹了利用Python實(shí)現(xiàn)動(dòng)態(tài)化圖表,文中的示例代碼介紹詳細(xì),對我們的工作或?qū)W習(xí)有一定的價(jià)值,感興趣的同學(xué)可以學(xué)習(xí)一下2021-12-12攻擊者是如何將PHP Phar包偽裝成圖像以繞過文件類型檢測的(推薦)
這篇文章主要介紹了攻擊者是如何將PHP Phar包偽裝成圖像以繞過文件類型檢測的,需要的朋友可以參考下2018-10-10Python map及filter函數(shù)使用方法解析
這篇文章主要介紹了Python map及filter函數(shù)使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08python通過paramiko復(fù)制遠(yuǎn)程文件及文件目錄到本地
這篇文章主要為大家詳細(xì)介紹了python通過paramiko復(fù)制遠(yuǎn)程文件及文件目錄到本地,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04如何基于windows實(shí)現(xiàn)python定時(shí)爬蟲
這篇文章主要介紹了如何基于windows實(shí)現(xiàn)python定時(shí)爬蟲,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05