C語(yǔ)言版猜數(shù)字小游戲
本文實(shí)例為大家分享了C語(yǔ)言版猜數(shù)字小游戲的具體代碼,供大家參考,具體內(nèi)容如下
清楚實(shí)現(xiàn)目標(biāo)
做任何一個(gè)小項(xiàng)目之前,我們首先都需要明確自己想要實(shí)現(xiàn)的目標(biāo).
所以猜數(shù)字游戲的實(shí)現(xiàn)目標(biāo)是啥?
- 電腦隨機(jī)給出一個(gè)目標(biāo)數(shù)字,玩家進(jìn)行猜測(cè)
- 電腦會(huì)根據(jù)玩家猜測(cè)的數(shù)字,提示猜大了還是小了
- 直到猜對(duì)為止,一輪游戲結(jié)束.
- 游戲結(jié)束會(huì)詢問(wèn)是否繼續(xù).1代表繼續(xù),0代表不繼續(xù).
- 游戲模式有3種(簡(jiǎn)單,普通,困難),對(duì)應(yīng)內(nèi)容分別為猜25次,15次,5次
- 游戲會(huì)記錄你的戰(zhàn)績(jī),在菜單中按2表示查詢戰(zhàn)績(jī).
明確邏輯結(jié)構(gòu)
清楚的知道了想要實(shí)現(xiàn)的目標(biāo),那最開始的步驟就是搭建邏輯結(jié)構(gòu).
所以邏輯結(jié)構(gòu)是啥呢?
有一個(gè)菜單提示,內(nèi)容為按1代表開始/繼續(xù)游戲,2代表查詢戰(zhàn)績(jī),0代表退出游戲,其他按鍵提示輸入錯(cuò)誤
輸入2后,會(huì)再次跳出菜單.提示輸入錯(cuò)誤后,可以重新輸入命令
輸入1后,會(huì)詢問(wèn)游戲模式,然后開始.
所以邏輯結(jié)構(gòu)如下:
#include <stdio.h> int computer = 0; //電腦的戰(zhàn)績(jī) int player = 0; //玩家的戰(zhàn)績(jī) int main() { int input = 0;//鍵入命令 do { menu();//菜單提示模塊,后面進(jìn)行實(shí)現(xiàn) scanf("%d", &input); switch (input) { case 0: printf("成功退出游戲\n"); break; case 1: playgame(); //玩游戲模塊,后面進(jìn)行實(shí)現(xiàn) store(); //存儲(chǔ)戰(zhàn)績(jī)模塊 break; case 2: query();//查詢戰(zhàn)績(jī)模塊,后面進(jìn)行實(shí)現(xiàn) break; } } while (input); return 0; }
功能細(xì)節(jié)實(shí)現(xiàn)
菜單模塊
按照目標(biāo)要求,菜單木塊代碼如下:
void menu() { printf( "*******************************************************\n" "******************* 0----退出游戲 ********************\n" "******************* 1----開始游戲 ********************\n" "******************* 2----查詢戰(zhàn)績(jī) ********************\n" "*******************************************************\n" ); }
儲(chǔ)存戰(zhàn)績(jī)
這個(gè)的目標(biāo)是無(wú)論啥時(shí)候打開游戲,都會(huì)記錄之前玩過(guò)的成績(jī).
void store() { FILE* fp = fopen("grade.txt","w+"); if (fp == NULL) { exit(-1); } else { fprintf(fp,"computer : player = %d : %d\n",computer,player); } fclose(fp); }
游戲模塊
游戲模塊的功能是:
玩家選擇游戲模式,
然后電腦首先會(huì)隨機(jī)給出一個(gè)玩家需要猜測(cè)的數(shù)字.
大概提示數(shù)字在哪個(gè)范圍.
玩家開始猜測(cè).并且每猜測(cè)一次,都會(huì)提示還剩余幾次機(jī)會(huì).
void playgame() { srand(time(NULL)); //隨機(jī)數(shù)種子 int target = rand() % 1001;//代表電腦的隨機(jī)數(shù) int input = 0, num = 0; //input 代表游戲猜測(cè)的數(shù)字,num代表猜測(cè)剩余次數(shù) num = mode(); //游戲模式選擇模塊,后面進(jìn)行實(shí)現(xiàn) while (1) { printf("請(qǐng)輸入你認(rèn)為是答案的數(shù)字:\n"); scanf("%d",&input); if (num == 0) { break; } if (input > target) { printf("猜大了,再試試\n"); } else if (input > target) { printf("猜小了,再試試\n"); } else { printf("恭喜你,猜對(duì)了\n"); break; } num--; printf("你還剩余%d次機(jī)會(huì)哦~~~~\n", num); } if (!num) { printf("很遺憾,你輸了\n"); computer++; //標(biāo)記戰(zhàn)績(jī) } else { printf("恭喜你,你贏了\n"); player++; } printf("是否還繼續(xù)游戲呢?\n");//這一步是提醒玩家是否繼續(xù). }
游戲模式選擇
int mode() { char str[20] = { 0 }; int num = 0; printf("請(qǐng)輸入游戲模式:簡(jiǎn)單 普通 困難\n:"); scanf("%s", str); if (strcmp("簡(jiǎn)單", str) == 0) { num = 25; } else if (strcmp("普通", str) == 0) { num = 15; } else { num = 5; } return num; }
戰(zhàn)績(jī)查詢
void query() { FILE* fp = fopen("grade.txt","r"); int a = 0, b = 0; char p[60] = { 0 }; if (fp == NULL) { exit(-1); } else { fgets(p,60,fp); printf("%s\n",p); } fclose(fp); printf("游戲是否繼續(xù)?\n"); }
成品展示
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> int computer = 0; //電腦的戰(zhàn)績(jī) int player = 0; //玩家的戰(zhàn)績(jī) void menu() { printf( "*******************************************************\n" "******************* 0----退出游戲 *******************\n" "******************* 1----開始游戲 *******************\n" "******************* 2----查詢戰(zhàn)績(jī) *******************\n" "*******************************************************\n" ); } int mode() { char str[20] = { 0 }; int num = 0; printf("請(qǐng)輸入游戲模式:簡(jiǎn)單 普通 困難\n:"); scanf("%s", str); if (strcmp("簡(jiǎn)單", str) == 0) { num = 25; } else if (strcmp("普通", str) == 0) { num = 15; } else { num = 5; } return num; } void playgame() { srand(time(NULL)); //隨機(jī)數(shù)種子 int target = rand() % 1001;//控制數(shù)字在0-1000 int input = 0, num = 0; //input 代表游戲猜測(cè)的數(shù)字,num代表猜測(cè)剩余次數(shù) num = mode(); //游戲模式選擇模塊 while (1) { printf("請(qǐng)輸入你認(rèn)為是答案的數(shù)字(0-1000):\n"); scanf("%d",&input); if (num == 0) { break; } if (input > target) { printf("猜大了,再試試\n"); } else if (input < target) { printf("猜小了,再試試\n"); } else { printf("恭喜你,猜對(duì)了\n"); break; } num--; printf("你還剩余%d次機(jī)會(huì)哦~~~~\n", num); } if (!num) { printf("很遺憾,你輸了\n"); computer++; //標(biāo)記戰(zhàn)績(jī) } else { printf("恭喜你,你贏了\n"); player++; } printf("是否還繼續(xù)游戲呢?\n");//這一步是提醒玩家是否繼續(xù). } void query() { FILE* fp = fopen("grade.txt","r"); int a = 0, b = 0; char p[60] = { 0 }; if (fp == NULL) { exit(-1); } else { fgets(p,60,fp); printf("%s\n",p); } fclose(fp); printf("游戲是否繼續(xù)?\n"); } void store() { FILE* fp = fopen("grade.txt","w"); if (fp == NULL) { exit(-1); } else { fprintf(fp,"computer : player = %d : %d\n",computer,player); } fclose(fp); } int main() { int input = 0;//鍵入命令 do { menu();//菜單提示模塊,后面進(jìn)行實(shí)現(xiàn) scanf("%d", &input); switch (input) { case 0: printf("成功退出游戲\n"); break; case 1: playgame(); //玩游戲模塊,后面進(jìn)行實(shí)現(xiàn) store(); //存儲(chǔ)戰(zhàn)績(jī)模塊 break; case 2: query();//查詢戰(zhàn)績(jī)模塊,后面進(jìn)行實(shí)現(xiàn) break; } } while (input); return 0; }
小提示:
成品中的戰(zhàn)績(jī)查詢實(shí)際并沒有真的實(shí)現(xiàn)記錄所有次戰(zhàn)績(jī),每次啟動(dòng)程序戰(zhàn)績(jī)都會(huì)從0:0更新,那么怎么實(shí)現(xiàn)這個(gè)功能呢?
留給大家思考一下.
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語(yǔ)言實(shí)現(xiàn)猜數(shù)字小游戲
- C語(yǔ)言實(shí)現(xiàn)的猜數(shù)字小游戲
- C語(yǔ)言實(shí)現(xiàn)猜數(shù)字的小游戲
- 利用C語(yǔ)言實(shí)現(xiàn)猜數(shù)字小游戲
- C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單猜數(shù)字小游戲
- c語(yǔ)言輕松實(shí)現(xiàn)猜數(shù)字小游戲
- C語(yǔ)言實(shí)現(xiàn)猜數(shù)字小游戲的示例代碼
- C語(yǔ)言實(shí)現(xiàn)猜數(shù)字小游戲的示例代碼
- C?語(yǔ)言實(shí)現(xiàn)猜數(shù)字小游戲完整示例代碼
相關(guān)文章
C語(yǔ)言算法練習(xí)之?dāng)?shù)組求素?cái)?shù)
這篇文章主要為大家介紹了C語(yǔ)言算法練習(xí)中數(shù)組求素?cái)?shù)的實(shí)現(xiàn)方法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C語(yǔ)言有一定幫助,需要的可以參考一下2022-09-09opencv利用霍夫變換檢測(cè)直線進(jìn)行圖片校正
這篇文章主要為大家詳細(xì)介紹了opencv利用霍夫變換檢測(cè)直線對(duì)圖片進(jìn)行校正,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之堆、堆排序的分析及實(shí)現(xiàn)
堆是一個(gè)近似完全二叉樹的結(jié)構(gòu),并同時(shí)滿足堆積的性質(zhì),下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之堆、堆排序的分析及實(shí)現(xiàn)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04windows下vscode環(huán)境c++利用matplotlibcpp繪圖
本文主要介紹了windows下vscode環(huán)境c++利用matplotlibcpp繪圖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02C++實(shí)現(xiàn)經(jīng)典24點(diǎn)紙牌益智游戲
這篇文章主要介紹了C++實(shí)現(xiàn)經(jīng)典24點(diǎn)紙牌益智游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03C語(yǔ)言判斷一個(gè)數(shù)是否為素?cái)?shù)方法解析
這篇文章主要介紹了C語(yǔ)言判斷一個(gè)數(shù)是否為素?cái)?shù)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07一篇文章帶你用C語(yǔ)言玩轉(zhuǎn)結(jié)構(gòu)體
本文主要介紹C語(yǔ)言 結(jié)構(gòu)體的知識(shí),學(xué)習(xí)C語(yǔ)言肯定需要學(xué)習(xí)結(jié)構(gòu)體,這里詳細(xì)說(shuō)明了結(jié)構(gòu)體并附示例代碼,供大家參考學(xué)習(xí),有需要的小伙伴可以參考下2021-09-09