刚写的,新鲜出炉,基本满足需要,要求的头文件之类的,把相关的函数放进去就行,产生随机数的函数封装一下也可以,很简单,自己再改改吧,
有问题追问,或百度HI联系
全部代码:
#include
#include
#include
#include
#include
using namespace std;
//猜测最大次数
const int MAX_GUESS_TIME= 8;
void ShowMenu();//显示菜单
void ShowGameInfo();//显示游戏简介
string GetNum();//产生一个不包含重复数字的四位数
string CalcResult(string strResult, string strInput);//比较两个数,输出?A?B结果
bool CheckInput(string strInput);//检查输入有效性,简单处理,可增加其它判断
int main()
{
string strResult;
string strInput;
int iGuessTime=1;
cout<<"==***欢迎使用猜数字游戏***=="< ShowMenu(); cin>>strInput; while (1) { if (strInput == "1") { break; } else if (strInput == "2") { ShowGameInfo(); } else if (strInput == "0") { cout<<"谢谢使用,再见!\n"; return 0; } else { cout<<"对不起,请输入正确的数字!\n"; } ShowMenu(); cin>>strInput; } srand(time(NULL)); strResult = GetNum(); cout<<"请输入四位数(输入exit退出):"< cin>>strInput; while (strInput != "exit") { if (!CheckInput(strInput)) { cout<<"您的输入不正确,请输入4位数字,不能有重复\n"; cin>>strInput; continue; } if (strResult == strInput) { cout<<"哈!猜对了,你好棒!数字是:"< cout<<"继续?(y/n)"; cin>>strInput; if (!(strInput[0]=='y' || strInput[0]=='Y')) { break; } strResult = GetNum(); iGuessTime=1; } else { if (MAX_GUESS_TIME > iGuessTime) { cout<<"第 "< ++iGuessTime; } else { cout<<"对不起,您猜得不对,数字是:"< cout<<"继续?(y/n)"; cin>>strInput; if (!(strInput[0]=='y' || strInput[0]=='Y')) { break; } strResult = GetNum(); iGuessTime=1; } } cout<<"请输入四位数(输入exit退出):"< cin>>strInput; } cout<<"谢谢使用,再见.\n"; return 0; } string GetNum() { char cTmp[2] = {0}; string strTmp; int iTmp=0; while (strTmp.length() != 4) { iTmp = rand() % 10; itoa(iTmp, cTmp, 10); int iIndex = strTmp.find(cTmp); if ( iIndex < 0) { strTmp += cTmp; } } return strTmp; } string CalcResult(string strResult, string strInput) { int iA=0,iB=0; int i=0,j=0; char cResult[5]={0}; for (;i < strResult.length();++i) { for (j=0;j < strInput.length();++j) { char strA=strResult[i]; char strB=strInput[j]; if (strA == strB) { if (i == j) { ++iA; } else { ++iB; } } } } sprintf(cResult,"%dA%dB", iA, iB); return cResult; } bool CheckInput(string strInput) { int i=0; if (strInput.length() != 4) { return false; } for (;i < 4; i++) { char cTmp = strInput[i]; if ( cTmp > '9' || cTmp < '0') { return false; } } return true; } void ShowMenu() { cout<<"请输入对应数字进行选择"< cout<<"1-->玩游戏"< cout<<"2-->游戏介绍"< cout<<"0-->退出游戏"< } void ShowGameInfo() { cout<<"这里是游戏介绍,输入你自己的游戏介绍\n"; system("pause"); } 运行截图:
我有实现如下功能的猜数字游戏的C++代码,要不?
void intro()//说明
{
cout.flush();
cout<<"\n ******************************************************************"<
cout<<" ** 猜数游戏 **"<
cout<<" ** 1.用户从键盘输入4位不重复的数,来匹配计算机给出的4位随 **"<
cout<<" ** 机数,若数字和位数均等同,表示用户赢了。 **"<
cout<<" ** 2.每猜一次,计算机均给出提示信息(x,y),x表示数字、位置 **"<
cout<<" ** 都匹配的个数,y表示数字匹配但位置不匹配的个数。 **"<
cout<<" ** 3.积分规则:每猜错一次扣10分,若猜对1个数,奖励50分。 **"<
cout<<" ** 4.每次游戏共9次机会。 **"<
cout<<" ** 5.高级——游戏助手,可以标记猜中的数和数字匹配但位置不 **"<
cout<<" ** 匹配的数,并列出10个阿拉伯数字中你未用过的数。 **"<
cout<<" ** 6.高级——计时游戏,会计算时间,采用游戏助手时,参考用 **"<
cout<<" ** 时100 s,但游戏时间不作为计分指标。 **"<
cout<<" ******************************************************************"<
}
欢迎楼主到华夏联盟编程区交流!
使用语言:C++使用工具:vs2019
发现这个问题就是个坑,写好了我怕也来句不用了。。