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