#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()