趣味C語言之猜數(shù)游戲

  • 游戲簡述

    系統(tǒng)隨機(jī)產(chǎn)生4個(gè)0~9不相同的數(shù)字剩岳,從小到大排序,玩家從終端輸入4個(gè)從小到大排好序的不相同數(shù)字仇矾,如果數(shù)字相同并且位置相同庸蔼,記為A;如果數(shù)字相同但是位置不同贮匕,記為B姐仅。用戶根據(jù)每次輸入數(shù)字的反饋,進(jìn)行邏輯推理刻盐,直到猜出答案掏膏。
  • 程序運(yùn)行效果

    猜數(shù)游戲.png
  • 設(shè)計(jì)思路

  1. 產(chǎn)生4個(gè)不相同的隨機(jī)數(shù)
  2. 將4個(gè)數(shù)從小到大進(jìn)行排序(插入排序)
  3. 游戲開始,將輸入的數(shù)字與原始數(shù)字進(jìn)行比較隙疚,通過兩重循環(huán)實(shí)現(xiàn)壤追,在數(shù)字相同的情況下,如果i與j相等供屉,則A++行冰;否則B++
  4. 如果A等于4,則跳出循環(huán)伶丐,游戲結(jié)束悼做;否則繼續(xù)輸入,同時(shí)A哗魂,B的值還原
  • 重難點(diǎn)呈現(xiàn)

    • 如何產(chǎn)生隨機(jī)數(shù)

      1. 導(dǎo)入頭文件
      #include <stdlib.h>
      #include <time.h>
      
      1. 使用種子
      srand(1);     //每次執(zhí)行種子相同肛走,生成相同的隨機(jī)數(shù)
      srand((unsigned int)time(NULL));     //每次執(zhí)行種子不同,生成不同的隨機(jī)數(shù)
       
      int temp = rand() % 10    //產(chǎn)生0~9的隨機(jī)數(shù)录别,以此類推 
      
      • 指定范圍隨機(jī)數(shù)
        srand((unsigned)time(null));
        (a,b) (rand()%(b-a+1))+a-1
        [a,b) (rand()%(b-a))+a
        (a,b] (rand()%(b-a))+a+1
        [a,b] (rand()%(b-a+1))+a
    • 如何實(shí)現(xiàn)插入排序

    //邊產(chǎn)生 邊排序   插入排序
          //尋找這個(gè)數(shù)對(duì)應(yīng)的位置
          int j = 0;
          for(;j <i;j++){
              //j對(duì)應(yīng)的數(shù)字和產(chǎn)生的數(shù)字進(jìn)行比較
              if(temp < originalArray[j]){
                  //j后面的內(nèi)容往后移動(dòng) 騰出空間
                  for(int k = i;k > j;k--){
                      originalArray[k] = originalArray[k-1];
                  }
                  break;
              }
              
          }
          
          //寫入到數(shù)組中
          originalArray[j] = temp;
          
      }
    
    ps:想了解更多的C語言排序方法朽色,關(guān)注我接下來的更新邻吞!
  • 完整代碼實(shí)現(xiàn)

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>



