投骰子——(隨機游戲的控制)

精華點在于:利用封裝,函數之間的良好調用,從而清晰明了的解決問題。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
# include<stdlib.h>
# include<time.h>
# include"math.h"
# define ARR_LEN 10
# define MAX_NUM 1000
# define _NUM 6
/*
* 第一次擲的時候:如果點數之和為 7 或 11 則獲勝;
如果點數之和為2、3或12則落敗;
其他情況下的點數之和稱為“目標”,繼續投擲兩個骰子。
在后續的投擲中:如果玩家再次擲出“目標”點數則獲勝;
如果擲出7則落敗;
其他情況都忽略,繼續投擲兩個骰子。
在每一局游戲結束時,程序都要詢問用戶是否再玩一次,如果用戶輸入的回答不是 y 或 Y ,那么就結束游戲,程序此時要打印顯示勝敗的次數。
* 
* 
*/
/*
兩個篩子的和 作為一個隨機數,
區別在于 第一次和其他幾次的輸贏規律是不一樣的
第一次 結果的和如果是7/11則是獲勝  =》結束
如果是2、3、12則識別 =》結束
其他 情況則記錄目標  =》第二次投擲其他次數:再次投擲 
若是第二次是目標數 =》勝利 結束:
如果是7 =>失敗 是否結束
其他情況忽略繼續rand確定贏的條件,第一次贏是7/11, 2/3/12是輸 其他都是繼續投擲并且存儲其他的值,直達再次投擲出該和,而且如果和是7是失敗。
封裝一個計算兩次投擲的和控制在2~12之間
再封裝一個是用于判斷是否贏得游戲 包含第一次投擲和接下來幾次投擲,知道此輪游戲結束
在一輪游戲結束之后 在看是否繼續執行游戲,相應的需要統計贏和輸的次數
*/
# include<stdbool.h>
//游戲開始
bool play() {//游戲的輸贏 由bool值來得知int sum = roll_play();printf("You rolled: %d\n", sum);if (sum == 7 || sum == 11) {printf("You win!\n");return true;//贏了游戲就直接退出 由主函數來得知該玩家是否進行下一輪}if (sum == 2 || sum == 3 || sum == 12) {printf("You lose!\n"); //輸了游戲就直接退出 由主函數來得知該玩家是否進行下一輪return false;} //只要沒退出函數 執行到了這一步 就是進入其他情況 其他情況由循環進行//進行之前記錄之前的點數,其他情況的循環 保證一點就是找到一樣的目標就是贏得游戲//否則繼續投擲int target = sum;printf("Your point is: %d\n", sum);while (true) {//否則繼續投擲sum = roll_play();printf("You rolled: %d\n", sum);if (sum == target) {printf("You win!\n");return true;}if (sum == 7) {printf("You lose!\n");return false;}}
}
//兩次投擲的和 結果
int roll_play(void) {int num1 = rand() % 6 + 1;int num2 = rand() % 6 + 1;int sum = num1 + num2;return sum;}
//主函數只需要保證是否需要繼續游戲 另外兩個函數分別是進行骰子的投擲,以及按照游戲規則的進行。
int main(void) {char play_;int win = 0, lose = 0;srand(time(NULL));//產生一個序列的數就可以do {play() ? win++ : lose++;printf("Play again? (y/n)\n");scanf(" %c", &play_);//為了保證空格y的情況依舊可以正常運行 在%c前面加一個空格來讀走空格while (getchar() != '\n');//清空輸入緩存 防止多個yyy在緩沖區內} while (play_ == 'y' || play_ == 'Y');printf("You win: %d, lose: %d\n", win, lose);return 0;
}       

在這里插入圖片描述

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

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

相關文章

hpc中查看顯存占用,等效nvidia-smi

nvidia-smi在hpc中無法使用&#xff0c; 但是可以通過以下方法查看應用程序占用的顯存 先執行程序&#xff0c;之后 bjobs輸出 可以看到使用的是gpu01節點 之后 ssh gpu01

