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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM