'''
飞机大战-案例简介
- pygame安装
- 飞机大战-基本步骤
- 飞机大战-代码实现
- 创建一个游戏窗口
- 向窗口贴背景图片
- 在背景的基础上再贴英雄飞机图片
- 飞机移动并发射子弹
- 在背景的基础上再贴敌人飞机图片
- 飞机爆炸效果
'''
import pygame.display
import time
from pygame.locals import *
hero_x = 150
hero_y = 600
my_bullet = []
enemy_x = 130
enemy_path = "right"
a = pygame.image.load("./飞机大战素材/enemy2_down1.png")
b = pygame.image.load("./飞机大战素材/enemy2_down2.png")
c = pygame.image.load("./飞机大战素材/enemy2_down3.png")
d = pygame.image.load("./飞机大战素材/enemy2_down4.png")
e = pygame.image.load("./飞机大战素材/enemy2_down5.png")
f = pygame.image.load("./飞机大战素材/enemy2_down6.png")
blow_up = [a, b, c, d, e, f]
enemy_num = 0
enemy_life = "live"
def hero_plane(screen, hero, bullet):
global hero_x
global hero_y
global my_bullet
for event in pygame.event.get():
if event.type == QUIT:
exit()
elif event.type == KEYDOWN:
if event.key == K_UP:
hero_y -= 10
elif event.key == K_DOWN:
hero_y += 10
elif event.key == K_LEFT:
hero_x -= 10
elif event.key == K_RIGHT:
hero_x += 10
elif event.key == K_SPACE:
my_bullet.append({"x": hero_x + 32, "y": hero_y - 40})
for i in my_bullet:
screen.blit(bullet, (i["x"], i["y"]))
screen.blit(bullet, (i["x"] + 20, i["y"]))
screen.blit(bullet, (i["x"] - 20, i["y"]))
i["y"] -= 50
screen.blit(hero, (hero_x, hero_y))
def enemy_plane(screen, enemy):
global enemy_x
global enemy_path
global enemy_num
global enemy_life
for bullet in my_bullet:
if (bullet["x"] >= enemy_x and bullet["x"] <= enemy_x + 165) \
and (bullet["y"] >= 0 and bullet["y"] <= 265):
enemy_life = "dead"
if enemy_life == "live":
screen.blit(enemy, (enemy_x, 10))
if enemy_x >= 235:
enemy_path = "left"
elif enemy_x <= 0:
enemy_path = "right"
if enemy_path == "right":
enemy_x += 10
elif enemy_path == "left":
enemy_x -= 10
elif enemy_life == "dead":
if enemy_num <= 5:
screen.blit(blow_up[enemy_num], (enemy_x, 10))
enemy_num += 1
def main():
screen = pygame.display.set_mode((400, 800), 0, 32)
background = pygame.image.load('./飞机大战素材/background.png')
hero = pygame.image.load('./飞机大战素材/hero1.png')
bullet = pygame.image.load('./飞机大战素材/plane.png')
enemy = pygame.image.load("./飞机大战素材/enemy2.png")
while True:
screen.blit(background, (0, 0))
hero_plane(screen, hero, bullet)
enemy_plane(screen, enemy)
pygame.display.update()
pygame.display.set_caption('飞机大战')
time.sleep(0.1)
if __name__ == '__main__':
main()