貝蒂的搗蛋小游戲~(C語言)

引言:

? ? ? ? ? 前面貝蒂已經給大家介紹了選擇,循環結構~,今天貝蒂就基于這兩種結構,為大家講解一種搗蛋小游戲的設計思路和方法哦。

1.游戲要求

游戲要求:
1. 電腦?動?成1~100的隨機數
2. 玩家猜數字,猜數字的過程中,根據猜測數據的??給出?了或?了的反饋。

3. 玩家一共有五次機會,在五次內,猜對就游戲通關,猜錯就游戲失敗。

4. 游戲失敗執行懲罰措施(60s后電腦關機),若輸入我是豬,則取消關機。

2.隨機數的生成

? ? 2.1rand()函數?

1.頭文件<stdlib.h>

2.C 庫函數rand(void)?返回一個范圍在 0 到?RAND_MAX?之間的“隨機數”。RAND_MAX 是一個常量,它的默認值在不同的實現中會有所不同,但是值至少是 32767。

3.int rand (void);,void表示()內不需要填值,返回值是int類型,也就是生成那個“隨機數”

? ? 代碼實現如下:?

#include <stdio.h>
#include <stdlib.h>
int main()
{int a = rand();printf("%d\n",a);return 0;
}

? ? ? 貝蒂說:“但是rand()函數生成的“隨機數”是一種偽隨機數,是根據一個數值按照某個公式推算出來的,并不是真正的隨機數,那該怎么辦呢~”?

2.2srand()函數?

? ? ?srand()函數能間接控制rand()函數生成的值,?我們知道了rand()并不是真正的隨機數,它是根據某種算法生成的,我們自然而然想到,我們能不能通過控制srand(),來間接控制rand()呢,讓我們來實驗一下吧。

1.頭文件<stdlib.h>

2.C 庫函數srand()?播種由函數?rand?使用的隨機數發生器。

3.?void srand(unsigned int seed),不返回值。

? ? ?貝蒂說:“但是srand()如果參數部分仍是一個確定的值,rand()生成的數仍是偽隨機數,嘿嘿,瘋狂套娃~”

? ? 2.3time()函數

? ? ? ? ?我們要使srand()參數部分是一個不斷地改變量,才能生成真正的隨機數,而我們生活中常見的變量--時間,就自然而然可以成為其參數。

1.頭文件<time.h>

2.C 庫函數?time(time_t *seconds)?返回自紀元 Epoch(1970-01-01 00:00:00 UTC)起經過的時間,以秒為單位。如果?seconds?不為空,則返回值也存儲在變量?seconds?中。

3.time_t time(time_t *seconds),time_t就是無符號整數。

? ? ? 語言來描述time()函數有點復雜,但大家不用擔心,我們只要會用就行啦,生成隨機數的代碼如下:

srand((unsigned int)time(NULL));
int ret=rand()%10+1;//生成1~10的隨機數

3.主體思路

1.首先設置游戲簡易菜單,當游戲開始時,自動顯示。

2.讓玩家選擇,1為開始游戲,0為退出游戲。

3.選擇其他數字,提醒玩家輸入錯誤,重新讓玩家選擇。?

? ? 代碼實現如下:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{int input = 0;//輸入srand((unsigned int)time(NULL));//提前設置時間種子do{menu();printf("請選擇:>");scanf("%d", &input);//1 0 switch (input){case 1:game();break;case 0:printf("退出游戲\n");break;default:printf("選擇錯誤,重新選擇\n");break;}} while (input);//選擇0退出游戲return 0;
}

4.菜單的實現

? ? 貝蒂所學有限,只能設計出這樣一個簡單菜單哦~

void menu()
{printf("*******************************\n");printf("******    1. play     *********\n");printf("******    0. exit     *********\n");printf("*******************************\n");
}

5.游戲的實現?

? ? ?首先我們先生成1~100的隨機數,然后設置回答次數,每次回答錯誤次數-1,次數用完告訴玩家隨機數的值,并執行懲罰措施。

? ? ?代碼實現如下:

