Python+Pygame實戰(zhàn)之泡泡游戲的實現(xiàn)
導語
泡泡王國 歡樂多多
咕嚕嚕,吹泡泡,七彩泡泡滿天飄。大的好像彩氣球,小的就像紫葡萄。
?當泡泡漫天飛舞時,大朋友、小朋友都會情不自禁地被它吸引。而當珍珠般的泡泡遇上可愛的程序員門時,又會出現(xiàn)什么樣的美麗風景呢?
說到4399小游戲,沒有人會陌生吧?我小時候經(jīng)常趁著家長不在家的時候偷偷打開電腦打開小游戲的網(wǎng)頁,在電腦桌前一坐就是一下午,真的不能賴我不適可而止,而是這些游戲真的太好
玩了!關于童年的經(jīng)典游戲and有關泡泡的,之前已經(jīng)仿寫了一款童年《泡泡龍》游戲!
Pygame實戰(zhàn):風靡全球的經(jīng)典泡泡龍小游戲來襲
今天續(xù)寫另一個版本的泡泡故事叭
一、環(huán)境安裝
1)素材(圖片)

嘻嘻很久沒寫游戲了,先寫個簡單的大家潤潤喉~
2)運行環(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退出游戲,上下左右鍵按住泡泡移動。躲避隨機出現(xiàn)的隕石
哦!躲避的時間越長,分數(shù)越高啦!勇士們開始你門的挑戰(zhàn)叭!
1)隨機截圖一

2)隨機截圖二

3)撞擊結束

以上就是Python+Pygame實戰(zhàn)之泡泡游戲的實現(xiàn)的詳細內(nèi)容,更多關于Python Pygame泡泡游戲的資料請關注腳本之家其它相關文章!
相關文章
Python采用socket模擬TCP通訊的實現(xiàn)方法
這篇文章主要介紹了Python采用socket模擬TCP通訊的實現(xiàn)方法,程序分為TCP的server端與client端兩部分,分別對這兩部分進行了較為深入的分析,需要的朋友可以參考下2014-11-11
Python實戰(zhàn)之實現(xiàn)獲取動態(tài)圖表
這篇文章主要介紹了利用Python實現(xiàn)動態(tài)化圖表,文中的示例代碼介紹詳細,對我們的工作或?qū)W習有一定的價值,感興趣的同學可以學習一下2021-12-12
攻擊者是如何將PHP Phar包偽裝成圖像以繞過文件類型檢測的(推薦)
這篇文章主要介紹了攻擊者是如何將PHP Phar包偽裝成圖像以繞過文件類型檢測的,需要的朋友可以參考下2018-10-10
Python map及filter函數(shù)使用方法解析
這篇文章主要介紹了Python map及filter函數(shù)使用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08
python通過paramiko復制遠程文件及文件目錄到本地
這篇文章主要為大家詳細介紹了python通過paramiko復制遠程文件及文件目錄到本地,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04

