#include
#include
#include
#include
#include
void c_input(char *str)
{
int i,j;
input:for(i=0;i<4;i++)
{
str[i]=getch();
putchar(str[i]);
}
putchar('\n');
for(i=0;i<4;i++)
{
if(str[i]<'0'||str[i]>'9')
{
printf("无效输入,请重新输入:");
goto input;
}
for(j=0;j {
if(str[i]==str[j])
{
printf("无效输入,请重新输入:");
goto input;
}
}
}
}
void c_game(const char *temp)
{
int i,j,ci;
char in[4];
char out[5]="0A0B";
for(ci=0;ci<8;ci++)
{
printf("第 %d 次输入:",ci+1);
c_input(in);
for(i=0;i<4;i++)
{
if(in[i]==temp[i])
{
out[0]++;
}
else
{
for(j=0;j<4;j++)
{
if(in[i]==temp[j])
{
out[2]++;
}
}
}
}
printf("%s\n",out);
if(strcmp(out,"4A0B")==0)
{
printf("游戏成功,按下任意键返回主菜单。。");
getch();
return;
}
out[0]='0';
out[2]='0';
}
printf("游戏失败,按下任意键返回主菜单。。");
getch();
}
void c_rand()
{
int i,j;
char data[]="0123456789";
char temp[4];
system("cls");
printf("**随机模式**\n\n");
for(i=0;i<4;i++)
{
j=rand()%(10-i);
temp[i]=data[j];
data[j]=data[10-i-1];
}
c_game(temp);
}
void c_printf()
{
char temp[4];
system("cls");
printf("**用户输入模式**\n\n");
printf("请输入测试数据:");
c_input(temp);
system("cls");
printf("**用户输入模式**\n\n");
c_game(temp);
}
void main()
{
srand(time(NULL));
while(1)
{
system("cls");
printf("(1) 随机产生数据\n");
printf("(2) 用户输入数据\n");
printf("(3) 退出游戏\n");
printf("choice : ");
switch(getch())
{
case '1':c_rand();break;
case '2':c_printf();break;
case '3':exit(1);
}
}
}
在VC6下编译通过,但因为没有用C++特征,也可在其它C的编译器上试试
#define MAXTIMES 8
#define winer 1
#define loser 0
int main()
{
int aid[4],num[4],i,j,times,key,key2,A,B;
char ch;
time_t now;
Initialize:now=time(0);
srand(now);
aid[0]=(rand()+90)%10;/*生成目标数组*/
delay(20);
aid[1]=(rand()+90)%10;
delay(20);
aid[2]=(rand()+90)%10;
delay(20);
aid[3]=(rand()+90)%10;
for(i=0;i<4;i++) /*判断是否产生相同的数字*/
{
for(j=0;j<4;j++)
{
if((i!=j)&&(aid[i]==aid[j]))
goto Initialize;
}
}
printf(nnn);
times=1;
while(times<=MAXTIMES) /*程序主体部分*/
{
key=0;
key2=0;
printf(NO.%d:ntPlease input 4 different int numbers to play!nt,times);
scanf(%d,%d,%d,%d,&num[0],&num[1],&num[2],&num[3]);
for(i=0;i<4;i++) /*判断所输数字是否合法则*/
{
if(!((num[i]<=9)&&(num[i]>=0)))
{
printf(tError!The numbers you input must be int numbers which from 0 to 9n);
key=1;
break;
}
}
if(key==1)
continue;
for(i=0;i<4;i++) /*判断是否输入了相同的数字*/
{
for(j=i+1;j<4;j++)
{
if(num[i]==num[j])
{
printf(tError!The numbers you input must be different!n);
key2=1;
}
break;
}
}
if(key2==1)
continue;
A=0;
B=0;
for(i=0;i<4;i++) /*比较两组数字*/
{
if(num[i]==aid[i])
A++;
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(num[i]==aid[j])
B++;
}
}
B=B-A;
printf(tA%dB%dn,A,B);
if(A==4) /*游戏成功,提示并返回*/
{
printf(Congratulations!n);
printf(Press any key to exit.!na);
getch();
return(winer);
}
else /*这次不完全对,允许次数内重新猜*/
{
printf(ttPress ENTER to continue,or press A to see about answer and exit.n);
/*选择是否放弃,看答案*/
ch=getch();
if(ch=='n')
{
continue;
}
if((ch=='a')||(ch=='A'))
{
printf(The four numbers:%d,%d,%d,%dn,aid[0],aid[1],aid[2],aid[3]);
getch();
return(loser);
}
}
times++;
}
printf(Sorry!You have lost all the chances!nPress any key to exit!n);
getch();
}
给你一本书,《C游戏从入门到精通》,上面有这个游戏还有解释!要的话给个邮箱!
什么意思