Python精灵模块小猫射击飞碟.py

0 Comments

Python精灵模块小猫射击飞碟

Python精灵模块小猫射击飞碟

"""
   本程序实现一个能向前向后跳跃的小猫,按F键发射子弹,飞碟碰到子弹爆炸.
   Python精灵模块小猫射击飞碟.py
   pip install pygame
"""
import pygame
from sprites import *

pygame.mixer.init()          # 初始化混音器
j = pygame.mixer.Sound("jump.wav") # 新建音效对象

width,height = 480,360       # 定义宽高变量
screen = Screen()            # 新建屏幕对象
screen.bgcolor('dodger blue')# 设定屏幕背景
screen.setup(width,height)   # 设定屏幕宽高
screen.title("跳跃的小猫,请按awd键")

# 用来画黑色地面的
t= Turtle(visible=False)     # 新建不可见海龟对象
t.penup()                    # 抬笔  
t.pensize(50)                # 画笔轨迹粗细
t.goto(-240,-150)            # 坐标定位
t.pendown()                  # 落笔
t.goto(240,-150)             # 坐标定位

akey = Key('a')              # a键实例
dkey = Key('d')              # d键实例 
wkey = Key('w')              # w键实例
fkey = Key('f')              # f键实例

images = 'res/cat1.png','res/cat2.png' # 两张猫的造型图
sp = Sprite(shape=images)             # 新建角色,造型序列为images 
sp.dx = 0                    # 水平速度
sp.dy = 0                    # 垂直速度
sp.da = -1                   # 加速度
sp.rotatemode(1)             # 左右翻转模式
screen.listen()

zd = Sprite(1)               # 子弹
zd.ht()
ufo = Sprite('res/ufo.png')
ufo.rotatemode(1)           # 旋转模式为左右翻转
ufo.goto(0,120)
clock = Clock()              # 新建时钟对象
while 1:
  ufo.fd(6)                # ufo前进
  if ufo.collide(zd) and ufo.isvisible():      # 如果ufo碰到子弹
     explode(ufo,['res/explosion0.png','res/explosion1.png'])
     ufo.ht()
  ufo.bounce_on_edge()     # 碰到边缘就反弹
  if zd.isvisible(): zd.addy(5) # y坐标增加5
      
  if fkey.down():            # 如果按了f键,子弹到达sp的坐标
     zd.goto(sp.xcor(),sp.ycor())
     zd.show()
     
  # 按键检测      
  if akey.down():            # 如果按了小写a键
    sp.nextcostume()                  # 下一个造型
    sp.dx = -5
    sp.setheading(180)
  elif dkey.down():          # 如果按了小写d键
    sp.nextcostume()                  # 下一个造型
    sp.dx = 5
    sp.setheading(0)
  else:sp.dx = 0
  
  # 按w键跳跃
  if wkey.down() and sp.ycor()==-100:
      #j.play()  
      sp.dy = 15
      sp.addy(sp.dy)
     
  if sp.ycor() < -100 :
      sp.dy = 0
      sp.sety(-100)
      
  # 坐标更新
  sp.addx(sp.dx)
  if sp.ycor()!= -100:         
     sp.addy(sp.dy)
     sp.dy = sp.dy + sp.da
   
  screen.update()            # 渲染画面显示
  clock.tick(60)
  

标签:

发表评论