编写一个简单的游戏来练习用 C++ 编程

系统 Linux
C++ 语言很复杂,但它可以教会你很多关于数据类型、内存管理和代码链接的知识。在本文中,我将演示如何用 C++ 在终端上实现猜谜游戏。

[[373804]]

C++ 语言很复杂,但它可以教会你很多关于数据类型、内存管理和代码链接的知识。

学习一门编程语言有几种方法。如果你是编码新手,你通常会学习一些基本的计算机编码概念,并尝试应用它们。如果你已经知道如何用另一种语言进行编码,你可以重新学习编码概念在新语言中是如何表达的。

不管是哪种情况,学习这些新原理的便捷方法是创建一个简单的猜谜游戏。这会迫使你了解一门语言如何接收输入和发送输出,如何比较数据,如何控制程序的流程,以及如何利用条件来影响结果。它还确保你知道一门语言是如何组织其代码的;例如,Lua 或 Bash 可以很容易地作为脚本运行,而 Java 则需要你创建一个类。

在本文中,我将演示如何用 C++ 在终端上实现猜谜游戏。

安装依赖关系

要跟上本文的步伐,你需要 C++ 和一个编译器。

在 Linux 上,你可以通过从你的发行版软件仓库中安装 Qt Creator IDE 来获得你所需要的一切。

在 Fedora、CentOS 或 RHEL 上:

  1. $ sudo dnf install qt-creator

在 Debian、Ubuntu、Chromebook 或类似的系统上:

  1. $ sudo apt install qtcreator

本文并没有使用 Qt Creator IDE,但它是一个安装你所需要的一切的简单方法,对于复杂的 C++ 项目(包括那些带有 GUI 的项目),它是一个必不可少的工具。在 macOS 或 Windows 上,按照 Qt 网站上的安装说明进行安装。

设置包含和命名空间

C++ 的核心语言是精简的。即使是一个简单的应用程序也需要使用额外的库。这个应用程序使用 iostream 来获得对 cout 和 cin 关键字的访问。

另外,确保程序使用 std 命名空间:

  1. #include <iostream>
  2.  
  3. using namespace std;

这并不是绝对必要,但如果不将命名空间设置为 std,所有来自 iostream 库的关键字都需要一个命名空间前缀。例如,我不能写作 cout,而是要写作 std::cout

C++ 中的语句以分号结束。

创建一个函数

每个 C++ 应用程序至少需要一个函数。一个 C++ 应用程序的主函数必须称为 main,它必须返回一个整数(int),这符合 POSIX 的期望,即一个进程在成功时返回 0,而在失败时返回其他值。你可以通过为它提供返回类型和名称来创建一个新函数。

  1. int main() {
  2.  // code goes here
  3. }

实现程序逻辑

游戏代码必须首先产生一个随机数供玩家猜测。在 C++ 中,你可以通过建立一个用于生成伪随机数的种子来实现。一个简单的种子就是当前的时间。一旦有了种子,你就可以得到一个在 1 和 100 之间的数字。通过调用 rand 函数,并设置上限值 100 来产生一个从 0 到 99 的随机数,所以无论选择了什么数字都要加 1,并将结果分配给一个名为 number 的变量。你还必须声明一个变量来保存玩家的猜测值。为了清楚起见,我称这个变量为 guess

这个示例代码还包括一个调试语句,告诉你随机数到底是什么。这对于猜测游戏来说不是很好,但它使测试速度快了很多。以后,你可以删除这一行,或者直接在行前面用 // 注释出来:

  1. srand (time(NULL));
  2. int number = rand() % 100+1;
  3. int guess = 0;
  4.  
  5. cout << number << endl; //debug

增加 do-while 和 if 语句

C++ 中的 do-while 语句以关键字 do 开头,并将你希望 C++ 做的所有事情用括号括起来。用 while 关键字结束语句,后面是必须满足的条件(括号内):

  1. do {
  2.  // code here
  3. } while ( number != guess );

游戏代码出现在 ifelse if 和 else 语句之间,为玩家提供提示。

首先,用 cout 语句提示玩家猜测。cout 函数将输出打印到 stdout 上。因为 cout 语句没有连着 endl(endline)函数,所以没有换行。紧接着这个 cout 语句,通过使用 cin 函数告诉 C++ 等待输入。正如你所猜测的那样,cin 等待来自 stdin 的输入。

接下来,程序进入 if 控制语句。如果玩家的猜测大于 number 变量中包含的伪随机数,那么程序就会打印出一个提示,后面是一个换行符。这就中断了 if 语句,但 C++ 仍然被困在 do-while 循环中,因为它的条件(number 变量等于 guess)还没有满足。

如果玩家的猜测小于 number 变量中包含的伪随机数,那么程序就会打印出一个提示,后面是一个换行符。这再次中断了 if 语句,但程序仍然被困在 do-while 循环中。

当 guess 等于 number 时,最终满足关键条件,触发 else 语句,do-while 循环结束,程序结束:

  1. do {
  2. cout << "Guess a number between 1 and 100: ";
  3. cin >> guess;
  4.  
  5. if ( guess > number) { cout << "Too high.\n" << endl; }
  6. else if ( guess < number ) { cout << "Too low.\n" << endl; }
  7. else {
  8. cout << "That's right!\n" << endl;
  9. exit(0);
  10. } // fi
  11. } while ( number != guess );
  12. return 0;
  13. } // main

构建代码和玩游戏

你可以用 GCC 构建你的应用程序:

  1. $ g++ -o guess.bin guess.cpp

运行二进制文件试试:

  1. $ ./guess.bin
  2. 74
  3. Guess a number between 1 and 100: 76
  4. Too high.
  5.  
  6. Guess a number between 1 and 100: 1
  7. Too low.
  8.  
  9. Guess a number between 1 and 100: 74
  10. That's right!

成功了!

试试 C++ 吧

C++ 语言很复杂。为终端编写 C++ 应用程序可以让你学到很多关于数据类型、内存管理和代码链接的知识。试着用 C++ 编写一个有用的实用程序,看看你能发现什么! 

责任编辑:庞桂玉 来源: Linux中国
相关推荐

2021-01-01 19:30:21

Python编程语言

2021-01-03 16:30:34

Rust编程语言

2021-01-14 08:55:20

C语言编程

2021-02-05 16:03:48

JavaScript游戏学习前端

2023-01-13 18:55:09

游戏Ada编程语言

2011-09-16 10:00:56

C++

2013-12-13 08:59:15

C++游戏

2009-09-11 09:11:09

2022-06-03 16:59:13

编程语言Awk

2009-09-11 09:10:30

C#编写游戏

2021-04-13 06:35:13

Elixir语言编程语言软件开发

2017-11-23 08:30:26

编程Python掷骰子游戏

2021-05-28 18:12:51

C++设计

2015-05-25 15:06:28

JavaScript函数式编程

2020-11-30 13:16:29

Python编程语言

2015-03-24 19:48:24

2019-09-23 09:11:02

Python文本编辑器操作系统

2021-08-30 07:59:56

C++溢出函数

2022-09-08 06:23:37

C++HTTP 服务器

2009-08-25 01:46:00

C# WINDOWS服
点赞
收藏

51CTO技术栈公众号