Python+Pygame实战之泡泡游戏的实现

目录

  • 导语
  • 一、环境安装
  • 二、代码展示
  • 三、效果展示

导语 泡泡王国 欢乐多多
咕噜噜,吹泡泡,七彩泡泡满天飘。大的好像彩气球,小的就像紫葡萄。
?当泡泡漫天飞舞时,大朋友、小朋友都会情不自禁地被它吸引。而当珍珠般的泡泡遇上可爱的程序员门时,又会出现什么样的美丽风景呢?
说到4399小游戏,没有人会陌生吧?我小时候经常趁着家长不在家的时候偷偷打开电脑打开小游戏的网页,在电脑桌前一坐就是一下午,真的不能赖我不适可而止,而是这些游戏真的太好
玩了!关于童年的经典游戏and有关泡泡的,之前已经仿写了一款童年《泡泡龙》游戏!
Pygame实战:风靡全球的经典泡泡龙小游戏来袭
今天续写另一个版本的泡泡故事叭

一、环境安装 1)素材(图片)
Python+Pygame实战之泡泡游戏的实现
文章图片

嘻嘻很久没写游戏了,先写个简单的大家润润喉~
2)运行环境
小编使用的环境:Python3、Pycharm社区版、Pygame 模块部分自带就不一一展示啦。
模块安装:pip install -i https://pypi.douban.com/simple/+模块名

二、代码展示
import pygame,random,osfrom pygame.locals import *from pygame.sprite import Sprite,Group,spritecollidedef 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 imageclass Surface:def __init__(self,screen):self.screen=screenself.screenrect=self.screen.get_rect()self.surfacetype=1self.image=load_image("surface"+str(self.surfacetype)+".png")self.rect=self.image.get_rect()self.rect.center=self.screenrect.centerself.speed=3.5self.moveUp=Falseself.moveDown=Falseself.moveLeft=Falseself.moveRight=Falsedef update(self):if self.moveUp and self.rect.top>0:self.rect.centery-=self.speedif self.moveDown and self.rect.bottom0:self.rect.centerx-=self.speedif self.moveRight and self.rect.right3:self.surfacetype=1self.image=load_image("surface"+str(self.surfacetype)+".png")class Trap(Sprite):def __init__(self,screen,traptyper):super(Trap,self).__init__()self.screen=screenself.screenrect=self.screen.get_rect()self.traptype=traptyperself.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.yspeedelif self.rectat=="left":self.xspeed=-self.xspeedself.rect.center=(0,random.randint(0,HEIGHT))elif self.rectat=="right":self.rect.center=(WIDTH,random.randint(0,HEIGHT))def update(self):global traptypeself.traptype=traptypeself.image=load_image("trap"+str(self.traptype)+".png")self.rect.centerx+=self.xspeedself.rect.centery+=self.yspeedif 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=1200HEIGHT=650traptype=1def initmain():global traptypetraptype=1pygame.init()screen=pygame.display.set_mode((WIDTH,HEIGHT))pygame.display.set_caption("泡泡王国")bgcolorlist=((0,255,255),(255,128,0),(128,0,255))colortype=0bgcolor=bgcolorlist[colortype]rates=0gamestart=Truefpstime=pygame.time.Clock()fps=100gameFont=pygame.font.SysFont("黑体",26,True)surface=Surface(screen)traps=Group()while gamestart:fpstime.tick(fps)screen.fill(bgcolor)surface.blit()rates+=1if rates%20==0:newtrap=Trap(screen,traptype)traps.add(newtrap)if rates%1000==0 and rates!=0:colortype+=1traptype+=1if colortype>2:colortype=0if traptype>3:traptype=1bgcolor=bgcolorlist[colortype]surface.addtype()if spritecollide(surface,traps,True):screen.fill(bgcolor)gamestart=Falsebreakscreen.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=Falseelif event.type==KEYDOWN:if event.key==K_RIGHT:surface.moveRight=Trueelif event.key==K_LEFT:surface.moveLeft=Trueelif event.key==K_UP:surface.moveUp=Trueelif event.key==K_DOWN:surface.moveDown=Trueelif event.key==K_SPACE:surface.speed=4.5elif event.type==KEYUP:if event.key==K_RIGHT:surface.moveRight=Falseelif event.key==K_LEFT:surface.moveLeft=Falseelif event.key==K_UP:surface.moveUp=Falseelif event.key==K_DOWN:surface.moveDown=Falseelif event.key==K_SPACE:surface.speed=3.5pygame.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()


三、效果展示 游戏规则:Enter开始游戏,ESC退出游戏,上下左右键按住泡泡移动。躲避随机出现的陨石
哦!躲避的时间越长,分数越高啦!勇士们开始你门的挑战叭!
1)随机截图一
Python+Pygame实战之泡泡游戏的实现
文章图片

2)随机截图二
Python+Pygame实战之泡泡游戏的实现
文章图片

3)撞击结束
Python+Pygame实战之泡泡游戏的实现
文章图片

【Python+Pygame实战之泡泡游戏的实现】以上就是Python+Pygame实战之泡泡游戏的实现的详细内容,更多关于Python Pygame泡泡游戏的资料请关注脚本之家其它相关文章!

    推荐阅读