C++猜数字游戏

#include<iostream> 

#include<stdlib.h> 
#include<conio.h> 
#include<time.h> 
#include<ctype.h> 
#include"windows.h" 
void main() 
{
 using namespace std; 
 int a[4],b[4];
 int i,j;
 char chong='Y';
 int d; 
 while(chong=='Y'||chong=='y')
 {
  //确保可以无数次游戏直到不选“Y”退出
  system("cls");
  cout<<"\t****************************猜数字游戏*****************************"<<endl;//可以让游戏中途退出
  cout<<"\t\t************(输入-1中途退出)*************"<<endl;
  cout<<"A代表数字位置都正确的个数 B代表数字正确但是位置不对"<<endl;
  d=0;//d为控制游戏最终判断是否成功及使循环连续的开关
  for(i=0;i<4;i++){ 
   a[i]=10; 
   b[i]=10;//初始化AB数组
  } 
  srand((unsigned)GetTickCount()); 
  for(i=0;i<4;i++) 
   b[i]=rand()%10;//产生0-9的随机数
  while(b[0]==b[1]) 
   b[1]=rand()%10;//确保b[0]和b[1]的数不同
  while(b[0]==b[2]||b[1]==b[2]) 
   b[2]=rand()%10;//确保b[2]和b[0]、b[1]的数不同
  while(b[0]==b[3]||b[1]==b[3]||b[2]==b[3]) 
   b[3]=rand()%10;//确保b[3]和b[0]、b[1]、b[2]的数不同
  int ca=0,cb; 
  for(j=10;j>0;j--){
   //游戏只有10次机会
   if(ca==4)
   { 
    cout<<"恭喜你获胜了"<<endl;//当ca==4时全部猜对
    cout<<"是否再来一局,(Y/N)"<<endl; 
    chong=getch();//Y/N输入以便继续
    if(chong=='N'||chong=='n') exit(1); 
    if(chong=='Y'||chong=='y'){d=1;break;} 
   }//游戏胜利返回1 
   if(d!=0) 
    break; 
   ca=0;
   cb=0;//初始化提示"AB" 
   
   cout<<"您有"<<j<<"次机会:请输入0-9的四个数输入时以空格隔开"<<endl; 
   for(i=0;i<4;i++) 
   { 
    cin>>a[i];//初始化输入四个数
    if(a[i]==-1) 
     exit(1); 
   } 
   while(a[0]<0||a[0]>9)
   { 
    cout<<"第一个数输入有误,请重新输入"<<endl; 
    cin>>a[0];//确保输入正确
   } 
   while(a[1]<0||a[1]>9||a[0]==a[1])
   { 
    
    cout<<"第二个数输入有误,请重新输入"<<endl; 
    cin>>a[1];//确保输入正确
   } 
   while(a[2]<0||a[2]>9||a[0]==a[2]||a[1]==a[2])
   { 
    cout<<"第三个数输入有误,请重新输入"<<endl; 
    cin>>a[2];//确保输入正确
   } 
   while(a[3]<0||a[3]>9||a[0]==a[3]||a[1]==a[3]||a[2]==a[3])
   { 
    
    cout<<"第四个数输入有误,请重新输入"<<endl; 
    cin>>a[3];//确保输入正确
   } 
   
   for(i=0;i<4;i++) 
    if(a[i]==b[i]) ca++;//此循环判断位置和数字是否都正确
    if(a[0]==b[1]||a[0]==b[2]||a[0]==b[3]) cb++; 
    
    if(a[1]==b[0]||a[1]==b[2]||a[1]==b[3]) cb++; 
    
    if(a[2]==b[0]||a[2]==b[1]||a[2]==b[3]) cb++; 
    
    if(a[3]==b[0]||a[3]==b[1]||a[3]==b[2]) cb++; 
    
    /*以上4个if判断数字正确但位置不对的数*/ 
    for(i=0;i<4;i++)
     cout<<a[i]; 
    cout<<" "; 
    cout<<"A"<<ca<<"B"<<cb<<endl; 
  } 
  /*以上for循环进行提示每次猜的结果*/ 
  
  if(d!=0) 
   continue; 
  
  cout<<"很遗憾你失败了"<<endl;//当10次都没猜对提示失败
  cout<<"答案为:"; 
  for(i=0;i<4;i++) 
   cout<<b[i];//输出正确的答案
  cout<<endl; 
  cout<<"是否再来一局,(Y/N)"; 
  cout<<endl; 
  chong=getch(); 
  if(chong=='N'||chong=='n') exit(1); 
  if(chong=='Y'||chong=='y') 
   
   continue;
 } 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值