Python实现王思聪吃热狗

功能描述

本游戏要完成开始界面和游戏界面的实现和切换。实现热狗、王思聪和玩家飞机的碰撞检测检测。为消失的王思聪添加爆炸效果为消失的飞机添加爆炸效果。

首先得在网上找到王思聪图像和飞机、热狗、背景图,音效,首先要创建窗口和并插入背景图片,实现背景图像的无缝交替,判断是否飞机和王思聪是否移出屏幕,指定飞机和王思聪的初始位置、初始速度和初始血量,响应按键实现玩家飞机发射子弹,碰撞检测实现热狗消灭王思聪。

系统功能概况

(1)搭建Pygame开发环境;

(2)实现开始界面,设置游戏声音和背景;

(3)实现游戏界面;

(4)实现玩家飞机的显示和销毁,控制移动;

(5)实现王思聪的随机显示和销毁;

(6)实现热狗的显示和销毁、移动;

(7)实现界面的实时刷新;

(8)实现玩家分数记录;

(9)实现王思聪被击中后的爆炸效果;

(10)实现背景音乐。

开始界面

    首先创建一个开始界面类,在这个类中创建它的构造函数。实现开始界面图片集合,定义屏幕窗口大小:

screen=pygame.display.set_mode((480,750))

       实现背景图片:将加载到内存的图片绘制到屏幕指定的位置, 将背景图片绘制到屏幕,绘制就调用屏幕对象的blit方法,刷新屏幕显示,否则绘制的图片无法显示,添加文字显示游戏名称和制作人信息,实现开始按钮图片,判断鼠标是否在按钮范围,区域检测,如果玩家鼠标点击按钮,进入游戏界面,即调用游戏界面类的Show()方法,并让isPlay置位True。

 

创建游戏界面类,并实现其构造函数,当玩家鼠标点击开始界面中的开始游戏按钮,调用游戏界面

实现背景图片的无缝衔接:

self.rect1=self.rect1.move(0,self.speed)

self.rect2=self.rect2.move(0,self.speed)

if self.rect1.y>=720:

     self.rect1.y=self.rect2.y-768

  if self.rect2.y>=720:

      self.rect2.y=self.rect1.y-768

self.screen.blit(self.image1,self.rect1)

self.screen.blit(self.image2,self.rect2)

       设置字体并在屏幕左上角显示玩家分数和血量:

myFont=pygame.font.Font("font/Marker Felt.ttf",30)

创建玩家飞机

       创建玩家飞机类,并实现其构造函数,显示玩家飞机图片,指定玩家飞机初始位置为屏幕的下侧中间的位置、初始速度为1和初始血量为1,初始分数为1,当热狗击中王思聪时,分数加10。

    监听用户做的各种操作,响应按键实现玩家飞机移动:当玩家按下键盘上的a键,飞机向左移动;当玩家按下键盘上的d键,飞机向右移动;当玩家按下键盘上的w键,飞机向上移动;当玩家按下键盘上的s键,飞机向下移动:

if i.type==pygame.KEYDOWN:

       if i.key==pygame.K_a:

        Hero.left=True

       ......

       发射热狗,即调用热狗类的Show()方法。

       碰撞检测,当玩家飞机碰到王思聪时。销毁玩家飞机,返回开始界面。

创建王思聪

    创建王思聪类,并实现其构造函数,显示王思聪图片,使用随机函数random()指定王思聪随机位置和出现频率,并设置初始速度为1和初始血量为1,如图3-5所示:

图3-5 王思聪

       实现碰撞检测,当热狗击中王思聪时,让王思聪血量减一,即执行死亡动画,动画就是将多张静止的图片快速的播放,这里就涉及到帧数的问题,一般每秒60刷新60次就能制作高品质的动画。这里我将王思聪图像缓慢替换为死亡图片,并销毁王思聪和热狗:

self.screen.blit(self.imgs[self.deadIndex],self.rect)

self.deadAdd+=1

if self.deadAdd==30:

     self.deadIndex+=1

if self.deadIndex==len(self.imgs):

      sounds[0].play()

      heroObj.score+=10 # 加分

      if self in enemyList:

       enemyList.remove(self)

  self.deadAdd=0

如图所示:

 

创建热狗

       创建热狗类,并实现其构造函数,获取玩家飞机位置,在玩家飞机的上面出现,并向上移动,当热狗击中王思聪时,将王思聪图像缓慢替换为死亡图片,并销毁热狗:

if self.rect.y<=-20:

     if self in bulletList:

          bulletList.remove(self)

self.screen.blit(self.image,self.rect)

如图所示:

 

       最终效果如图3-7所示:

发布了2 篇原创文章 · 获赞 0 · 访问量 53

猜你喜欢

转载自blog.csdn.net/umyrumr/article/details/104484750
今日推荐