void game()
{int guess = 0;//生成隨機數int ret = rand() % 100 + 1;int count = 5;//回答次數printf("五次失敗觸發彩蛋哦~\n");while (count){printf("你還有 %d 次機會\n", count);printf("請輸入要猜的數字:>");scanf("%d", &guess);if (guess < ret){printf("猜小了\n");}else if (guess > ret){printf("猜大了\n");}else{printf("恭喜你,猜對了,數字是:%d\n", ret);break;}count--;}if (count == 0){printf("很遺憾,三次次機會使用完,挑戰失敗,隨機數是:%d\n", ret);punish();//執行懲罰措施}
}

? 6.懲罰措施?

? ? 6.1system()函數

1.頭文件<stdlib.h>

2. C 庫函數?int system(const char *command)?把?command?指定的命令名稱或程序名稱傳給要被命令處理器執行的主機環境,并在命令完成后返回。(簡單來說就是執行系統指令)

? ? 6.2關機指令

system("shutdown -s -t 60");//60s后關機
//不要忘記之間的空格哦

? ? ? 貝蒂說:“如果大家想直接讓電腦關機,可以把60改成0哦~,但是千萬不要告訴其他人是貝蒂告訴你的哦~”

? ? ?6.3取消關機指令

? ? ? 有關機指令自然也有取消關機指令啦,不然別人只能干看著電腦關機啦~,哈哈

? ? ? 代碼如下:

system("shutdown -a");//取消關機

? ? ? 6.4strcmp()函數

? ? ? 當玩家輸入“我是豬”的時候,則取消關機,用計算機語言表達就是比較玩家輸入的內容是否與“我是豬”這個字符串相同,可能大家第一想法是用==,但是字符串在內存中是以首元素地址存儲的,比較兩個地址肯定不同,所以我們就借用一個庫函數strcmp()來比較~

1. 頭文件<string.h>

2. 聲明:int strcmp(const char *str1, const char *str2),str1?-- 要進行比較的第一個字符串。str2?-- 要進行比較的第二個字符串。

3. 返回值:

?如果返回值小于 0,則表示 str1 小于 str2。

?如果返回值大于 0,則表示 str1 大于 str2。

?如果返回值等于 0,則表示 str1 等于 str2。

? ? ? 代碼實現:

void punish()
{printf("作為懲罰,你的電腦將在60s后關機\n");system("shutdown -s -t 60");//60s后關機printf("如果輸入我是豬則取消懲罰\n");while(1){printf("請輸入\n");char arr[20] = { 0 };gets(arr);if (strcmp(arr, "我是豬") == 0){system("shutdown -a");//取消關機break;}}
}

7完整代碼:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
void menu()
{printf("*******************************\n");printf("******    1. play     *********\n");printf("******    0. exit     *********\n");printf("*******************************\n");
}
void punish()
{printf("作為懲罰,你的電腦將在60s后關機\n");system("shutdown -s -t 60");//60s后關機printf("如果輸入我是豬則取消懲罰\n");while(1){printf("請輸入\n");char arr[20] = { 0 };gets(arr);if (strcmp(arr, "我是豬") == 0){system("shutdown -a");//取消關機break;}}
}
void game()
{int guess = 0;//生成隨機數int ret = rand() % 100 + 1;int count = 5;//回答次數printf("五次失敗觸發彩蛋哦~\n");while (count){printf("你還有 %d 次機會\n", count);printf("請輸入要猜的數字:>");scanf("%d", &guess);if (guess < ret){printf("猜小了\n");}else if (guess > ret){printf("猜大了\n");}else{printf("恭喜你,猜對了,數字是:%d\n", ret);break;}count--;}if (count == 0){printf("很遺憾,三次次機會使用完,挑戰失敗,隨機數是:%d\n", ret);punish();//執行懲罰措施}
}
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{int input = 0;//輸入srand((unsigned int)time(NULL));//提前設置時間種子do{menu();printf("請選擇:>");scanf("%d", &input);//1 0 switch (input){case 1:game();break;case 0:printf("退出游戲\n");break;default:printf("選擇錯誤,重新選擇\n");break;}} while (input);//選擇0退出游戲return 0;
}

?結言:

