//
//简单猜数字小游戏
//2015.12.23
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void welcome()
{
int i;
for(i=0;i<=119;i++)printf("*");
printf("\n\n");
for(i=0;i<=14;i++)printf(" ");
printf("欢迎使用一个简单的猜数字小游戏\n");
printf("\n");
for(i=0;i<=119;i++)printf("*");
}
void usage()
{
int i;
for(i=0;i<=24;i++)printf(" ");
printf("使用说明\n");
printf("1.请您输入无重复的四位数字\n2.如果您输入的数中有和计算机产生的数相同的数,并且位置相同,有几个,就会输出几个A\n3.如果您输入的数中有和计算机产生的数相同的数,但位置不同,有几个,就会输出几个B\n4.请您根据提示猜数字\n");
for(i=0;i<=119;i++)printf("*");
printf("\n准备好了吗?\n嘿嘿,开始吧\n");
for(i=0;i<=119;i++)printf("*");
}
void Reset(int *computer,int *c,int *score,int *right,int *fault)
{
int i,t;
for(i=0;i<=9;i++)
c[i]=i;
*score=0;
*right=0;
*fault=0;
for(i=0;i<=3;)
{
t=rand()%10;
if(c[t]){computer[i]=c[t];c[t]=0;i++;}
}
}
void get_input(int *player)
{
int i,x,w=10000;
printf("请输入一个无重复的四位数:");
scanf("%d",&x);
for(i=0;i<=3;i++)
{
player[i]=x/(w/10);
x-=player[i]*(w/10);
w/=10;
}
}
void check(int *player,int *computer,int *right,int *fault)
{
int i,j;
for(i=0;i<=3;i++)
{
for(j=0;j<=3;j++)
if(player[i]==computer[j])
{
if(i==j)(*right)++;
if(!(i==j))(*fault)++;
}
}
}
void AB_prompt(int *right,int *fault)
{
int i;
printf("提示:");
for(i=0;i<=(*right)-1;i++)printf("A");
for(i=0;i<=(*fault)-1;i++)printf("B");
printf("\n");
}
void check_repeat_output_prompt(int *player,int *computer,int *right,int *fault)
{
int i,j;
for(i=0;i<=3;i++)
for(j=i+1;j<=3;j++)
if(player[i]==player[j])goto T;
T:if(i<=3&&j<=3&&player[i]==player[j])
{
printf("提示:输入非法!!!\n");
get_input(player);
}
else
{
check(player,computer,right, fault);
AB_prompt(right,fault);
if(*right!=4)get_input(player);
}
}
void print_result(int n)
{
int i;
for(i=0;i<=119;i++)printf("*");
switch(n)
{
case 0:printf("哎呦,不错哦,天才啊!!!!!90分以上成绩!!\n");break;
case 1:printf("哎呦,不错哦,太厉害了!!!80分以上成绩!!\n");break;
case 2:printf("哎呦,不错哦,真聪明!!!70分以上成绩!!\n");break;
case 3:printf("哎呦,不错哦!!!!及格啦60分以上成绩!!\n");break;
default:printf("哎呦,不错哦,但不够快哦,加油,加油!!\n");
}
}
void whether_play(char *wantplay)
{
int i;
for(i=0;i<=119;i++)printf("*");
printf("再玩一局吧,好的(Y),不了(N)\n");
for(i=0;i<=119;i++)printf("*");
printf("请输入:");
scanf("\n%c",wantplay);
for(i=0;i<=119;i++)printf("*");
printf("\n");
}
void main()
{
int player[4],computer[4],c[10],score,right,fault;
char wantplay='y';
srand(time(NULL));
welcome();
usage();
while(wantplay=='y'||wantplay=='Y')
{
Reset(computer,c,&score,&right,&fault);
get_input(player);
while(right!=4)
{
check_repeat_output_prompt(player,computer,&right,&fault);
score++;
if(right!=4){right=0;fault=0;}
}
print_result(score/6);
whether_play(&wantplay);
}
}
以前用C语言编写的生成随机数的猜数字小游戏
最新推荐文章于 2024-08-09 16:47:53 发布