天天看點

[C]數字炸彈小遊戲數字炸彈總結

數字炸彈

使用的是C語言

# 内容

#include<stdio.h>
#include<stdlib.h>
int main(){
    //變量
    char c_TheRequest = 1;//開始界面的字元
    int in_Deltar = 1,in_EnteredNumber,in_Sig;//遊戲中輸入數字及其判定所需要的數字
    int in_GivenNum = 0,in_An = 0,in_Bn = 0;//出的數字,和數字區間
    int in_Mid1,in_Mid2;//用來交換An、Bn的值以滿足An<Bn的中間量
    int in_DistantAn,in_DistantBn;//An與Bn離num的距離
    int in_TemporaryAnSaver,in_TemporaryBnSaver;//臨時用于比較的An、Bn儲存器
    
    //開始界面
    printf("If you just happen to open the game and do not have the intention to play it.\n");
    printf("You can enter a q to quit or you can enter an s to start the game now!\n");
    scanf("%c",&c_TheRequest);
    getchar();
    while (c_TheRequest != 's' && c_TheRequest != 'q'){
        printf("Please do not enter a irrelevant letter.\n");
        scanf("%c",&c_TheRequest);
        getchar();
    }
    if(c_TheRequest == 'q'){
        printf("So sad then.Hope you can play with me next time.\n");
        getchar();
    }

    //遊戲
    if(c_TheRequest == 's'){
        
        //輸入“數字炸彈”
        system("cls");
        printf("(^ o ^) # *** NOW LET\'S PLAY! *** # (^ o ^)\nAttention!You can only enter numbers in the following steps.\nEnter to start.\n");
        getchar();
        system("cls");
        printf("Game : The number boom!(Another Life.)\n");
        printf("Rule:\n");
        printf("The first player should enter a number.Then he should give to numbers and guarantee the number above is between them.\n");
        printf("The rest should guess and enter the numbers.And the one who enter the exact number the first player entered\n");
        printf("is supported to be the winner!\n");
        printf("Please Enter a number to start the game.(You is ought not to expose it to other players.The number should bigger than 0.)\n");
        printf("__________\b\b\b\b\b\b\b\b\b\b\b");
        while(scanf("%d",&in_GivenNum) != 1 || in_GivenNum < 0){
            system("cls");
            printf("Please Enter a NUMBER which is bigger than 0.\n");
            printf("num:___________\b\b\b\b\b\b\b\b\b\b\b");
            getchar();
        }
        system("cls");
        //判定是否為數字

        //輸入“數字炸彈”所在的區間
        printf("And where is the number?Please enter two numbers,and ensure that the number above is between them.\n");
        printf("Additionally,there should be at least 100 numbers between the two numbers you will enter.\n");
        do{
            printf("num = %d\n",in_GivenNum);
            printf("A:__________\b\b\b\b\b\b\b\b\b\b");
            while(scanf("%d",&in_An)!=1){
                printf("Please Enter a NUMBER which is bigger or smaller than the \"num\"!!!!\n");
                printf("A:__________\b\b\b\b\b\b\b\b\b\b");
                scanf("%d",&in_An);
                getchar();
            }
            printf("B:__________\b\b\b\b\b\b\b\b\b\b");
            while(scanf("%d",&in_Bn)!=1){
                printf("Please Enter a NUMBER which is bigger or smaller than the \"num\"!!!!\n");
                printf("B:__________\b\b\b\b\b\b\b\b\b\b");
                scanf("%d",&in_Bn);
                getchar();
            }//記錄An和Bn
            if(!(( in_An < in_GivenNum && in_Bn > in_GivenNum ) || ( in_An > in_GivenNum && in_Bn < in_GivenNum ))){
                system("cls");
                printf("Your math is so poor.Enter a again!\nThe \"num\" must be between the two numbers.\n");
                printf("Enter to restart.\n");
                getchar();
                getchar();
                system("cls");
            }//區間如果錯誤就會報錯
        }while(!(( in_An < in_GivenNum && in_Bn > in_GivenNum ) || ( in_An > in_GivenNum && in_Bn < in_GivenNum )));//判定區間是不是對的

        //排序
        in_Mid1 = (in_An > in_Bn)?in_Bn : in_An;
        in_Mid2 = (in_Bn > in_An)?in_Bn : in_An;
        in_An = in_Mid1;
        in_Bn = in_Mid2;

        //開始猜數字
        system("cls");
        printf("Now the game starts!\n");
        printf("The number is somewhere between %d and %d\n",in_An,in_Bn);
        printf("Please enter the number.\n");
        printf("__________\b\b\b\b\b\b\b\b\b\b");
        while(in_Deltar != 0){
            while(scanf("%d",&in_EnteredNumber)!=1){
                printf("Please Enter a NUMBER!!!!\n");
                scanf("%d",&in_EnteredNumber);
                getchar();
            }//判斷是否為數字

            //差的運算
            in_Deltar = ((in_GivenNum - in_EnteredNumber)<0)?in_EnteredNumber - in_GivenNum:in_GivenNum - in_EnteredNumber;
            in_Sig = in_GivenNum - in_EnteredNumber;
            in_DistantAn = in_GivenNum - in_An;
            in_DistantBn = in_Bn - in_GivenNum;

            //判定差的大小
            if(in_Deltar >= 1000){
                if(in_Sig > 0)
                printf("Too small!Next!\n");
                else
                printf("Too big!Next!\n");
            }
            else if(in_Deltar >= 100){
                if(in_Sig > 0)
                printf("Small.Next!\n");
                else
                printf("Big.Next!\n");
            }
            else if(in_Deltar >= 10){
                if(in_Sig > 0)
                printf("A little small.Next!\n");
                else
                printf("A little big.Next!\n");
            }
            else if(in_Deltar > 0){
                printf("Almost there!NEXT!!!\n");
            }

            //臨時存儲,以便後面判斷所給數字是否滿足條件
            in_TemporaryAnSaver = in_An;
            in_TemporaryBnSaver = in_Bn;

            if(( in_Deltar < in_DistantAn && in_Sig > 0 ) || ( in_Deltar < in_DistantBn && in_Sig < 0 )){
                if(in_Sig > 0)
                in_An = in_EnteredNumber;
                else
                in_Bn = in_EnteredNumber;
            }//這是修改上下限
            if((in_TemporaryAnSaver == in_An && in_TemporaryBnSaver == in_Bn) && in_Deltar){
                system("cls");
                printf("Do not cheat!\nYou should play it again.\n");
            }//判定所猜的數字是否在區間内

            if(in_Deltar == 0)
            break;//猜中
            printf("Enter to continue.\n");
            getchar();
            getchar();
            system ("cls");
            printf("Between %d and %d\n__________\b\b\b\b\b\b\b\b\b\b",in_An,in_Bn);//區間修正
        }
        printf("You are the one !!!");
        getchar();
        getchar();
    }
}
           

總結

學習C的時候為了鞏固所學知識而編得一個小遊戲,内容全英文。

繼續閱讀