? ? ? ? ? ?快來叫你的好兄弟,好姐妹來玩玩吧~,嘻嘻~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/207352.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207352.shtml
英文地址,請注明出處:http://en.pswp.cn/news/207352.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

52 代碼審計-PHP項目類RCE及文件包含下載刪除

目錄 漏洞關鍵字:演示案例:xhcms-無框架-文件包含跨站-搜索或應用-includeearmusic-無框架-文件下載-搜索或應用功能-down等zzzcms-無框架-文件刪除RCE-搜索或應用-unlink、eval 漏洞關鍵字: SQL注入&#xff1a; select insert update mysql_query mysql等 文件上傳&#xff…

【FreeRTOS】信號量——簡介、常用API函數、注意事項、項目實現

在FreeRTOS中&#xff0c;信號量是一種非常重要的同步機制&#xff0c;用于實現任務間的互斥訪問和同步操作。通過信號量&#xff0c;不同的任務可以安全地共享資源&#xff0c;避免競爭和沖突&#xff0c;從而確保系統的穩定性和可靠性。本篇博客將介紹FreeRTOS中信號量的基本…

常用Nmap腳本

端口掃描類腳本 Nmap是一款非常流行的端口掃描工具&#xff0c;它可以幫助滲透測試工程師識別目標網絡上開放的端口&#xff0c;并提供有關這些端口的詳細信息。Nmap還提供了一系列基于腳本的功能&#xff0c;這些腳本可以擴展Nmap的功能&#xff0c;使其能夠更深入地探測目標網…

使用Huggingface創建大語言模型RLHF訓練流程的完整教程

ChatGPT已經成為家喻戶曉的名字&#xff0c;而大語言模型在ChatGPT刺激下也得到了快速發展&#xff0c;這使得我們可以基于這些技術來改進我們的業務。 但是大語言模型像所有機器/深度學習模型一樣&#xff0c;從數據中學習。因此也會有garbage in garbage out的規則。也就是說…

AUTOSAR CP Int-Watchdog簡介

Int Watchdog 1 簡介2 EB 中配置 TC39X3 Wdg 在代碼中使用1 簡介 內部看門狗驅動[sws_Wdg_00161]要訪問內部看門狗硬件,對應的 Wdg 模塊實例應該直接訪問看門狗服務的硬件。提示:內部看門狗驅動程序是微控制器抽象層的一部分,它允許直接的硬件訪問。注意:內部看門狗的日常服…

第21章總結 網絡通信

21.1 網絡程序設計基礎 網絡程序設計編寫的是與其他計算機進行通信的程序。Java已經將網絡程序所需要的元素封裝成不同的類&#xff0c;用戶只要創建這些類的對象&#xff0c;使用相應的方法&#xff0c;即使不具備有關的網絡知識&#xff0c;也可以編寫出高質量的網絡通信程序…

【評測腳本】機器信息評測(初版)

背景 QA的實際工作過程中,除了業務相關的測試外,也會涉及到一些評測相關的工作,甚至還要做多版本、多維度的評估分析。尤其是現在火熱的大模型,相關的評測內容更是核心中的核心。當然本文的內容只是做一些初級的機器相關的評測信息,更多更廣的評測需要更多時間的積累和總…

JVM的內存結構詳解「重點篇」

一、JVM虛擬機數據區 虛擬機棧 1、 線程私有 2、 每個方法被執行的時候都會創建一個棧幀用于存儲局部變量表&#xff0c;操作棧&#xff0c;動態鏈接&#xff0c;方法出口等信息。每一個方法被調用的過程就對應一個棧幀在虛擬機棧中從入棧到出棧的過程。 3、棧幀: 是用來存儲…

安裝mysql數據庫

1.1下載APT存儲庫&#xff08;下載鏈接&#xff09; 1.2安裝APT存儲庫&#xff08;注意好正確的路徑&#xff09; 將下載的文件傳輸到linux服務器對應目錄下后執行以下命令&#xff1a; sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb 選擇mysql5.7 然后點擊ok 然后執行 s…

應用架構——集群、分布式、微服務的概念及異同

