【第十三节】C++控制台版本坦克大战小游戏

news2025/1/21 10:23:15

目录

一、游戏简介

1.1 游戏概述

1.2 知识点应用

1.3 实现功能

1.4 开发环境

二、项目设计

2.1 类的设计

2.2 各类功能

三、程序运行截图

3.1 游戏主菜单

3.2 游戏进行中

3.3 双人作战

3.4 编辑地图


一、游戏简介

1.1 游戏概述

        本项目是一款基于C++语言开发的控制台版本坦克大战游戏,旨在为玩家提供一个经典而又充满挑战的战斗体验。游戏在Windows系统上运行,使用Visual Studio 2015或更高版本进行开发。通过运用C/C++的核心知识点和数据结构,游戏实现了丰富的功能和复杂的逻辑。

1.2 知识点应用

  • C/C++:游戏运用了运算符、数组、条件分支、循环、函数、继承、派生、运算符重载、纯虚函数、抽象类等C++特性,以及内存管理技术。

  • 数据结构:游戏采用了STL库和A*算法,以实现高效的敌军坦克寻路和游戏逻辑处理。

1.3 实现功能

  1. 坦克移动与射击:玩家控制的坦克可以在地图上自由移动,并发射炮弹。炮弹会沿着发射方向直线移动,直到击中目标或超出边界。

  2. 碰撞检测:坦克在移动时会实时检测碰撞,遇到障碍物时会停止移动。

  3. 游戏控制:游戏支持暂停和退出功能,玩家可以在任何时候暂停游戏或退出到主菜单。

  4. 炮弹破坏效果:炮弹可以摧毁地图上的部分物品,包括敌军坦克。

  5. 双人协作:游戏支持两个玩家协同作战,每个玩家可以独立操作自己的坦克,游戏具有简单的计分系统。

  6. 敌军坦克多样性:敌军坦克分为三种类型,每种类型的坦克具有不同的血量、攻击力和速度。

  7. 关卡挑战:游戏包含四个不同难度的关卡,玩家需要逐一挑战并通关。

  8. 敌军生成规则:游戏按照预定义的规则在特定出生点生成新的敌军坦克。

  9. 地图编辑器:游戏内置地图编辑器,允许玩家自定义地图,包括钢墙、土墙、丛林、河流等元素,并支持擦除和保存功能。

  10. 游戏存档:玩家可以在游戏过程中保存进度,并在下次游戏时继续。

  11. 背景音乐:游戏启动时播放背景音乐,增强游戏氛围。

  12. AI寻路:敌军坦克具备一定的寻路能力,使用A星寻路算法和简单的十字寻路策略。

  13. 随机道具:游戏中会随机出现五角星功能道具,包括红色加血加等级、蓝色减血降等级、黄色穿越河流等。

1.4 开发环境

  • 操作系统:Windows

  • 集成开发环境:Visual Studio 2015及以上版本

  • 编程语言:C++

二、项目设计

2.1 类的设计

2.2 各类功能

各个类的功能
CAStar ——实现A星寻路算法 CBaseObject 基本对象的虚基类,绘制和擦除
CBulletObject ——子弹类 实现子弹的移动和碰撞等
CTankObject ——坦克类 实现坦克的移动和碰撞等 CDrawObject 绘图类 画和擦除
CMapObject ——地图类 实现编辑,读取,保存地图等
CGameObject ——游戏类 执行玩家操作,读取,保存游戏等
TangTank ——程序主类main

三、程序运行截图

3.1 游戏主菜单

3.2 游戏进行中

3.3 双人作战

3.4 编辑地图

项目代码参考学习请见于:https://download.csdn.net/download/linshantang/89381151

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1719341.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【学习笔记】Windows GDI绘图(九)Graphics详解(上)

文章目录 Graphics 定义创建Graphics对象的方法通过Graphics绘制不同的形状、线条、图像和文字等通过Graphics操作对象坐标 Graphics属性Clip(裁切/绘制区域)ClipBounds获取裁切区域矩形范围CompositiongMode合成方式CompositingQuality渲染质量DpiX和DpiY 水平、垂直分辨率Int…

2024年5月31日 (周五) 叶子游戏新闻

《Granblue Fantasy: Relink》版本更新 新增可操控角色及功能世嘉股份有限公司现已公开《Granblue Fantasy: Relink》(以下简称 Relink)免费版本更新ver.1.3.1于5月31日(周五)上线的消息。该作是由Cygames Inc.(下称Cy…

SpringSecurity6从入门到实战之Filter过滤器回顾

SpringSecurity6从入门到实战之Filter过滤器回顾 如果没有SpringSecurity这个框架,我们应该通过什么去实现客户端向服务端发送请求时,先检查用户是否登录,登录了才能访问.否则重定向到登录页面 流程图如下 官方文档:https://docs.spring.io/spring-security/referen…

实际测试stm32中断优先级

HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority); void HAL_NVIC_EnableIRQ(IRQn_Type IRQn); void HAL_NVIC_DisableIRQ(IRQn_Type IRQn);第一个函数 HAL_NVIC_SetPriority 是用来设置单个优先级的抢占优先级和响应优先级的值。第二个…

改进YOLOv8系列:构建新型单头transformer模块,加入到骨干尾部

改进YOLOv8系列:构建新型单头transformer模块,加入到骨干尾部 需要修改的代码self attention代码创建yaml文件测试是否创建成功本文提供了改进 YOLOv8注意力系列包含不同的注意力机制以及多种加入方式,在本文中具有完整的代码和包含多种更有效加入YOLOv8中的yaml结构,读者…

服务器迁徙大作战:从虚拟到物理的服务迁移全攻略

