找个大神帮我用C++写一个猜数游戏的代码

游戏规则如下:①计算机随机生成四位数字(每位0-9,且互不相同);②提示用户输入4个不重复数字;③当用户输入的数字位置与数值都正确时,以XA表示;④当用户输入的数字正确,... 游戏规则如下:
① 计算机随机生成四位数字(每位0-9,且互不相同);
② 提示用户输入4个不重复数字;
③ 当用户输入的数字位置与数值都正确时,以XA表示;
④ 当用户输入的数字正确,但位置不正确时,以XB表示;
⑤ 若用户猜8次仍未猜中,则游戏结束。
仅以一例来说明规则:假定谜底是0359,而用户猜的是0245,则显示反馈“1A1B”,因为’0’的数字和位置均正确,故显示为1A,而’5’的数字正确,位置不正确,故显示为1B。
【基本要求】
系统至少具有如下功能:
(1) 谜底由计算机随机生成,且必须四位数字各不相同。例如:不可能生成1383这样的谜底,因为数字’3’重复了两次。
(2) 与用户的交互界面为字符式菜单。游戏程序通常都是交互式的,几乎没有非交互式的游戏程序。这是当然的,因为它需要读取游戏玩家的输入并作出反馈。
(3) 达到本课程的错误处理基本要求(详见教材第5章)。即,对于非法输入的情形能给出错误消息,一旦发现一个错误后,允许终止程序。
【测试用例】
假定计算机生成的谜底为1358,而用户的各次输入如下(以下划线标出):
第1次猜测:1426
反馈:1A0B
第2次猜测:3426
反馈:0A1B
第3次猜测:1530
反馈:1A2B
第4次猜测:1573
反馈:1A2B
第5次猜测:1538
反馈:2A2B
第6次猜测:1358
哈!猜对了,你好棒!
反之,若猜8次仍未中,则公布谜底。
头文件std_lib_facilities.h,randint(int max),randint(int min,int max)
写好了发我邮箱544316923@qq.com,跪谢大神
展开
 我来答
拥云庄主
2013-01-09 · TA获得超过2505个赞
知道小有建树答主
回答量:672
采纳率:100%
帮助的人:431万
展开全部

刚写的,新鲜出炉,基本满足需要,要求的头文件之类的,把相关的函数放进去就行,产生随机数的函数封装一下也可以,很简单,自己再改改吧,

有问题追问,或百度HI联系

 全部代码:

#include <iostream>

#include <stdio.h>

#include <stdlib.h>

#include <string>

#include <time.h>

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<<"==***欢迎使用猜数字游戏***=="<<endl;

 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退出):"<<endl;

 cin>>strInput;

 while (strInput != "exit")

 {

  if (!CheckInput(strInput))

  {

   cout<<"您的输入不正确,请输入4位数字,不能有重复\n";

   cin>>strInput;

   continue;

  }

 

  if (strResult == strInput)

  {

   cout<<"哈!猜对了,你好棒!数字是:"<<strResult<<endl;

   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<<"次猜测,输入"<<strInput<<",结果:"<<CalcResult(strResult, strInput)<<endl;

    ++iGuessTime;   

   }

   else

   {

    cout<<"对不起,您猜得不对,数字是:"<<strResult<<endl;

    cout<<"继续?(y/n)";

    cin>>strInput;

    if (!(strInput[0]=='y' || strInput[0]=='Y'))

    {

     break;

    }

 

    strResult = GetNum();

    iGuessTime=1;

   }

  }

 

 

  cout<<"请输入四位数(输入exit退出):"<<endl;

  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<<"请输入对应数字进行选择"<<endl;

 cout<<"1-->玩游戏"<<endl;

 cout<<"2-->游戏介绍"<<endl<<endl;

 cout<<"0-->退出游戏"<<endl;

}

 

void ShowGameInfo()

{

 cout<<"这里是游戏介绍,输入你自己的游戏介绍\n";

 system("pause");

}

运行截图:

Liuguiwu1
2013-01-09 · TA获得超过2107个赞
知道小有建树答主
回答量:1199
采纳率:0%
帮助的人:810万
展开全部
我有实现如下功能的猜数字游戏的C++代码,要不?
void intro()//说明
{
cout.flush();
cout<<"\n ******************************************************************"<<endl;
if(tf) Sleep(400);
cout<<" ** 猜数游戏 **"<<endl;
if(tf) Sleep(400);
cout<<" ** 1.用户从键盘输入4位不重复的数,来匹配计算机给出的4位随 **"<<endl;
if(tf) Sleep(400);
cout<<" ** 机数,若数字和位数均等同,表示用户赢了。 **"<<endl;
if(tf) Sleep(400);
cout<<" ** 2.每猜一次,计算机均给出提示信息(x,y),x表示数字、位置 **"<<endl;
if(tf) Sleep(400);
cout<<" ** 都匹配的个数,y表示数字匹配但位置不匹配的个数。 **"<<endl;
if(tf) Sleep(400);
cout<<" ** 3.积分规则:每猜错一次扣10分,若猜对1个数,奖励50分。 **"<<endl;
if(tf) Sleep(400);
cout<<" ** 4.每次游戏共9次机会。 **"<<endl;
if(tf) Sleep(400);
cout<<" ** 5.高级——游戏助手,可以标记猜中的数和数字匹配但位置不 **"<<endl;
if(tf) Sleep(400);
cout<<" ** 匹配的数,并列出10个阿拉伯数字中你未用过的数。 **"<<endl;
if(tf) Sleep(400);
cout<<" ** 6.高级——计时游戏,会计算时间,采用游戏助手时,参考用 **"<<endl;
if(tf) Sleep(400);
cout<<" ** 时100 s,但游戏时间不作为计分指标。 **"<<endl;
if(tf) Sleep(400);
cout<<" ******************************************************************"<<endl;
tf=0;
}
追问
不用了,谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
真我笨蛋
2013-01-09 · TA获得超过1890个赞
知道大有可为答主
回答量:3444
采纳率:0%
帮助的人:1809万
展开全部

欢迎楼主到华夏联盟编程区交流!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夏虫勿语冰
2021-01-25
知道答主
回答量:31
采纳率:0%
帮助的人:1.6万
展开全部

使用语言:C++使用工具:vs2019

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ZHH__ABC
2013-01-09 · 超过61用户采纳过TA的回答
知道小有建树答主
回答量:129
采纳率:100%
帮助的人:144万
展开全部
发现这个问题就是个坑,写好了我怕也来句不用了。。
更多追问追答
追问
没有啊,难道你不知道楼上写的和我说的不同么
追答
好吧,那我写个,先问下你要求的那个头文件有什么要求?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式