一、什么是集群&#xff1f; 集群是指將多臺服務器集中在一起&#xff0c; 每臺服務器都實現相同的業務&#xff0c;做相同的事&#xff1b;但是每臺服務器并不是缺 一不可&#xff0c;存在的主要作用是緩解并發能力和單點故障轉移問題。 集群主要具有以下特征&#xff1a; …

JAVA使用POI向doc加入圖片

JAVA使用POI向doc加入圖片 前言 剛來一個需求需要導出一個word文檔&#xff0c;文檔內是系統某個界面的各種數據圖表&#xff0c;以圖片的方式插入后導出。一番查閱資料于是乎著手開始編寫簡化demo,有關參考poi的文檔查閱 Apache POI Word(docx) 入門示例教程 網上大多數是XXX…

el-table-column 添加 class類

正常添加class 發現沒有效果 class"customClass" 發現并沒有添加上去 看了一下官網發現 class-name 可以實現 第一步: :class-name"customClass" 第二步 : customClass: custom-column-class, 然后就發現可以了

Qt簡介、工程文件分離、創建Qt工程、Qt的幫助文檔

QT 簡介 core&#xff1a;核心模塊&#xff0c;非圖形的接口類&#xff0c;為其它模塊提供支持 gui&#xff1a;圖形用戶接口&#xff0c;qt5之前 widgets&#xff1a;圖形界面相關的類模塊 qt5之后的 database&#xff1a;數據庫模塊 network&#xff1a;網絡模塊 QT 特性 開…

IntelliJ IDEA使用Eval Reset

文章目錄 IntelliJ IDEA使用Eval Reset說明具體操作 IntelliJ IDEA使用Eval Reset 說明 操作系統&#xff1a;windows10 版本&#xff1a;2020.1 IntelliJ IDEA安裝可查看&#xff1a;安裝教程 具體操作 添加&#xff0c;輸入網址 https://plugins.zhile.io然后搜索“IDE E…

IntelliJ IDEA安裝

文章目錄 IntelliJ IDEA安裝說明下載執行安裝 IntelliJ IDEA安裝 說明 操作系統&#xff1a;windows10 版本&#xff1a;2020.1 下載 官網地址 執行安裝

奇點云2023數智科技大會來了,“雙12”直播見!

企業數字化進程深入的同時&#xff0c;也在越來越多的新問題中“越陷越深”&#xff1a; 數據暴漲&#xff0c;作業量和分析維度不同以往&#xff0c;即便加了機器&#xff0c;仍然一查就崩&#xff1b; 終于搞定新增渠道數據的OneID融合&#xff0c;又出現幾個渠道要變更&…

自動定量包裝機市場研究: 2023年行業發展潛力分析

中國包裝機械業取得了快速發展&#xff0c;但也出現了一些低水平重復建設現象。據有關資料顯示&#xff0c;與工業發達國家相比&#xff0c;中國食品和包裝機械產品品種缺乏25%-30%&#xff0c;技術水平落后15-25年。我國包裝專用設備制造行業規模以上企業有319家&#xff0c;主…

Vue3實現一個拾色器功能

? <template><div class"color"><button v-if"hasEyeDrop" click"nativePick">點擊取色</button><input v-else type"color" input"nativePick" v-model"selectedColor" /><p&…

Markdown從入門到精通

Markdown從入門到精通 文章目錄 Markdown從入門到精通前言一、Markdown是什么二、Markdown優點三、Markdown的基本語法3.1 標題3.2 字體3.3 換行3.4 引用3.5 鏈接3.6 圖片3.7 列表3.8 分割線3.9 刪除線3.10 下劃線3.11 代碼塊3.12 表格3.13 腳注3.14 特殊符號 四、Markdown的高…

php爬蟲規則與robots.txt講解

在進行網頁爬蟲時&#xff0c;有一些規則需要遵守&#xff0c;以避免違反法律&#xff0c;侵犯網站隱私和版權&#xff0c;以及造成不必要的麻煩。以下是一些常見的PHP爬蟲規則&#xff1a; 1. 尊重網站的使用條款&#xff1a;在開始爬取之前&#xff0c;請確保你閱讀并理解了…