funcode实验——坦克大战(c++实现)

4 篇文章 7 订阅

【下载地址】:点击打开链接

【游戏介绍】:

相信大部分同学都玩过或看过“坦克大战”这款经典游戏。现在,就由我们自己动手来开发它。在一个战场上,玩家控制坦克,消灭敌方坦克,并防止敌方坦克摧毁我方基地。

【游戏规则】

1.   按下任意键游戏开始。

2.   通过WSAD 键控制玩家坦克上下左右移动,但不能走出边境。

3.   通过J键控制玩家坦克发射子弹。

4.   玩家坦克有三条生命,每条命有1点HP,每次被敌方坦克的子弹打到扣除1点HP,当HP=0时,如果玩家生命条数>0,则玩家在初始位置复活,否则游戏结束。

5.  游戏中的地形包括砖墙、海水、钢板、森林、地板5种。

6.  游戏共三关,每消灭六名敌人可进入下一段关,如果当前关卡为最后一关,则游戏通关。

【游戏截图】

1.游戏初始化界面


2.游戏关卡界面



3.游戏胜利进入下一关界面


4.游戏失败界面


5.游戏最终胜利界面


【游戏代码】:由于代码过长,请下载后查看。

下载地址:funcode—坦克大战



  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Funcode编程C++实现坦克大战游戏课程设计 1.内容 在一个战场上,玩家控制坦克,消灭敌方坦克,并防止敌方坦克摧毁我方基地。 2.任务和要求 1).游戏有一个初始游戏页面。 2).按下任意键开始游戏,玩家控制坦克在战场上穿梭,碰到墙时,不能通过。 3).敌方坦克自由移动,每隔2秒改变一个方向,每隔3秒发射一发子弹。 4).敌方坦克共有20辆,每隔5秒,从屏幕上方的左、中、右三个位置依次出现。 5).当玩家被消灭或者我方基地被摧毁时,游戏结束。 二、设计思路 1.数据结构 CSprite* m_pSplash;//开始的静态图 CSprite* m_pStart;//开始的静态图画 CTankPlayer* m_pTankplayer;//指向我方坦克的指针 CBullet* m_pBullet;//指向子弹的指针 CWeapon* m_pAim_nor;//家 流程图: case 2 case1 case3 (此处略去部分文件内容) 2.算法 定义了四个类,他们分别是子弹类(用来描述子弹的移动,碰撞等),敌方坦克类(用来描述敌方坦克的移动,碰撞等),我方坦克类(用来描述我方坦克的移动,碰撞等),武器类(作为子弹类,敌方坦克类,我方坦克类的基类。) CGameMain::CGameMain()构造函数: 完成初始化工作: 1、为指针数据分配内存空间,普通数据设置初值。 2、初始化精灵类start,对应“空格开始”精灵。 CGameMain::GameMainLoop(float fDeltaTime ) 游戏的主循环,根据游戏的状态切换逻辑 1、当游戏状态为0时,主循环一直循环,但不做处理,而是等待空格键按下,开始游戏。 2、当游戏状态为1时,调用GameInit()方法初始化游戏,然后置游戏状态为2。 3、当游戏状态为2时: 1.调游戏进行中,处理各种游戏逻辑 2.修改游戏结束状态为结束 (查看超全完整文件请下载观看,良心文档谢谢您的支持!)
游戏分里外两个部分组成,里部分(用户不可见) 通过里部分执行判断,地图数组更改,和各种值的改变。更改完里部分再根据相应变化更改表部分。(用户可视部分)表部分的打印通过gotoxy去到相应坐标再printf打印出字符,通过文本函数改变文字字体颜色与文字背景颜色与字符组合实现图形界面。 程序通过 计数器+循环判断 的思想,类似单核cpu的多线程实现(单线程在不同程序/函数间来回执行)省去了多线程。(具体过程在功能设计与描述有详细描述) 另AI实现与加强依赖于rand随机函数的运用,进一步强化AI,增加游戏乐趣 功能方面,游戏参考于80年代任天堂红白机(FC/FamilyComputer)上的游戏坦克大战(Battle City),包括地图,游戏模式等等(当时的游戏直接烧在电路板上)。所以游戏平衡方面已经有了很好的参考,无需再花大量时间测试平衡性。 但诸如地图中的树林元素,随机道具等没有实现。但较之原版,该游戏由C/C++编写PC运行,由字符界面实现游戏画面。原版一辆坦克的子弹未消失之前不能发射第二颗。导致子弹打击远处CD长,近处CD短。该游戏每个子弹都有相同CD,子弹未消失只要CD达到即可发射第二颗,第三颗…增加了真实性,相较于原版是个改进。且考虑到PC性能不一内置了游戏速度调整。玩家可根据PC性能调整至合适的速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值