int main(int argc, const char * argv[]) {
    //保存原始數(shù)據(jù)
    int originalArray[4] = {};
    //保存猜測數(shù)據(jù)
    int guessArray[4] = {};
    //計(jì)算數(shù)字正確且位置正確的個(gè)數(shù)
    int countA = 0;
    //計(jì)算數(shù)字正確但位置錯(cuò)誤的個(gè)數(shù)
    int countB = 0;
    
    
    srand((unsigned int)time(NULL));
    for(int i = 0;i < 4;i++){
        
        bool isExist = false;
        int temp = 0;
        while(1){
            //產(chǎn)生一個(gè)隨機(jī)數(shù)
            temp = rand() % 10;
            
            //判斷是否已經(jīng)存在
            for(int j = 0;j <i;j++){
                if(originalArray[j] == temp){
                    //重復(fù)了,停止比較,繼續(xù)產(chǎn)生新的
                    isExist = true;
                    break;
                }
            }
            //1.重復(fù)了葫男,break
            //2.遍歷數(shù)組沒有重復(fù)的
            if(isExist == false){
                break;
            }
        }
        
        //邊產(chǎn)生 邊排序   插入排序
        //尋找這個(gè)數(shù)對(duì)應(yīng)的位置
        int j = 0;
        for(;j <i;j++){
            //j對(duì)應(yīng)的數(shù)字和產(chǎn)生的數(shù)字進(jìn)行比較
            if(temp < originalArray[j]){
                //j后面的內(nèi)容往后移動(dòng) 騰出空間
                for(int k = i;k > j;k--){
                    originalArray[k] = originalArray[k-1];
                }
                break;
            }
            
        }
        
        //寫入到數(shù)組中
        originalArray[j] = temp;
        
    }
    
    //開始游戲
    while (1) {
        //輸入猜測的數(shù)據(jù)
        printf("請(qǐng)輸入猜測的數(shù)字:\n");
        for (int i = 0; i < 4; i++) {
            scanf("%d",&guessArray[i]);
        }
        
        //將產(chǎn)生的數(shù)與輸入的數(shù)進(jìn)行比較
        for (int i = 0; i < 4; i++) {  //控制原始數(shù)字
            for (int j = 0; j < 4; j++) {   //控制輸入
                if (originalArray[i] == guessArray[j]) {
                    if (i == j) {
                        //數(shù)字相同且位置相同
                        countA++;
                    }else{
                        //數(shù)字相同但位置不同
                        countB++;
                    }
                }
            }
        }
        if (countA == 4) {
            //猜對(duì)了抱冷!
            printf("Congratulations!!!\n");
            break;
        }else{
            printf("%dA%dB\n",countA,countB);
            
            //清零
            countA = 0;
            countB = 0;
            
        }
        
    }
    
    
//    //輸出產(chǎn)生的數(shù)
//    for(int i =0;i <4;i++){
//        printf("%d",originalArray[i]);
//    }
//    printf("\n");
    
    return 0;
}
  • 心得體會(huì)

    通過這個(gè)小demo的練習(xí),學(xué)習(xí)到了如何去生成隨機(jī)數(shù)梢褐,盡管中間遇到了一些小障礙旺遮,但是解決問題的同時(shí)也學(xué)到了很多。當(dāng)然盈咳,最有意思的是耿眉,這個(gè)demo本身就是一款十分鍛煉邏輯思維能力的小游戲,你可以來試試鱼响,看看自己的邏輯思維能力如何
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鸣剪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子热押,更是在濱河造成了極大的恐慌西傀,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桶癣,死亡現(xiàn)場離奇詭異,居然都是意外死亡娘锁,警方通過查閱死者的電腦和手機(jī)牙寞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來莫秆,“玉大人间雀,你說我怎么就攤上這事∧魇海” “怎么了惹挟?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長缝驳。 經(jīng)常有香客問我连锯,道長,這世上最難降的妖魔是什么用狱? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任运怖,我火速辦了婚禮,結(jié)果婚禮上夏伊,老公的妹妹穿的比我還像新娘摇展。我一直安慰自己,他們只是感情好溺忧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布咏连。 她就那樣靜靜地躺著盯孙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祟滴。 梳的紋絲不亂的頭發(fā)上振惰,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音踱启,去河邊找鬼报账。 笑死,一個(gè)胖子當(dāng)著我的面吹牛埠偿,可吹牛的內(nèi)容都是我干的透罢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼冠蒋,長吁一口氣:“原來是場噩夢啊……” “哼羽圃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起抖剿,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤朽寞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后斩郎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脑融,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年缩宜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肘迎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锻煌,死狀恐怖妓布,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宋梧,我是刑警寧澤匣沼,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站捂龄,受9級(jí)特大地震影響释涛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜跺讯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一枢贿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧刀脏,春花似錦局荚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轮傍。三九已至,卻和暖如春首装,著一層夾襖步出監(jiān)牢的瞬間创夜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來泰國打工仙逻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留驰吓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓系奉,卻偏偏與公主長得像檬贰,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缺亮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容