突然想起在刚学C语言的时候变想做出一个可以玩耍的游戏,但是当时都没有了解图形库的概念,在网上闲逛便发现了有人做了一个猜数字的游戏,我当时也跟的写了一个,基本都差不多。
想想也是好久以前的东西了,直接贴代码把,大家多多指导。
#include<stdio.h>
#include<windows.h>
#include<time.h>
int NUM[4], PAER_NUM[4];
void begin(void);
void start(void);
void creat_num(void);
int is_true(int PAER_NUM[]);
int getA(int s1[], int s2[]);
int getB(int s1[], int s2[]);
void win(void);
void lose(void);
int main()
{
char INPUT;
int i, j, A, B, END, choose;
begin(); // 开始界面
while(1)
{
scanf("%c", &INPUT);
fflush(stdin);
if(INPUT=='s'||INPUT=='S')
{
start();
for(i=1;i<=8;i++)
{
PAER_NUM[0] = PAER_NUM[1] = PAER_NUM[2] = PAER_NUM[3] = -1;
printf("\n请输入第%d个四位数,各位之间以空格隔开:",i);
do {
scanf("%d%d%d%d", &PAER_NUM[0],&PAER_NUM[1], &PAER_NUM[2], &PAER_NUM[3]);
fflush(stdin);
is_true(PAER_NUM); // 判断输入的数字
if(is_true(PAER_NUM)==0)
printf("输入数字不合法,请重新输入:");
}while(is_true(PAER_NUM)==0);
A = getA(NUM, PAER_NUM);
B = getB(NUM, PAER_NUM);
if(A == 4)
break;
printf("%dA %dB\n", A, B);
printf("继续输入(c) 看答案(a) 离开(e)\n");
END = 0;
choose = 200;
while(END == 0)
{
scanf("%c", &INPUT);
fflush(stdin);
if(INPUT=='c'||INPUT=='C')
END = 1, choose = 1;
else if(INPUT=='a'||INPUT=='A')
{
END = 1, choose = 0;
if(A==4)
win();
else
lose();
}
else if(INPUT=='e'||INPUT=='E')
return 0;
else
printf("输入错误,请重新输入:");
}
if(choose==0)
break;
if(i==9)
printf("%d %d %d %d\n", NUM[0], NUM[1], NUM[2], NUM[3]);
}
if(choose==1)
if(A==4)
win();
else
lose();
continue;
}
else if(INPUT=='e'||INPUT=='E')
return 0;
else
{
printf("输入错误,请重新输入:");
continue;
}
}
return 0;
}
void begin()
{
printf("\n\n\n\n\n");
printf("********************************************************************\n");
printf(" 猜数字游戏\n");
printf("游戏帮助:\n");
printf(" 每局游戏,计算机将随机产生一个四位整数,这个整数各个位上的数字都\n");
printf("不重复,且首位可以为0。玩家有十次机会来猜这个数,每猜一次,计算机将告\n");
printf("玩家:有几个数大小位置都对了,用A表示;有几个数大小对了但位置错了,用\n");
printf("B表示。八次机会用光后,游戏结束。\n");
printf(" 开始游戏(s) 离开游戏(e)\n");
printf("********************************************************************\n");
}
void start(void)
{
system("cls");
printf(" 开始新一局游戏喽,祝你好运^_^\n\n");
creat_num();
}
void creat_num()
{
int i, j;
srand((unsigned int)(time(NULL)));
NUM[0] = rand() % 10;
for(i=1;i<4;i++)
{
NUM[i] = rand() % 10;
for(j = 0; j<i; j++)
while(NUM[i]==NUM[j])
NUM[i] = rand() % 10;
}
}
int is_true(int str[])
{
int i, j;
for(i=0;i<4;i++)
if(str[i]<0||str[i]>9)
return 0;
for(i= 1; i<4;i++)
for(j=0;j<i;j++)
if(str[i]==str[j])
return 0;
return 1;
}
int getA(int s1[], int s2[])
{
int count=0;
for(int i=0;i<4;i++)
if(s1[i]==s2[i])
count++;
return count;
}
int getB(int s1[], int s2[])
{
int count=0;
if(s2[0]==s1[1]||s2[0]==s1[2]||s2[0]==s1[3])
count++;
if(s2[1]==s1[0]||s2[1]==s1[2]||s2[1]==s1[3])
count++;
if(s2[2]==s1[0]||s2[2]==s1[1]||s2[2]==s1[3])
count++;
if(s2[3]==s1[0]||s2[3]==s1[1]||s2[3]==s1[2])
count++;
return count;
}
void win(void)//赢游戏
{
printf("猜对了!你好厉害哟~\n");
printf("新游戏(s) 离开(e)\n");
}
void lose(void)//输游戏
{
printf("正确答案是%d%d%d%d,很遗憾,你还要继续努力!\n",NUM[0],NUM[1],NUM[2],NUM[3]);
printf("新游戏(s) 离开(e)\n");
}