问题描述
题目描述:成语是中国汉字语言词汇中一部分定型的词组或短句,是中国传统文化的一大特色,有固定的结构形式和固定的说法,表示一定的意义,在语句中是作为一个整体来应用的,承担主语、宾语、定语等成分。请设计猜四字成语游戏。
功能需求:
- 设计一个四字成语类Idiom,包含成语内容,多级解释。
- 设计一个猜四字成语游戏类Game,可以随机产生成语的解释信息,显示到控制台,等待用户输入猜测到的成语。
- 用户作答后,系统可以判断用户输入的成语内容是否正确,如果正确,继续一下;如果不正确,让用户继续做答,直到猜词成功。
- 设计提示功能,引导用户猜成功。如果用户根据一级解释没能回到正确,继续展开第二级解释,如果用户还是回答错误,继续展开更多级别的解释,直到全部解释展开完或者用户回答正确。
- 使用外部文件存储相关数据。
解题思路
引入一级解释,二级解释,关键字提示来达到多级解释的目的引导用户猜出成语,使用外部文件读取数据,用if语句达到循环的目的。
程序设计
部分源码
int num=rand()%n; //获得随机词语
for(int i=0;i<num;i++)
getline(fin,str1);
getline(fin,str1,'-');
getline(fin,str2,'#');
getline(fin,str3);
{
Idiom game(str1,str2,str3); // 根据读入的数据 生成对象Idiom!
while(1)
{ cout<<"给出的解释:";
cout<<game.note<<endl;
cout<<"请输入成语:";
cin>>str1;
while(1)
{
if(str1==game.word) { cout<<"答对了!请继续\n"; break;}
else {
if(str1=="1") cout<<"提示为:"<<game.tishi<<endl;
if(str1=="2") cout<<"前两个字为:"<< game.guanjianzi<<endl;
else
cout<<"猜错了!请继续 如需提示请输入1,需要前两个字提示请输入2\n请输入成语:";
cin>>str1;
}
}
break;
}
}
fin.close();
}
return 0;
}
txt文件
测试结果
想要查看完整源代码及程序设计报告的同学可以下载
其中包含源码、实验报告及外部txt文件