大家好,这里是国中之林!
❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←
问题:
解答:
#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
#include <cctype>
#include <fstream>
#include <vector>
using namespace std;
const int NUM = 26;
//const string wordlist[NUM] = { "apiary","beetle","cereal","danger","ensign","florid",
// "garage","health","insult","jackal","keeper","loaner",
// "manage","nonce","onset","plaid","quilt","remote","stolid"
// "train","useful","valid","whence","xenon","yearn","zippy" };
int main()
{
ifstream fin;
fin.open("word.txt", ifstream::in);
if (!fin.is_open())
{
cerr << "Can't open file word.txt." << endl;
exit(EXIT_FAILURE);
}
string word;
vector<string>wordlist;
if (fin.good())
{
while (fin >> word)
{
wordlist.push_back(word);
}
}
int length = wordlist.size();
fin.close();
srand(time(0));
char play;
cout << "Will you play a word game? <y/n> ";
cin >> play;
play = tolower(play);
while (play=='y')
{
string target = wordlist[rand() % NUM];
int length = target.length();
string attempt(length, '-');
string badchars;
int guesses = 6;
cout << "Guess my secret word.It has " << length << " letters,and you guess\n" << "one letter at a time.You get " << guesses << " wrong guesses.\n";
cout << "Your word: " << attempt << endl;
while (guesses>0&&attempt!=target)
{
char letter;
cout << "Guess a latter: ";
cin >> letter;
if (badchars.find(letter) != string::npos || attempt.find(letter) != string::npos)
{
cout << "You already guessed char.Try again.\n";
continue;
}
int loc = target.find(letter);
if (loc == string::npos)
{
cout << "Oh, bad guess!\n";
--guesses;
badchars += letter;
}
else
{
cout << "Good guess!\n";
attempt[loc] = letter;
loc = target.find(letter, loc + 1);
while (loc!=string::npos)
{
attempt[loc] = letter;
loc = target.find(letter, loc + 1);
}
}
cout << "Your word: " << attempt << endl;
if (attempt != target)
{
if (badchars.length() > 0)
{
cout << "Bad choices: " << badchars << endl;
cout << guesses << " bad guess left\n";
}
}
}
if (guesses > 0)
{
cout << "That's right!\n";
}
else
{
cout << "Sorry, the word is " << target << ".\n";
}
cout << "Will you play another?<y/n>";
cin >> play;
play = tolower(play);
}
cout << "Bye\n";
return 0;
}
运行结果:
考查点:
- string类
- cctype
- 随机数
- ifstream读文件
- vector容器
注意:
- find若找到字符返回对应的位置,可以设置起始位置找,下面就是找后面有没有重复的字母.
2024年9月17日11:02:45