'''
飞机大战-案例简介
- pygame安装
- 飞机大战-基本步骤
- 飞机大战-代码实现
- 创建一个游戏窗口
- 向窗口贴背景图片
- 在背景的基础上再贴英雄飞机图片
- 飞机移动并发射子弹
- 在背景的基础上再贴敌人飞机图片
- 飞机爆炸效果
'''
# 1、创建游戏窗口
import pygame.display
import time
# 导入pygame.locals
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
#定义敌机状态 live存活
enemy_life = "live"
# 2、创建英雄飞机
def hero_plane(screen, hero, bullet):
# 飞机移动:捕获键盘事件,获取上下左右按键,移动图片横纵坐标
global hero_x
global hero_y
global my_bullet
# 获取pygame键盘按下事件
for event in pygame.event.get():
if event.type == QUIT:
# 退出游戏
exit()
# 3、英雄飞机移动
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})
# 4、飞机发射子弹\
for i in my_bullet:
# i ==> {"x":hero_x+40,"y":hero_y-20}
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)) # 粘贴英雄飞机
# 5、创建敌人飞机
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
# return
# 6、敌人飞机爆炸
def main():
# 创建一个windows窗口
screen = pygame.display.set_mode((400, 800), 0, 32)
# 存放背景图片信息
background = pygame.image.load('./飞机大战素材/background.png')
# 创建一个hero变量,用于存放英雄飞机背景图片
hero = pygame.image.load('./飞机大战素材/hero1.png')
# 加载子弹图片
bullet = pygame.image.load('./飞机大战素材/plane.png')
# 加载敌人飞机图片
enemy = pygame.image.load("./飞机大战素材/enemy2.png")
while True:
# 在windows,用blit,进行图片粘贴
screen.blit(background, (0, 0))
# 创建一个函数,用于粘贴英雄飞机以及移动飞机
hero_plane(screen, hero, bullet)
# 显示敌人飞机
enemy_plane(screen, enemy)
# 刷新操作
pygame.display.update()
# 为pyganme窗口添加标题
pygame.display.set_caption('飞机大战')
time.sleep(0.1)
# 定义程序入口
if __name__ == '__main__':
main()
412飞机大战(python基础)
最新推荐文章于 2022-08-30 09:40:27 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)