学习编程语言的方法有很多种。如果你是编程新手,你通常会学习一些基本的计算机编程概念,并尝试应用它们。如果你已经掌握了另一种编程语言,你会重新学习如何在新的语言中表达编程概念。
在任何一种情况下,学习这些新原则的便捷方法是创建一个简单的猜谜游戏。这迫使你理解一种语言如何接收输入和发送输出,如何比较数据,如何控制程序的流程,以及如何利用条件语句来影响结果。它还可以确保你了解一种语言如何构建其代码;例如,Lua 或 Bash 可以轻松地作为脚本运行,而 Java 则需要你创建一个类。
在本文中,我将演示如何在 C++ 中为终端实现一个猜谜游戏。
安装依赖项
要跟随本文进行操作,你需要 C++ 和一个编译器。
你可以通过从你的发行版的软件仓库安装 Qt Creator IDE,在 Linux 上获取你所需的一切。
在 Fedora、CentOS 或 RHEL 上
$ sudo dnf install qt-creator
在 Debian、Ubuntu、Chromebook 或类似系统上
$ sudo apt install qtcreator
本文不使用 Qt Creator IDE,但它是获取所需一切的一种简单方法,对于复杂的 C++ 项目(包括带有 GUI 的项目),它是一个必不可少的工具。在 macOS 或 Windows 上,请按照 Qt 网站上的安装说明进行操作。
设置包含和命名空间
C++ 的核心语言非常精简。即使是一个简单的应用程序也需要使用额外的库。此应用程序使用 iostream 来访问 cout
和 cin
关键字。
此外,请确保程序使用 std
命名空间
#include <iostream>
#include <stdlib.h> // srand
using namespace std;
这不是绝对必要的,但如果不将命名空间设置为 std
,iostream 库中的所有关键字都需要命名空间前缀。例如,我必须写 std::cout
,而不是写 cout
。
C++ 中的语句以分号结尾。
创建一个函数
每个 C++ 应用程序至少需要一个函数。C++ 应用程序的主函数必须名为 main
,并且必须返回一个整数 (int
),这符合 POSIX 的期望,即进程在成功时返回 0,失败时返回其他值。你可以通过提供其返回类型,然后提供其名称来创建一个新函数
int main() {
// code goes here
}
实现程序逻辑
游戏代码必须首先生成一个随机数供玩家猜测。在 C++ 中,你可以通过为伪随机数生成建立一个种子来实现这一点。一个简单的种子是当前时间。一旦种子启动,你就可以通过调用 rand
函数并设置上限为 100 来检索一个介于 1 到 100 之间的数字。这将生成一个从 0 到 99 的随机数,因此将选定的数字加 1,并将结果分配给一个名为 number
的变量。你还必须声明一个变量来保存玩家的猜测。为了清晰起见,我将其命名为 guess
。
此示例代码还包含一个调试语句,它会告诉你随机数到底是什么。这对猜谜游戏来说不是很好,但它可以使测试速度更快。稍后,你可以删除该行,或者只是用 //
在其前面添加注释来注释掉它
srand (time(NULL));
int number = rand() % 100+1;
int guess = 0;
cout << number << endl; //debug
添加 do-while 和 if 语句
C++ 中的 do-while
语句以关键字 do
开头,并将你希望 C++ 执行的所有操作都括在大括号中。用关键字 while
结束语句,后跟必须满足的条件(在括号中)
do {
// code here
} while ( number != guess );
游戏代码出现在 if
语句中,其中包含 else if
和 else
语句,以向玩家提供提示。
首先,使用 cout
语句提示玩家进行猜测。cout
函数将输出打印到 stdout
。由于 cout
语句没有附加 endl
(换行)函数,因此不会发生换行。紧随此 cout
语句之后,告诉 C++ 使用 cin
函数等待输入。你可能会猜到,cin
等待来自 stdin
的输入。
接下来,程序进入 if
控制语句。如果玩家的猜测大于 number
变量中包含的伪随机数,则程序会打印出一个提示,后跟一个换行符。这会中断 if
语句,但 C++ 仍被困在 do-while
循环中,因为它的条件(number
变量等于 guess
)尚未满足。
如果玩家的猜测小于 number
变量中包含的伪随机数,则程序会打印出一个提示,后跟一个换行符。这再次中断了 if
语句,但程序仍然被困在 do-while
循环中。
当 guess
等于 number
时,关键条件最终满足,else
语句被触发,do-while
循环结束,并且应用程序结束
do {
cout << "Guess a number between 1 and 100: ";
cin >> guess;
if ( guess > number) { cout << "Too high.\n" << endl; }
else if ( guess < number ) { cout << "Too low.\n" << endl; }
else {
cout << "That's right!\n" << endl;
exit(0);
} // fi
} while ( number != guess );
return 0;
} // main
构建代码并玩游戏
你可以使用 GCC 构建你的应用程序
$ g++ -o guess.bin guess.cpp
运行二进制文件来试用它
$ ./guess.bin
74
Guess a number between 1 and 100: 76
Too high.
Guess a number between 1 and 100: 1
Too low.
Guess a number between 1 and 100: 74
That's right!
成功!
尝试一下 C++
C++ 语言很复杂。为终端编写 C++ 应用程序可以教会你很多关于数据类型、内存管理和代码链接的知识。尝试用 C++ 编写一个有用的实用程序,看看你能发现什么!
评论已关闭。