網(wǎng)站首頁 編程語言 正文
本文實(shí)例為大家分享了C++實(shí)現(xiàn)投骰子的隨機(jī)游戲的具體代碼,供大家參考,具體內(nèi)容如下
每個(gè)骰子有六面,點(diǎn)數(shù)分別為1、2、3、4、5、6。游戲者在程序開始時(shí)輸入一個(gè)無符號(hào)整數(shù),作為產(chǎn)生隨機(jī)數(shù)的種子。
每輪投兩次骰子,第一輪如果和數(shù)為7或11則為勝,游戲結(jié)束;和數(shù)為2、3或12則為負(fù),游戲結(jié)束;和數(shù)為其它值則將此值作為自己的點(diǎn)數(shù),繼續(xù)第二輪、第三輪…直到某輪的和數(shù)等于點(diǎn)數(shù)則取勝,若在此前出現(xiàn)和數(shù)為7則為負(fù)。
rand函數(shù)
函數(shù)原型:int rand(void);
所需頭文件:
功能和返回值:求出并返回一個(gè)偽隨機(jī)數(shù)
srand函數(shù)
void srand(unsigned int seed);
參數(shù):seed產(chǎn)生隨機(jī)數(shù)的種子
所需頭文件:
功能:為使rand()產(chǎn)生一序列偽隨機(jī)整數(shù)而設(shè)置起始點(diǎn)。使用1作為seed參數(shù),可以重新初化rand()。
#include <iostream> #include <cstdlib> using namespace std; enum GameStatus { WIN,LOSE,PLAYING }; ?int main() { ? ?int sum, myPoint; ? ?GameStatus status; ? ?unsigned seed; ? ?int rollDice(); ? ?cout<<"Please enter an unsigned integer:"; ? ?cin >> seed; //輸入隨機(jī)數(shù)種子 ? ?srand(seed); //將這個(gè)種子傳遞給rand() ? ?sum = rollDice(); //第一輪投骰子、計(jì)算和數(shù) ? ? switch (sum) { ? ? case 7: ?//如果和數(shù)為7或11則為勝,狀態(tài)為WIN ? ? case 11: ? ? ? status = WIN; ? ? ? break; ? ? ?case 2: ?//和數(shù)為2、3或12則為負(fù),狀態(tài)為L(zhǎng)OSE ? ? ?case 3: ? ? ?case 12: ? ? ? ? status = LOSE; ? ? ? ? break; ? ? ? default; ?//其他情況,尚無結(jié)果,狀態(tài)為PLAYING,記下點(diǎn)數(shù) ? ? ? ? status = PLAYING; ? ? ? ? myPoint = sum; ? ? ? ? cout << "point is " << myPoint <<endl; ? ? ? ? break; ? ? ? } ? ? ? while (status == PLAYING) { ?//只要狀態(tài)為PLAYING,繼續(xù) ? ? ? ? sum = rollDice(); ? ? ? ? if (sum == myPoint) ?//某輪的和數(shù)等于點(diǎn)數(shù)則取勝 ? ? ? ? ? status = WIN; ? ? ? ? else if(sum == 7) ?//出現(xiàn)和數(shù)為7則為負(fù) ? ? ? ? ? status = LOSE ? ? ? ? } ? ? ? ? //當(dāng)狀態(tài)不為PLAYING時(shí)循環(huán)結(jié)束,輸出游戲結(jié)果 ? ? ? ? if (status == WIN) ? ? ? ? ? cout ?<< "player wins" << endl; ? ? ? ? else ? ? ? ? ? cout << "player loses" << endl; ? ? ? ? ?return 0; ? ? ? ?} ? ?? ? ? ? ?//投骰子、計(jì)算和數(shù)、輸出和數(shù) ? ? ? ?int rollDice() { ? ? ? ? ?int die1 = 1 + rand() % 6; ?//讓一個(gè)在整個(gè)整數(shù)范圍內(nèi)的數(shù),取1至6之間。除以6取余數(shù),這個(gè)數(shù)則會(huì)在0到5之間,再加上1,這個(gè)數(shù)就移動(dòng)到1至6之間了。 ? ? ? ? ?int die2 = 1 + rand() % 6; ? ? ? ? ?int sum = die1 + die2; ? ? ? ? ?cout << "player rolled" << die1 << " + " << ? ? ? ? ?die2 << " = " << sum << endl; ? ? ? ? ?return sum; }
之前小編收藏了一段投骰子的相關(guān)代碼,分享給大家,也感謝原作者
#include<stdio.h> #include<stdlib.h> #include<time.h> ? ? int main() { ?? ?int winCount, lostCount;? ?? ?int first, second; ?? ?int target; ?? ?char input; ? ?? ?winCount=lostCount=0; ? ?? ?srand(time(0)); ?? ?first=rand()%6+1; ?? ?second=rand()%6+1; ? ?? ?printf("%d %d\n",first,second); ? ? ?? ?target=first+second; ? ?? ?if(target==7 || target==11) ?? ?{ ?? ??? ?printf("you win\n"); ?? ??? ?winCount++; ?? ?} ?? ?else ?? ?{ ?? ??? ?if(target==2 || target==3 || target==12) ?? ??? ?{ ?? ??? ??? ?printf("you lost\n"); ?? ??? ??? ?lostCount++; ?? ??? ?} ?? ??? ?else ?? ??? ?{ ?? ??? ??? ?printf("proceed or not?"); ?? ??? ??? ?input=getchar(); ? ?? ??? ??? ?while(input=='Y' || input=='y') ?? ??? ??? ?{ ?? ??? ??? ??? ?first=rand()%6+1; ?? ??? ??? ??? ?second=rand()%6+1; ? ?? ??? ??? ??? ?printf("%d %d\n",first,second); ?? ? ?? ??? ??? ??? ?if(target==first+second){ ?? ??? ??? ??? ??? ?printf("you win\n"); ?? ??? ??? ??? ??? ?winCount++; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else ?? ??? ??? ??? ??? ?if (first+second==7){ ?? ??? ??? ??? ??? ??? ?printf("you lost\n"); ?? ??? ??? ??? ??? ??? ?lostCount++; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ? ?? ??? ??? ??? ?printf("proceed or not?"); ?? ??? ??? ??? ?getchar(); ?? ??? ??? ??? ?input=getchar(); ?? ??? ??? ?} ?? ??? ?} ?? ?} ? ?? ?printf("win=%d, lost=%d\n",winCount, lostCount); ?? ?return 0; ? }
原文鏈接:https://blog.csdn.net/weixin_46610835/article/details/105451677
相關(guān)推薦
- 2023-08-13 為什么Git需要配置ssh密鑰,怎么配置?
- 2022-04-01 Kubernetes命令行工具--kubectl管理
- 2022-09-07 python讀取mat文件中的struct問題_python
- 2023-01-09 Android自定義ViewGroup實(shí)現(xiàn)九宮格布局_Android
- 2023-02-25 pandas?loc?iloc?ix用法詳細(xì)分析_python
- 2022-04-17 python 提取出字符串括號(hào)中的內(nèi)容
- 2023-07-26 webpack優(yōu)化代碼運(yùn)行之Code split
- 2023-05-31 Pandas提取含有指定字符串的行(完全匹配,部分匹配)_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支