//////////////////////////
//簡單猜數字小遊戲
//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語言編寫的生成隨機數的猜數字小遊戲
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.