急速返航

急速返航

李兴球Python rocket

李兴球Python rocket

这是一个躲避类型游戏,让火箭安全返回地球! 下面是部分代码

"""
   急速返航.py
   这是一个躲避小游戏。
   太空火箭执行完任务后要返回地球。
   可是地球周围布满了太空垃圾,唉,都是人类自己造的孽啊。
   请按左右方向箭头,操作火箭避开垃圾,成功返航。
   本程序用到了爆炸函数,注意它有一个times参数,这是爆炸次数!
   本程序需要Python精灵模块v1.36版本支持。如果没有安装,请在cmd输入以下命令安装。   
   pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sprites  --upgrade
"""
from sprites import *                      # 从精灵模块导入所有命令
from pygame import mixer                   # 从pygame模块导入混音器

mixer.init()                               # 混音器初始化
deathsnd = mixer.Sound('res/DEATH.wav')    # 实例化死亡声效
mixer.music.load('res/未开始音乐.mp3')     # 加载音乐 
mixer.music.play(-1,0)                     # 循环播放音乐

lines = ['res/line1.png','res/line2.png','res/line3.png']

screen = Screen()                          # 生成屏幕对象
screen.setup(480,360)                      # 设置屏幕宽高
screen.title('急速返航_躲避游戏_李兴球博客')
screen.bgpic('res/星空.png')               # 设置屏幕背景图 

earth = Sprite('earth',pos=(0,380))         # 地球角色 
# endpic是最后要显示的图片
endpic = Sprite(['res/成功.png','res/失败.png'],
                visible=False,pos=(0,1000))

line = Sprite(lines,visible=False)          # 新建线条角色
dynamic_bgs = []
for _ in range(20):   
   b = line.clone()                         # 克隆一条背景线
   b.shapeindex(random.randint(0,2))        # 随机选择一个造型
   x = random.randint(-240,240)             # 生成x坐标
   y = random.randint(360,3600)             # 生成y坐标
   b.goto(x,y)                              # 到达这个x,y坐标
   dynamic_bgs.append(b)                    # 添加到列表中
   b.show()                                 # 显示
   
pics1 = ['rocket0.png','rocket1.png','rocket2.png']
rocket = Sprite(pics1,pos=(0,-130))

# 序幕阶段,火箭是不动的,背景自上而下移动
clock = Clock()                             # 新建时钟对象
for _ in range(600):                        # 重复200次
   rocket.nextshape()                       # 火箭下一个造型 
   for bg in dynamic_bgs:                   # 迭代背景表中的线条
       bg.addy(-50)                         # 线条往下移50个单位
       if bg.ycor() < -180:                 # 如果线条y坐标小于-180
          x = random.randint(-240,240)      # 生成一个x坐标
          y = random.randint(360,3600)      # 生成一个y坐标
          bg.goto(x,y)                      # 线条到这个坐标   
   screen.update()                          # 更新屏幕显示
   clock.tick(60)                           # 固定fps为60帧

[bg.remove() for bg in dynamic_bgs]         # 删除所有
mixer.music.stop()                          # 停止播放音乐
mixer.music.load('res/循环音乐.mp3')        # 加载音乐
mixer.music.play(-1,0)                      # 循环播放音乐

# 进入第二阶段,太空垃圾来了,需要按左右方向箭头操作它躲避
garbs = []
garbage = Sprite('garbage',visible=False,pos=(0,300))
for _ in range(30):
   g = garbage.clone()
   g.shapeindex(random.randint(0,2))
   x = random.randint(-240,240)
   y = random.randint(360,3600)   
   g.goto(x,y)
   garbs.append(g)
   g.show() 
counter = 0

leftkey = Key("Left")
rightkey = Key("Right")
screen.listen()
isdead = False                      # 描述是否碰到太空垃圾的变量
for _ in range(2000):
   rocket.nextshape()
   if leftkey.down():rocket.addx(-4)
   if rightkey.down():rocket.addx(4)
   if rocket.overlap_with(garbs):
       rocket.hide()
       isdead = True
       break
   for g in garbs:
       g.addy(-6)
       if g.ycor() < -180:
          g.goto(random.randint(-240,240),
                 random.randint(360,3600))
   screen.update()
   clock.tick(60)

# 第三阶段,根据火箭是否爆炸决定显示什么
mixer.music.stop()

pass                  # 这里的代码省略了....

screen.mainloop()

需要全部源代码和素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

李兴球

李兴球的博客是Python创意编程原创博客

评论已关闭。