以前用C語言編寫的生成隨機數的猜數字小遊戲

//////////////////////////
//簡單猜數字小遊戲
//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);
    }
}
發佈了24 篇原創文章 · 獲贊 55 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章