react antd中transfer穿梭框組件中清除搜索框內容

如圖&#xff1a;需要清除search搜索框內容 antd的transfer穿梭框組件未提供入口修改input框的值。 2種方法修改。 1、直接操作dom元素設置值&#xff08;不推薦&#xff09; useEffect(() > {const searchInput document.querySelector(.ant-transfer-list-search input)…

Proteus仿真小技巧(隔空連線)

用了好幾天Proteus了.總結一下使用的小技巧. 目錄 一.隔空連線 1.打開添加網絡標號 2.輸入網絡標號 二.常用元件 三.運行仿真 四.總結 一.隔空連線 引出一條線,并在末尾點一下. 1.打開添加網絡標號 選擇添加網絡標號, 也可以先點擊按鈕,再去選擇線(注意不要點端口) 2.…

人力資源(HR)OKR 案例

HR人員 #OKR# 是一個很好的方法來建立一致性&#xff0c;吸引團隊成員&#xff0c;并實現高績效。 在本文中&#xff0c;我們將回答以下問題&#xff1a; 如何寫好HR OKR &#xff1f; 什么是好的HR OKR 的例子 &#xff1f; 我應該在我的HR OKR 中填寫什么 &#xff1f; 如何…

DelayQueue原理分析

1.簡介 DelayQueue同樣也是適用于并發環境下的容器之一&#xff0c;該容器屬于阻塞隊列的一種&#xff0c;其底層數據結構是PriorityQueue&#xff0c;主要應用于執行定時任務和緩存過期刪除的場景。 DelayQueue也是線程安全的&#xff0c;它通過內部的ReentrantLock實現了線程…

Java 三種主流的消息中間件 RabbitMQ、Kafka 和 RocketMQ 特點以及適用,使用場景 學習總結

一、簡單總結 RabbitMQ 特點&#xff1a; 基于AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;協議&#xff0c;這是一個開放的標準&#xff0c;支持多種語言客戶端。支持復雜的消息路由功能&#xff0c;如Direct, Topic, Fanout, Headers交換機類型&#xff0…

java.io.IOException: setDataSource failed.: status=0x80000000異常分析及解決

問題描述&#xff1a; 做一款新得音樂播放器&#xff0c;播放音樂閃退Crash&#xff0c;看到最后報告的異常是IO異常&#xff1a;java.io.IOException: setDataSource failed.: status0x80000000 錯誤堆棧如下 08-09 17:51:34.452 8220-8220/com.xx E/ARouter::: InstantRun …

Spring Boot 實現 RabbitMQ 監聽消息的幾種方式

Spring Boot 實現 RabbitMQ 監聽消息的幾種方式 1. RabbitListener 注解方式2. MessageListener 接口方式3. MessageListenerAdapter 適配器方式4. RabbitHandler 注解方式 Spring Boot 實現 RabbitMQ 監聽消息的方式有以下幾種&#xff1a; RabbitListener 注解方式&#xff1…

[數據集][目標檢測]狗臉檢測數據集VOC+YOLO格式6154張1類別

數據集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路徑的txt文件&#xff0c;僅僅包含jpg圖片以及對應的VOC格式xml文件和yolo格式txt文件) 圖片數量(jpg文件個數)&#xff1a;6154 標注數量(xml文件個數)&#xff1a;6154 標注數量(txt文件個數)&#xff1a;6154 標注…

【代碼隨想錄算法訓練營第37期 第十一天 | LeetCode20. 有效的括號、1047. 刪除字符串中的所有相鄰重復項、150. 逆波蘭表達式求值】

代碼隨想錄算法訓練營第37期 第十一天 | LeetCode20. 有效的括號、1047. 刪除字符串中的所有相鄰重復項、150. 逆波蘭表達式求值 一、20. 有效的括號 解題代碼C&#xff1a; class Solution { public:bool isValid(string s) {stack<char> stk;for(int i 0; s[i]; i )…

dpc++預研

