问题描述 该程序是模仿一款经典2D像素游戏——坦克大战,重温那份童年记忆。 系统设计 该游戏有两个系统。一个是玩家控制的小车,有一个专门的控制系统使得小车可以映射玩家的按键操作进行相应的动作。还有一个AI控制的敌军坦克(这个比那款经典游戏更智能)可以自动探寻我方坦克所在位置,若我方坦克在敌军的前进位置上,则会进行攻击。 功能模块描述
- 欢迎界面功能 进入时是一个用graphics写的简易界面,作用是存放一个按钮来开始游戏。
- 地图编辑功能 在主程序中有一个tm的list,其中可以编辑地图,"*"表示墙(不可逾越)"."表示畅通,更改就可以更改地图。程序一开始会扫描地图,记录下你的更改,然后开始游戏。
- 坦克控制功能 使用pygame库之后,可以检测玩家的控制,当玩家按下按键后,就可以映射到我方坦克上,从而进行操控。基本操作是: w——前进 s——后退 a——向左前进 d——向右前进 J——发射导弹 同时设置好己方坦克不能离开游戏界面,也不能穿墙。
- 敌军坦克AI功能 敌军坦克可以读取我方坦克所处位置,然后通过A*算法自动寻路来找寻我方坦克(这里我设置为当敌军坦克走完一条路径后再进行对我方坦克的位置搜索)并会自动开炮(通过单位向量判断是否炮塔与我方坦克处于同一条线上)。当敌军坦克方向对准我方时,即开炮,并会打墙。 同时在shell会输出敌方坦克自动寻路轨迹以及path列表。
- A*算法 这是本游戏的算法核心,使用该算法来实现AI。
- 碰撞判断功能 通过pygame的colliderect功能来实现碰撞系统,子弹可击毁墙以及坦克。
- 画面刷新和监测功能 设置每秒帧数为30帧,并且子弹有一个速度,每次画面刷新后会改变子弹位置,实现动画功能。同时一直在监测胜负条件,一旦满足,立即进入结束界面。 8.结束界面功能 有两种结果胜和负。检测到后跳出循环,进入结束界面。
- 音效功能 具有开炮和击中音效。 Tips:本程序需要自行安装pygame库以及math、gameobjects库(均已放在压缩包内)