pygame飞机大战游戏设计

摘要

我随着学习python语言的深入并接触到了pygame模块,让我对游戏设计方面产生了极大的兴趣,为了提高游戏设计的水平,开始设计本程序;本程序用Python语言编写飞行射击游戏,在内容上对需要的各个模块进行引用,利用python语言简便性进行模块化设计,提高效率。

引言

本程序旨在带给人们在游戏中能缓解压力的方式,同时本程序能够进行双人游玩,具有玩家之间的合作性,增加了游玩本程序的乐趣和交互性,也能促进人们之间人际交往。

用到的工具

设计题目:飞机大战

开发环境:win10、Anaconda3(python3.7)、

引用第三方库:pygame库、random库、sys库、os库、traceback库等

界面设计

该界面为主程序运行后显示的界面,高为900,宽为1200,左右两边为玩家操作的单位的信息显示以及游戏时间和游戏难度信息的显示界面,中间的选框进行游戏模式的选择,上方的红色字体为游戏操作说明,如图1-1


图1-1 主程序运行界面演示

显示界面左侧玩家飞机的信息界面上方显示游戏时间与游戏难度,中间部分为玩家操控的飞机与敌方飞机作战的显示界面,左右侧玩家信息界面,从上至下依次为计分板,暂停播放键,玩家生命值剩余数量,玩家飞机弹药等级,如图1-2


图1-2 双人游戏界面演示

当玩家飞机剩余生命值耗光时,游戏界面显示结束界面,如图1-3


 图1-3 单人游戏结束界面演示

功能设计

暂停/播放按钮,按钮框事件监听功能

当鼠标按下暂停/播放按钮功能,逻辑为获取任意产生的事件,判断产生事件类型为鼠标移动,再判断是否按下鼠标左键以及鼠标处于暂停/播放按钮的位置,如图1-4

图1-4 点击暂停/播放按钮事件监听

按钮框同理。

玩家操控飞机

当键盘按下指定按键飞机做出响应,以达到玩家操控飞机的功能,逻辑为获取任意键盘按下事件,判断该事件按下的是否为指定按键,如图1-5,1-6


图1-5 获取键盘按下事件


图1-6 玩家操控飞机移动事件监听

模拟飞行场景实现

模拟飞行场景实现,逻辑为:准备两张大小一样的背景图,将两张背景图按上下排好然后将两张背景图都以同一个速度向下移动如图1-7,玩家飞机向上移动该速度增大,向下则减小,以实现飞机模拟加速或减少飞行时与地面的相对速度的展现;当背景图的顶部位置移动到主界面的底部时再将背景图移动到主界面上方,依次循环,逻辑代码实现如图1-8.


图1-7 场景过图演示


图1-9 场景过图实现

玩家飞机撞击敌方子弹或飞机功能

事件监听玩家飞机与敌方是否相撞,如果相撞则玩家飞机剩余生命值减一,将相撞的敌方进行毁灭并重置;

判断飞机剩余生命值是否为负,为负则判断该玩家飞机死亡,无法继续操作;双人游戏下再判断另一位玩家剩余生命值是否为负,为负则游戏结束,显示游戏结束界面;

相撞的玩家飞机剩余生命值不为负则,进行复活并进入3秒无敌状态;

游戏难度增加功能


图1-10 难度随游戏时间增加


其他功能

补给获取功能

获取分数与计分板计算功能

最高分统计获取功能

炸弹清除屏幕内敌方飞机功能

敌方飞机行动逻辑功能

敌方飞机生命条展现功能

........

系统结构

用例建模

主要功能流程为:玩家操控自身飞机,击毁敌方飞机获得得分,自身飞机被击毁没有剩余生命值则进行得分统计,显示结束界面;重新开始则清空上一轮玩家数据再进行模式选择并游玩。


 图2-1 用例图

类图建模

进行类图建模,进一步表示游戏中类与类之间的关联,如图2-2。


图2-6 类图建模

库原理简述

from pygame.locals import *:对pygame库中的常量进行调用

import pygame:实现游戏动画,图形,事件等功能

import traceback:检测运行出错的情况,并输出错误详情

import sys:python解释器

from random import *:用于实现随机效果

import os:用于程序退出实现和文件写入读取功能实现等

import time:用于记录游戏时间等

import zidan:子弹模块

import buji:补给模块

from df import *:敌方模块

import myplane:玩家飞机模块

实现代码

因篇幅有限挂上百度云链接

链接:https://pan.baidu.com/s/1BgfYdLzE-vtDXpvdOG5tDQ

提取码:8e5t

游戏测试


图4-1 模式选择界面


图4-2 单人游戏界面


图4-2-1 单人游戏结束界面


图4-3 双人游戏界面


 图4-3-1双人游戏结束界面


图4-4暂停游戏界面


总结

目前该程序成品,虽以实现飞机大战的基本功能,也能进行双人游玩,但还有许多可以添加的内容,来用于提高该游戏玩家的体验;比如敌方运动逻辑加强,增加敌方飞机子弹运动逻辑,这样该游戏的游戏性将大大提高;在玩家击毁敌方飞机同时,还要躲避敌方子弹组成的弹幕攻击,也能一定程度增加游戏的观赏性。

你可能感兴趣的:(pygame飞机大战游戏设计)