介绍模块
本游戏使用的是由Pycharm中的pygame模块来实现的,也可以在python中运行。通过Pygame制作一个飞机大战,通过控制自己的飞机来攻击敌机,敌机的速度也忽快忽慢,看看这个是你小时候玩的游戏吗?
最小开发框架
详情请看此文章:
Pygame游戏模块介绍二:最小开发框架代码_pygame最小开发框架_牧子川的博客-CSDN博客
Pygame和sys模块
import pygame # 制作游戏时要使用的模块
import sys # python的标准库,对内部各功能模块进行初始化创建,系统模块
random模块
需要在屏幕上随机生成食物的位置,通过随机一个位置来表示食物的位置
from random import randint
详情请看此文章:Pygame游戏模块介绍一:random模块简介_random 范围_牧子川的博客-CSDN博客
相关功能
【童年游戏】飞机大战
飞机类
初始化飞机图片,以及定义子弹射出函数和位置更新函数
class Plane(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.image.load('player.png')
self.image = pygame.transform.scale(self.image, (50, 50)) # 调整尺寸为50x50
self.rect = self.image.get_rect()
self.rect.x = width // 2
self.rect.y = height - 100
self.speed = 5
def update(self):
# 获取键盘按键状态
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.rect.x -= self.speed
if keys[pygame.K_RIGHT]:
self.rect.x += self.speed
# 限制飞机在窗口范围内移动
if self.rect.x < 0:
self.rect.x = 0
if self.rect.x > width - 50:
self.rect.x = width - 50
def shoot(self):
bullet = Bullet(self.rect.x + 23, self.rect.y)
all_sprites.add(bullet)
bullets.add(bullet)
子弹类
初始化子弹图片,并定义子弹射出的速度函数
class Bullet(pygame.sprite.Sprite):
def __init__(self, x, y):
super().__init__()
# 子弹的形状
self.image = pygame.image.load('bullet.png')
self.image = pygame.transform.scale(self.image, (10, 20)) # 调整尺寸为10x20
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
self.speed = 10
def update(self):
self.rect.y -= self.speed
if self.rect.y < -10:
self.kill()
敌机类
初始化敌机图片,并定义敌机运动速度函数
class Enemy(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
# 加载敌机的图片
self.image = pygame.image.load('enemy.png')
self.image = pygame.transform.scale(self.image, (30, 30)) # 调整尺寸为30x30
self.rect = self.image.get_rect()
self.rect.x = random.randint(0, width - 30)
self.rect.y = 0
self.speed = random.randint(1, 5)
def update(self):
self.rect.y += self.speed
if self.rect.y > height:
self.rect.x = random.randint(0, width - 30)
self.rect.y = 0
self.speed = random.randint(1, 5)
射中敌机检测
# 检测碰撞
if pygame.sprite.spritecollide(player, enemies, True):
running = False
for bullet in bullets:
pygame.sprite.spritecollide(bullet, enemies, True)
图片界面
扩展可添加功能
1.让图片与界面更加融合
2.增加敌机攻击子弹事件
3.增加关卡
4.增加音效
5.增加背景
源码获取
PyGame/飞机大战 at main · mzc421/PyGame (github.com)
欢迎关注我的公众号:@AI算法与电子竞赛
硬性的标准其实限制不了无限可能的我们,所以啊!少年们加油吧!