一个简单的 C++ 控制台回合制游戏

2018年6月14日 2 条评论 229 次阅读 7 人点赞

写在前面

作为 C++ 的学习者,我最近花了几天时间做了一个很简单的控制台回合制小游戏,取名为 Hero Era Battleground。游戏内容就是英雄对战,由玩家扮演的英雄和电脑进行回合制的战斗,以杀死对方为目的。

说是“游戏”其实也算不上,因为它实在是太简陋了。事实上,这是我的第一个可以称作“项目”的 C++ 程序。这个小项目的目的主要是巩固 C++ 面向对象程序设计的思想,同时也学到了一些有关控制台的“非常规”操作,下面会有简单介绍。

本文可以给同我一样想做控制台游戏的 C++ 小白提供一些思路,项目源码在本文末尾可下载。注意:本文非常不适合大神阅读。

 

功能介绍

在游戏中,玩家需要扮演一个英雄与 NPC 进行对战,对战采用回合制。在每回合中,玩家和 NPC 可以从以下操作中进行选择:攻击回血购买装备卖出装备合成装备

哦对了,敌人 NPC 的名字是随机的(我随便想了几个,创建时自动随机选一个),比如下面,Jed 当然是我,然后我的敌人是 Donald Trump。(无冒犯意,纯属娱乐)

如果你在第一局游戏中获胜了,那么你可以进行下一局,当然,你之前买的装备仍然可以保留到下一局。不过,为了增大难度,从第二局开始,敌人 NPC 一开始就会自带一个装备,而且初始的装备会随着局数的增加而变强。

 

特色内容

通过这个小项目,我学到了一些新东西用于控制台程序设计。

第一个,也就是我前面说的“非常规”操作,就是彩色字体的应用。在这个游戏中,英雄名都是青色的,英雄生命值的颜色则会随着数字不同而改变,50以上显示绿色,20~50显示黄色,低于20显示红色。要改变控制台打印字体的颜色其实很简单,只需要使用一个函数即可,该函数调用 Windows API,如改为红色的代码如下:


SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED)

第二个,格式化输出,比如上面的显示英雄状态的表格。我看到有许多控制台游戏的表格都是用星号或者中划线来构成的,但个人感觉这样看起来比较丑。我用的是制表符,这样能够形成完美的表格。同时我在打印的时候使用了大量的 setw 函数来控制字段宽度,从而能够形成这种我认为比较漂亮的表格。

第三个,用 getch 函数接受用户输入。getch 是无缓冲输入,按下按键即被函数捕捉到。因此,这个游戏中,用户按下 A 键即可攻击,按下 R 键即可回血,不需要再按回车刷新缓冲区了。

 

游戏下载

下载 exe 文件,仅适用于 Windows 操作系统。版本:v1.0.3

 

源码下载

本项目使用 Visual Studio 2017 开发,Windows SDK 版本为 10.0.17134.0。由于调用了 Windows API,因此只适用于 Windows 操作系统

文件结构如下图所示:

项目地址:GitHub
查看文档:文档 v1.0.3

 

写在后面

其实控制台游戏可以玩出很多花样的,回合制可以说是最简单的一种。如果你是一名 C++ 小白,相信本文能够给你一些启发,也随时欢迎与我交流。

 

Jed

一名狂热的技术爱好者。

文章评论(2)

  • 日本地铁

    这种游戏做多了,你会上瘾的

    2018年6月27日
    • Jed

      甚至已经有点上瘾

      2018年6月27日
  • 提示:有人回复时会邮件通知您