1 基于oneAPI工具的加速圖像處理算法 2 使用英特爾oneAPI改進圖像處理中的邊緣檢測算法 3 初學DPC&#xff08;1&#xff09; 4 DpC(DpCpp)入門上手指南 5 英特爾oneAPI——統一編程模型和跨架構編程語言DPC詳細介紹與模板匹配算法實例 6 Intel DPC安裝與使用 7 如何看待…

如何查看mysql使用的內存

要查看MySQL使用的內存&#xff0c;我們可以通過多種方式來獲取相關信息。以下是幾種常見的方法&#xff0c;包括使用命令行工具、MySQL的系統變量以及查詢information_schema數據庫。 1. 使用SHOW STATUS命令 我們可以使用SHOW STATUS命令來查看MySQL服務器狀態&#xff0c;…

Winsock I/O 模型:性能和可擴展性的關鍵

目錄 引言 Select模型 簡介 主要特點 優點 缺點 工作原理 示例用法 WSAAsyncSelect異步I/O模型 簡介 工作原理 主要步驟 優點 缺點 示例代碼 WSAEventSelect事件選擇模型 簡介 工作原理 主要步驟 優點 缺點 示例代碼 重疊I/O模型 簡介 工作原理 主要優…

網絡編程 一

一、UDP socket api的使用 Java 把系統原生的封裝了. 核心的類有兩個: 1 -> DatagramSocket 操作系統中,有一類文件,就叫socket文件. socket文件,抽象表示了 " 網卡"這樣的硬件設備. 進行網絡通信最核心的硬件設備網卡 通過網卡發送數據,就是寫…

各手機品牌【短信收件箱數據庫列名】對比:inbox的column橫向對比

參考資料: https://blog.csdn.net/qq_35427437/article/details/85678647 https://www.cnblogs.com/bill-technology/p/4130917.html <font colorred>threads是存放會話的數據表&#xff0c;sms是存放短信的數據表&#xff0c;pdu是存放彩信的數據表</font> | 含義…

0基礎從前端到Web3 —— Mine Clearance Frontend(二)

在一的基礎上繼續往下&#xff0c;本篇主要是鏈上調用部分&#xff0c;讓整個項目可以進行最基本的掃雷游戲。 S u i M o v e \mathit {Sui\ Move} Sui Move 鏈上部署的自主實現的簡單掃雷游戲可以點擊查看&#xff0c;只不過這里將區域大小擴大為了 10 20 \text {10}\ \tim…

力扣Hot100-73矩陣置零(標記數組)

給定一個 m x n 的矩陣&#xff0c;如果一個元素為 0 &#xff0c;則將其所在行和列的所有元素都設為 0 。請使用 原地 算法。 示例 1&#xff1a; 輸入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 輸出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]]示例 2&#xff1a; 輸入&…

大模型面試--大模型(LLMs)基礎面

大模型&#xff08;LLMs&#xff09;基礎面 1. 目前主流的開源模型體系有哪些&#xff1f; 目前主流的開源大模型體系有以下幾種&#xff1a; 1. Transformer 系列 Transformer 模型是深度學習中的一類重要模型&#xff0c;尤其在自然語言處理&#xff08;NLP&#xff09;領…

JavaWeb Sevelet學習 創建Sevelet程序

Servlet 是JavaWeb中的開發動態Web一門技術 是由Sun公司提供的一個接口&#xff0c;允許開發者編寫運行在服務器&#xff08;Tomcat&#xff09;上的Java程序&#xff0c;這些程序可以 生成動態網頁內容&#xff0c; 響應客戶端的請求。簡單來說&#xff0c;Servlet就是Java E…

今日arXiv最熱大模型論文:LoRA又有新用途,學得少忘得也少,成持續學習關鍵!

自大模型&#xff08;LLM&#xff09;誕生以來&#xff0c;苦于其高成本高消耗的訓練模式&#xff0c;學界和業界也在努力探索更為高效的參數微調方法。其中Low-Rank Adaptation&#xff08;LoRA&#xff09;自其誕生以來&#xff0c;就因其較低的資源消耗而受到廣泛關注和使用…