首先,我们需要一个单词库,可以存储常见的单词。这个单词库可以是一个列表或者一个文本文件。我们可以从中随机挑选一个单词作为答案。 然后,我们可以定义一个函数来生成需要猜测的单词或组合。这个函数可以将答案中的某些字母替换成“”,表示这些字母还未被猜出来。比如,如果答案是 “hello”,那么生成的需要猜测的单词或组合就是 “ _ _ _ _”。 接下来,我们可以定义一个函数来判断玩家或电脑猜测的字母或组合是否在答案中出现。如果猜测正确,我们需要更新当前猜出的残缺单词或猜测的组合情况,并显示正确的字母或组合。如果猜测错误,我们需要显示已经猜错的字母,并减少剩余猜错次数。在 Hangman 游戏中,通常玩家有 6 次猜错的机会。 当剩余猜错次数为 0 时,游戏结束,显示正确答案并询问是否重新开始游戏。如果猜测正确,则游戏胜利,显示胜利信息,并询问是否重新开始游戏。 最后,我们可以添加一个是否在玩一次的功能,根据玩家的选择决定是否重新开始游戏。c++
时间: 2023-12-10 22:41:29 浏览: 61
下面是一个简单的 Hangman 游戏的 C++ 实现:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <ctime>
#include <cstdlib>
using namespace std;
// 存储常见单词的列表
const vector<string> words = {"apple", "banana", "cherry", "orange", "pear"};
// 生成需要猜测的单词或组合
string generate_word(const string& answer, const vector<char>& guessed)
{
string word;
for (char c : answer) {
if (find(guessed.begin(), guessed.end(), c) != guessed.end()) {
// 已经猜出的字母
word += c;
} else {
// 未猜出的字母
word += "_";
}
}
return word;
}
// 判断是否猜对
bool is_correct(const string& answer, char guess, vector<char>& guessed)
{
if (find(guessed.begin(), guessed.end(), guess) != guessed.end()) {
// 已经猜过的字母
return false;
}
guessed.push_back(guess);
return answer.find(guess) != string::npos;
}
// 显示当前状态
void display(const string& word, int remaining)
{
cout << "Current word: " << word << endl;
cout << "Remaining guesses: " << remaining << endl;
}
int main()
{
srand(static_cast<unsigned int>(time(nullptr)));
char play_again = 'y';
while (play_again == 'y') {
// 随机选择一个单词作为答案
string answer = words[rand() % words.size()];
// 初始化已猜过的字母列表和剩余猜错次数
vector<char> guessed;
int remaining = 6;
// 开始游戏
cout << "Welcome to Hangman!" << endl;
while (remaining > 0) {
// 生成需要猜测的单词或组合并显示当前状态
string word = generate_word(answer, guessed);
display(word, remaining);
// 玩家猜测一个字母
cout << "Guess a letter: ";
char guess;
cin >> guess;
// 判断是否猜对并更新状态
if (is_correct(answer, guess, guessed)) {
cout << "Correct guess!" << endl;
if (generate_word(answer, guessed) == answer) {
// 猜完整个单词,游戏胜利
cout << "You win!" << endl;
break;
}
} else {
cout << "Incorrect guess!" << endl;
remaining--;
if (remaining == 0) {
// 没有剩余猜错次数,游戏失败
cout << "You lose! The answer is " << answer << endl;
break;
}
}
}
// 询问是否再玩一次
cout << "Play again? (y/n): ";
cin >> play_again;
}
return 0;
}
```
这个程序先定义了一个存储常见单词的 vector,然后通过 srand 和 rand 函数随机选择一个单词作为答案。程序中的 generate_word 函数会根据已猜过的字母列表和答案生成需要猜测的单词或组合。is_correct 函数会判断玩家猜测的字母是否在答案中出现,并更新已猜过的字母列表和剩余猜错次数。最后,程序会询问玩家是否再玩一次。
阅读全文