412飞机大战(python基础)

这篇博客介绍了如何利用Python的Pygame库创建一款简单的飞机大战游戏。内容包括Pygame的安装、游戏窗口的创建、英雄飞机和敌机的移动、发射子弹以及碰撞检测,还有飞机爆炸的动画效果。通过这个项目,读者可以学习到Pygame的基础应用和游戏开发的基本流程。
摘要由CSDN通过智能技术生成
'''
飞机大战-案例简介
- 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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值