时光匆匆,发现自己已经很久没有动笔写博客了。瞥了一眼掘金,上一篇博客居然还停留在22年。五年间,似乎自己变得越发慵懒,或许是因为一旦进入舒适区,就不太愿意再去挑战自己,不管是在技术上还是生活中。刚毕…

【Linux】磁盘结构文件系统软硬链接动静态库

目录 一.磁盘结构 1、磁盘的物理结构 2、磁盘的存储结构 3、磁盘的逻辑结构 二.文件系统 1、对IO单位的优化 2、磁盘分区与分组 3、对分组的具体管理方法 4、文件操作 三.软硬链接 1、理解硬链接 2、理解软连接 3、理解.和.. 四、动静态库 1、什么是动静态库 2、…

Threejs(WebGL)绘制线段优化:Shader修改gl.LINES模式为gl.LINE_STRIP

目录 背景 思路 Threejs实现 记录每条线的点数 封装原始裁剪索引数据 封装合并几何体的缓冲数据:由裁剪索引组成的 IntArray 守住该有的线段! 修改顶点着色器 修改片元着色器 完整代码 WebGL实现类似功能(简易版,便于测…

线性代数|机器学习-P1课程简介

文章目录 1. 书籍下载2. 正文 1. 书籍下载 链接:https://pan.baidu.com/s/1QbK0enLh0x4nU1c4Tqwlkw 提取码:r7ft 本课程回顾线性代数在概率论、统计学、优化和深度学习中的应用。是GILBERT STRANG教授的有一个经典的课程。课程将线性代数分为如下部分&a…

Android Studio启动第一个项目的报错——笔记

零基础第一次使用Android Studio开发遇到的问题 1 新建项目下载gradle慢的问题 直接叉掉打开gradle官网手动下载自己想要的版本 gradle官网 然后在刚刚建好的项目里找到gradle-wrapper.properties,修改distributionUrl,并把自己从官网下载的包放到和gr…

SQLRecon:一款针对MSSQL的网络侦查与后渗透测试工具

关于SQLRecon SQLRecon是一款针对Microsoft SQL Server的安全研究工具,该工具专为红队研究人员设计,可以帮助广大研究人员针对MSSQL执行网络侦查和后渗透利用测试。 工具安装 广大研究人员可以直接访问该项目的【Releases页面】下载预编译的最新版本SQ…

WHAT - 用户登录系列(二)- 单点登录 SSO

目录 一、认证机制1.1 基于会话的认证(Session-based Authentication)1. 介绍2. 基本流程 1.2 JSON Web Tokens (JWT)1. 介绍2. jwt 组成3. 基本流程4. 阻止列表5. 刷新令牌 二、单点登录:SSO2.1 单系统登录2.2 SSO 介绍2.3 SSO 登录2.4 SSO …

从零开始学习Slam-旋转矩阵旋转向量四元组(二)

本文参考:计算机视觉life 仅作笔记用 书接上回,上回不清不楚的介绍了旋转矩阵&旋转向量和四元组 现在回顾一下重点: 本着绕谁谁不变的变则 假设绕z轴旋转θ,旋转矩阵为: 再回顾一下旋转向量的表示以及这个基本记不…

【课程总结】Day4:信息论和决策树算法

前言 本章内容主要是学习机器学习中的一个重要模型:决策树,围绕决策树的应用,我们展开了解到:熵的定义、熵的计算、决策树的构建过程(基于快速降熵)、基尼系数等,从而使得我们对决策树有了直观认识。 熵的介绍 因为…

discuz论坛怎么修改备案信息

大家好,今天给大家分享下discuz如何填写备案信息并且展示在网站首页。大家都知道国内网站都需要备案,不通过备案的网站上是没办法通过域名打开的。大家也可以通过搜索网创有方,或者直接点击网创有方 查看悬挂备案号后的效果。 首先大家可以看…

AntV F2 极坐标堆叠柱状图:可视化数据分布

本文由ScriptEcho平台提供技术支持 项目地址:传送门 AntV F2 极坐标堆叠柱状图:可视化数据分布 应用场景 极坐标堆叠柱状图适用于展示不同分类数据在某个维度上的分布情况,例如不同电影的票房占比、不同商品的销售额占比等。通过这种方式…

闽盾杯 2021 DNS协议分析

今年CISCN的Tough DNS 的前戏就是DNS协议分析 直接可以查找到flag的base64形式Zmxh 发现就是请求的dnslog 携带的数据 过滤器就是 dns tshark -r dns.pcapng -T json -Y "dns" >1.json 字段选择 dns.qry.name tshark -r dns.pcapng -T json -Y "dns"…

C# try catch异常捕获

异常捕获 执行过程:try中的代码没有出现异常,则catch里面不会自行,如果try中代码出现异常,则后面的代码都不执行,直接跳到catch中的代码执行。 // try catch 可以捕获多个错误, try...catch...catch.... …

【ETAS CP AUTOSAR基础软件】EcuM模块详解

文章包含了AUTOSAR基础软件(BSW)中EcuM模块相关的内容详解。本文从AUTOSAR规范解析,ISOLAR-AB配置以及模块相关代码分析三个维度来帮读者清晰的认识和了解EcuM。文中涉及的SOLAR-AB配置以及模块相关代码都是依托于ETAS提供的工具链来配置与生…

桃金娘T2T基因组-文献精读17

Gap-free genome assembly and comparative analysis reveal the evolution and anthocyanin accumulation mechanism of Rhodomyrtus tomentosa 无缺口基因组组装及比较分析揭示了桃金娘的进化和花青素积累机制 摘要 桃金娘(Rhodomyrtus tomentosa)是…