python彩图版飞机大战小游戏程序源码

简介: python彩图版飞机大战小游戏程序源码

在PyCharm中运行《彩图版飞机大战》即可进入如图1所示的游戏界面。

ace2d368ab15412d2316bf196d01231.png


具体的操作步骤如下:

(1)玩游戏。在游戏主界面中,从屏幕的顶部不断出现下落的敌机,玩家按下键盘上的↑、↓、←、→方向键移动飞机的位置并且发射子弹打掉敌机,每打掉一只敌机得100分。当玩家飞机与敌机发生碰撞时游戏结束,同时显示游戏得分以及排行榜按钮,游戏结束界面如图2所示。

4916f27f2d9f9b11517eb52f61e058b.png


(2)查看排行榜。在游戏结束界面中,单击“排行榜”按钮,将显示排行榜界面,如图3所示。在该界面中,如果想重新玩游戏,可以单击“重新开始”按钮。


19f5da8b37f118d483807acdbf0ed75.png

部分源码如下,其余完整详见下载,可忽略不看。

# 设置游戏屏幕大小
SCREEN_WIDTH = 480
SCREEN_HEIGHT = 800
# 子弹类
class Bullet(pygame.sprite.Sprite):
    def __init__(self, bullet_img, init_pos):
        # 调用了父类的初始化方法来初始化sprite的属性
        pygame.sprite.Sprite.__init__(self)# 调用了父类的初始化方法来初始化sprite的属性
        self.image = bullet_img
        self.rect = self.image.get_rect()
        self.rect.midbottom = init_pos
        self.speed = 10
    def move(self):
        self.rect.top -= self.speed
# 玩家飞机类
class Player(pygame.sprite.Sprite):
    def __init__(self, player_rect, init_pos):
        pygame.sprite.Sprite.__init__(self)
        self.image = []  # 用来存储玩家飞机图片的列表
        for i in range(len(player_rect)):
            self.image.append(player_rect[i].convert_alpha())
        self.rect = player_rect[0].get_rect()  # 初始化图片所在的矩形
        self.rect.topleft = init_pos  # 初始化矩形的左上角坐标
        self.speed = 8  # 初始化玩家飞机速度,这里是一个确定的值
        self.bullets = pygame.sprite.Group()  # 玩家飞机所发射的子弹的集合
        self.img_index = 0  # 玩家飞机图片索引
        self.is_hit = False  # 玩家是否被击中
    # 发射子弹
    def shoot(self, bullet_img):
        bullet = Bullet(bullet_img, self.rect.midtop)
        self.bullets.add(bullet)
    # 向上移动,需要判断边界
    def moveUp(self):
        if self.rect.top <= 0:
            self.rect.top = 0
        else:
            self.rect.top -= self.speed
    # 向下移动,需要判断边界
    def moveDown(self):
        if self.rect.top >= SCREEN_HEIGHT - self.rect.height:
            self.rect.top = SCREEN_HEIGHT - self.rect.height
        else:
            self.rect.top += self.speed
    # 向左移动,需要判断边界
    def moveLeft(self):
        if self.rect.left <= 0:
            self.rect.left = 0
        else:
            self.rect.left -= self.speed
    # 向右移动,需要判断边界
    def moveRight(self):
        if self.rect.left >= SCREEN_WIDTH - self.rect.width:
            self.rect.left = SCREEN_WIDTH - self.rect.width
        else:
            self.rect.left += self.speed
# 敌机类
class Enemy(pygame.sprite.Sprite):
    def __init__(self, enemy_img, enemy_down_imgs, init_pos):
        pygame.sprite.Sprite.__init__(self)
        self.image = enemy_img
        self.rect = self.image.get_rect()
        self.rect.topleft = init_pos
        self.down_imgs = enemy_down_imgs
        self.speed = 2
        self.down_index = 0
    # 敌机移动,边界判断及删除在游戏主循环里处理
    def move(self):
        self.rect.top += self.speed


