c++猜数字游戏实现

发布于:2023-02-06 ⋅ 阅读:(709) ⋅ 点赞:(0)
#include <iostream>

#include<stdio.h>

#include <stdlib.h>

#include<time.h>//时间头文件

#include<ctime>

 using namespace std;

 int main()

{

    cout<<"欢迎来到MASTERMIND"<<endl;

    cout <<"游戏规则:首先系统会随机生成四位不同的个位数,这时,你可以输入你心里想的四位数,系统会计算并回答你,几a几b,a代表位置和数字都猜对了,而b代表只是数字猜中但位置还需要调整。例如:正确答案为8954,你输入的是8349,那么系统会回复你1a2b,因为你的8猜中位置,4和9没猜中位置。其次就是ab不会重复"<<endl;

    cout <<"那么从现在开始游戏开始"<<endl;

 int a,b,c,d,x,y,z,w,flag1=0,i=0,j=0,l=0,m=0;

 srand(time(NULL));//随机数种子

 x=rand()%9+1;//生成随机数字 1-9

 do

 {y=rand()%9+1;}

 while(y==x);

 do

 {z=rand()%9+1;}

 while(z==x || z==y);

 do

 {w=rand()%9+1;}

 while(w==z || w==x || w==y);//随机数互不相同

 while(flag1==0)

 {

  printf("请依次输入4个不重复数字(1-9中)请用空格将数字隔开再回车谢谢,这是第 %d 次尝试\n-\n ",m+1);

  scanf("%d %d %d %d",&a,&b,&c,&d);//输入4个数

  if(a==x)

  i++;

  if(b==y)

  i++;

  if(c==z)

  i++;

  if(d==w)

  i++;     //确定正确位置个数

     if(a!=x && (x==b || x==c || x==d))

     j++;

     if(b!=y && (y==a || y==c || y==d))

     j++;

     if(c!=z && (z==a || z==b || z==d))

     j++;

     if(d!=w && (w==a || w==b || w==c))

     j++;     //确定错误位置、正确数值个数

     printf("\n系统回复%da%db\n",i,j);//同规则

     if(i==4)//完全推出情况返回答案,反馈推理次数,跳出循环

     {

      m++;

   printf("\n恭喜你获胜了,你用了 %d 次,答案是: %d %d %d %d\n",m,x,y,z,w);

   flag1++;

  }

     m++;//次数加一

     i=0;

     j=0;//判断正确位置个数及确定错误位置、正确数值个数清零

 }

}

运行结果

本文含有隐藏内容,请 开通VIP 后查看