pygame飞机大战之英雄机近距离发射子弹击毁敌飞机-peter(董老师)

#coding:utf-8
import pygame,sys,easygui
from pygame.locals import *
#初始化pygame环境
pygame.init()

#创建一个长宽分别为480/650窗口
canvas = pygame.display.set_mode((480, 650))
canvas.fill((255,255,255))

#设置窗口标题
pygame.display.set_caption("飞机大战")


# 加载敌方小飞机图片
enemy=pygame.image.load("images/enemy1.png")
# 加载子弹图片
bullet=pygame.image.load("images/bullet1.png")
#加载英雄机图片
hero=pygame.image.load("images/hero.png")
# 加载背景图片
bg=pygame.image.load("images/bg4.png")

def handleEvent():
    for event in pygame.event.get():
        if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:
            pygame.quit()
            sys.exit()
# 声明变量y1和y2表示敌飞机和英雄机的坐标
y1 = 0
y2 = 600
# 声明变量b1和b2表示两颗子弹的y轴坐标
b1 = 620
b2 = 620
# 声明变量m、n1和n2分别表示英雄机、子弹1和子弹2的速度
m = 0.5
n1 = 0.5
n2 = 0.5
while True:
    # 先画背景
    canvas.blit(bg,(0,0))
    # 画出两颗子弹(先画子弹,后画飞机保证飞机遮住子弹)
    canvas.blit(bullet,(225,b1))
    canvas.blit(bullet,(225,b2))
    # 画敌飞机并向下飞行(速度不要设置太大)
    canvas.blit(enemy,(200,y1))
    y1 = y1 + 0.2
    # 画英雄机并向上飞行(飞行速度用变量表示,为后面修改速度做准备)
    canvas.blit(hero,(200,y2))
    # 要保证英雄机、两颗子弹速度相等,三者一块移动(始终让飞机遮住子弹)
    y2 = y2 - m
    b1 = b1 - n1
    b2 = b2 - n2
    # 当英雄机飞行到y=300的位置停止飞行发射子弹
    if y2 <= 300:
        # 英雄机的速度m等于0停止飞行
        m = 0
        # 子弹1速度设置为1,向上发射打飞机
        n1 = 1
        # 子弹2速度设置为0(和英雄机速度一致,暂不发射)
        n2 = 0
    # 首发子弹击中敌机,子弹消失
    if b1 <= y1:
        b1 = -1000
    # 当敌机y轴坐标超出200px时,英雄机后退避险
    if y1 >= 200:
        # 英雄机往后退(将英雄机的速度m改成负数)
        m = -0.15
        # 第二颗子弹速度和英雄机速度一致(防止暴露)
        n2 = -0.15
    # 当敌机向下飞到y轴坐标超过300时,子弹2速度n2设置为1快速击中敌机
    if y1 >= 300:
        n2 = 1
    # 第二颗子弹击中敌机,敌机和子弹同时消失并且英雄机快速向上飞行成功脱险
    if b2 <= y1:
        y1 = -1000
        b2 = -1000
        m = 3
    # 更新屏幕内容
    pygame.display.update()
    #监听有没有按下退出按钮
    handleEvent()
   
   

猜你喜欢

转载自www.cnblogs.com/dongks/p/11848181.html