《飞机大战》这是一款经典飞行射击类游戏,精美绚丽的画面,整体环境主要还是围绕太空为主,高保真的音效,为玩家呈现一场不一样射击体验。简单的触屏操作,触屏按住随意一个地方,左右移动,便可自动攻击敌人,上下移动亦可躲避强敌。在飞机的左下角还有两个道具槽,直接点击就可以发动道具效果,前提是你必须要吃到道具。玩家在游戏中要做的就是驾驶着最新战机,向敌人的总部发起了冲击。除了传承经典的飞行射击类元素之外,同时还加入了商店系统,通过购买相关配件和物品升级武器和飞机。另外还有装备系统,可以让你的飞机变得更强悍,替换相关配件让你火力全开。


"""

对文件的操作

写入文本:

传入参数为content,strim,path;content为需要写入的内容,数据类型为字符串。
path为写入的位置,数据类型为字符串。strim写入方式
传入的path需如下定义:path= r’ D:\text.txt’
f = codecs.open(path, strim, 'utf8')中,codecs为包,需要用impor引入。
strim=’a’表示追加写入txt,可以换成’w’,表示覆盖写入。
'utf8'表述写入的编码,可以换成'utf16'等。
"""
def write_txt(content, strim, path):
    f = codecs.open(path, strim, 'utf8')
    f.write(str(content))
    f.close()
"""
读取txt:
表示按行读取txt文件,utf8表 示读取编码为utf8的文件,可以根据需求改成utf16,或者GBK等。
返回的为数组,每一个数组的元素代表一行,
若想返回字符串格式,可以将改写成return ‘\n’.join(lines)
"""
def read_txt(path):
    with open(path, 'r', encoding='utf8') as f:
        lines = f.readlines()
    return lines
# 初始化 pygame
pygame.init()
# 设置游戏界面大小
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
# 游戏界面标题
pygame.display.set_caption('彩图版飞机大战')
# 图标
ic_launcher = pygame.image.load('resources/image/ic_launcher.png').convert_alpha()
pygame.display.set_icon(ic_launcher)
# 背景图
background = pygame.image.load('resources/image/background.png').convert_alpha()
# 游戏结束背景图
game_over = pygame.image.load('resources/image/gameover.png')
# 子弹图片
plane_bullet = pygame.image.load('resources/image/bullet.png')


相关文章
|
2月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
377 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
2月前
|
机器学习/深度学习 数据采集 算法
基于mediapipe深度学习的运动人体姿态提取系统python源码
本内容介绍了基于Mediapipe的人体姿态提取算法。包含算法运行效果图、软件版本说明、核心代码及详细理论解析。Mediapipe通过预训练模型检测人体关键点,并利用部分亲和场(PAFs)构建姿态骨架,具有模块化架构,支持高效灵活的数据处理流程。
|
2月前
|
设计模式 决策智能 Python
Python条件控制:让程序学会"思考"的魔法
本文深入浅出地讲解Python条件控制,从基础if语句到多分支、嵌套结构,再到简洁的三元表达式与Python 3.10新增的match-case模式匹配,结合电商折扣、会员等级、ATM系统等实战案例,全面掌握程序“智能决策”的核心逻辑。
385 0
|
2月前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
3月前
|
并行计算 算法 Java
Python3解释器深度解析与实战教程:从源码到性能优化的全路径探索
Python解释器不止CPython,还包括PyPy、MicroPython、GraalVM等,各具特色,适用于不同场景。本文深入解析Python解释器的工作原理、内存管理机制、GIL限制及其优化策略,并介绍性能调优工具链及未来发展方向,助力开发者提升Python应用性能。
247 0
|
Python
python小游戏——贪吃蛇游戏4.0版本の背景音乐和音效功能实现
python小游戏——贪吃蛇游戏4.0版本の背景音乐和音效功能实现
|
Python
python小游戏——贪吃蛇游戏3.0版本の历史最高得分记录功能实现
python小游戏——贪吃蛇游戏3.0版本の历史最高得分记录功能实现
|
Python
python小游戏——贪吃蛇游戏2.0版本の得分功能实现
python小游戏——贪吃蛇游戏2.0版本の得分功能实现
|
Python
python小游戏——贪吃蛇游戏
python小游戏——贪吃蛇游戏

推荐镜像

更多
下一篇
oss云网关配置