#include <iostream> #include <cstdlib> #include <conio.h> #include <ctime> using namespace std; //清屏 void ClearScreen() { system("cls"); } //显示菜单 void ViewMenu() { cout<<"******************"<<endl; cout<<"1.玩家自定数字"<<endl; cout<<"2.系统随机数字"<<endl; cout<<"3.规则"<<endl; cout<<"4.退出游戏"<<endl; cout<<"******************"<<endl; } //显示规则 void ViewRule() { cout<<"***********************************************"<<endl; cout<<"本游戏分为玩家自定谜底和系统定义谜底"<<endl; cout<<"玩家进行猜数字游戏,输入要猜的数字"<<endl; cout<<"谜底是四位互不相同的0-9数字组成"<<endl; cout<<"A提示的是其中一位与谜底对应位是相同的"<<endl; cout<<"B提示的是其中一位数字与谜底中的一位相同但不对应"<<endl; cout<<"4A0B表示所猜数字与谜底相同"<<endl; cout<<"***********************************************"<<endl; } //是否有相等位 bool CheckNum(int a[]) { if(a[0] != a[1] && a[2] != a[3] && a[0]!= a[3] && a[0] != a[2] && a[1] != a[3] && a[1] !=a[2]) return true; else return false; } //暂停一下 void HoldOn() { system("pause"); } //游戏主程序 void NumberGame() { char n;//命令选择 int a=0,b=0;//回馈参数 int GasNumber[4];//要猜的数字 while(1) { ViewMenu(); n=getch(); ClearScreen(); switch(n) { case '1'://玩家输入数字 { //输入->检测->分解->相同则返回继续输入 cout<<"清输入要猜的四位数字"<<endl; int temp; cin>>temp; loop: while(temp<=999 || temp >= 10000 && !cin.fail()) { cout<<"输入错误,清重新输入四位数字!"<<endl; cin.clear(); cin.sync(); cin>>temp; } for(int i=1;i<=4;i++) { GasNumber[4-i]=temp%10; temp=temp/10; } if(!CheckNum(GasNumber)) goto loop; a=b=0;//重置 cin.clear(); cin.sync(); ClearScreen(); cout<<"请输入要猜的数字!"<<endl; int Gas; cin>>Gas; while(1) { if(cin.fail()) { cout<<"输入错误,清重新输入"<<endl; } else //计算a,b的值 { int de[4]; for(int i=1;i<=4;i++) { de[4-i]=Gas%10; Gas=Gas/10; } for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { if(GasNumber[i]==de[j]) if(i==j) a++; else b++; } } } if(a==4) { cout<<"所猜数字回馈:"<<a<<"A"<<b<<"B"<<endl; cout<<"猜数字结束"<<endl; HoldOn(); ClearScreen(); break; } else cout<<"所猜数字回馈:"<<a<<"A"<<b<<"B"<<endl; a=b=0;//重置 cout<<"请输入要猜的数字!"<<endl; cin.clear(); cin.sync(); cin>>Gas; } break; } case '2'://系统自定义 { srand(time(0)); while(1) { GasNumber[0]=rand()%10; GasNumber[1]=rand()%10; GasNumber[2]=rand()%10; GasNumber[3]=rand()%10; if(CheckNum(GasNumber)) break; } a=b=0;//重置 cin.clear(); cin.sync(); ClearScreen(); cout<<"请输入要猜的数字!"<<endl; int Gas; cin>>Gas; while(1) { if(cin.fail()) { cout<<"输入错误,清重新输入"<<endl; } else //计算a,b的值 { int de[4]; for(int i=1;i<=4;i++) { de[4-i]=Gas%10; Gas=Gas/10; } for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { if(GasNumber[i]==de[j]) if(i==j) a++; else b++; } } } if(a==4) { cout<<"所猜数字回馈:"<<a<<"A"<<b<<"B"<<endl; cout<<"猜数字结束"<<endl; HoldOn(); ClearScreen(); break; } else cout<<"所猜数字回馈:"<<a<<"A"<<b<<"B"<<endl; a=b=0;//重置 cout<<"请输入要猜的数字!"<<endl; cin.clear(); cin.sync(); cin>>Gas; } break; } case '3'://显示规则 { ViewRule(); HoldOn(); ClearScreen(); break; } case '4': //退出程序 { cout<<"欢迎使用本程序"<<endl; exit(0) ; } } } } int main() { NumberGame(); return 0; }