#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void MakeDigit(int a[]);
void MakeDigit1(int a[]);
int InputGuess(int b[]);
int IsRightPosition(int magic[],int guess[]);
int IsRightDigit(int magic[],int guess[]);
int main1();
int main2();
void menu();
int main()
{
menu();
return 0;
}
void menu()
{
char c1;
system("CLS");
printf("\n\n\n\n\n");
printf("\t\t|%c------------------------菜单------------------------%c|\n",15,15);
printf("\t\t| |\n");
printf("\t\t| |\n");
printf("\t\t| A 人机对战 |\n");
printf("\t\t| B 双人模式 |\n");
printf("\t\t| |\n");
printf("\t\t| |\n");
printf("\t\t|%c-------------------------%c-------------------------%c|\n\n",15,2,15);
printf("\t\t\t\t %c选择(A or B):\n",16);
printf("\n\n\n");
printf("\t\t%c规则:A人机对战 系统随即设定一个各位互异的四位数,玩家根据电脑提示进行猜测!\n",16);
printf("\t\t B双人模式 玩家1设定一个各位互异的四位数,玩家2根据玩家1或电脑提示进行猜测!\n");
scanf("%c",&c1);
switch(c1)
{
case 'A':
main1();
break;
case 'B':
main2();
break;
default:
menu();
}
}
int main1()
{
int a[10];
int b[4];
int count;
int rightDigit;
int rightPosition;
int level;
srand (time(NULL));
MakeDigit(a);
printf("\n");
printf("%c----------------------%c%c HELLO,欢迎来到猜数字游戏!-----------------------%c\n",15,2,2,15);
printf(" 人机对战\n");
printf("\n");
printf(" %c%c 请输入你想猜的次数:",3,3);
scanf("%d",&level);
count=0;
do
{
printf("\n");
printf(" %c%c 第%d次!\n",2,2,count+1);
printf(" 请输入一个四位相异的数字:");
if(InputGuess(b)==0)
{
continue;
}
count++;
rightPosition=IsRightPosition(a,b);
rightDigit=IsRightDigit(a,b);
rightDigit=rightDigit-rightPosition;
printf(" %d个数对了,而且位置正确\n",rightPosition);
printf(" %d个数对了,但位置不正确\n",rightDigit);
}
while(count<level && rightPosition !=4);
if(rightPosition==4)
{
printf("\n");
printf(" %c恭喜你,第%d次就猜对了!\n",2,count);
}
else
{
printf("\n");
printf(" %c真可惜,下次见喽!\n",2);
}
printf(" %c%c答案就是 %d%d%d%d\n",2,2,a[0],a[1],a[2],a[3]);
printf("%c--------------------------GOOD BYE, %c%c%c------------------------------%c\n",15,2,2,2,15);
return 0;
}
int main2()
{
int a[4];
int b[4];
int count;
int rightDigit;
int rightPosition;
printf("\n");
printf("%c----------------------%c%c HELLO,欢迎来到猜数字游戏!-----------------------%c\n",15,2,2,15);
printf(" 双人模式\n");
printf("\n");
printf(" %c%c 请输入你让他猜的各位互异的四位数:",3,3);
MakeDigit1(a);
count=0;
do
{
printf("\n");
printf(" %c%c 第%d次!\n",2,2,count+1);
printf(" 请输入ta猜的数字:");
if(InputGuess(b)==0)
{
continue;
}
count++;
rightPosition=IsRightPosition(a,b);
rightDigit=IsRightDigit(a,b);
rightDigit=rightDigit-rightPosition;
printf(" %d个数对了,而且位置正确\n",rightPosition);
printf(" %d个数对了,但位置不正确\n",rightDigit);
}
while(rightPosition !=4);
if(rightPosition==4)
{
printf("\n");
printf(" %c恭喜你,第%d次就猜对了!\n",2,count);
}
else
{
printf("\n");
printf(" %c真可惜,下次见喽!\n",2);
}
printf(" %c%c答案就是 %d%d%d%d\n",2,2,a[0],a[1],a[2],a[3]);
printf("%c--------------------------GOOD BYE, %c%c%c------------------------------%c\n",15,2,2,2,15);
return 0;
}
void MakeDigit(int a[])
{
int j, k, temp;
for(j=0; j<10; j++)
{
a[j]=j;
}
for(j=0; j<10; j++)
{
k=rand()%10;
temp=a[j];
a[j]=a[k];
a[k]=temp;
}
}
void MakeDigit1(int a[])
{
int d,e;
scanf("%d",&d);
for(int i=3;i>=0;i--)
{
e=d%10;
d=d/10;
a[i]=e;
}
}
int InputGuess(int b[])
{
int i;
for(i=0; i<4; i++)
{
scanf("%1d",&b[i]);
}
return 1;
}
int IsRightPosition(int magic[],int guess[])
{
int rightPosition=0;
int j;
for(j=0; j<4; j++)
{
if(guess[j]==magic[j])
{
rightPosition=rightPosition+1;
}
}
return rightPosition;
}
int IsRightDigit(int magic[],int guess[])
{
int rightDigit=0;
int j,k;
for(j=0; j<4; j++)
{
for(k=0; k<4; k++)
{
if(guess[j]==magic[k])
{
rightDigit=rightDigit+1;
}
}
}
return rightDigit;
}
有兴趣的可以玩一下.....