網站首頁 編程語言 正文
本文實例為大家分享了C++實現投骰子的隨機游戲的具體代碼,供大家參考,具體內容如下
每個骰子有六面,點數分別為1、2、3、4、5、6。游戲者在程序開始時輸入一個無符號整數,作為產生隨機數的種子。
每輪投兩次骰子,第一輪如果和數為7或11則為勝,游戲結束;和數為2、3或12則為負,游戲結束;和數為其它值則將此值作為自己的點數,繼續第二輪、第三輪…直到某輪的和數等于點數則取勝,若在此前出現和數為7則為負。
rand函數
函數原型:int rand(void);
所需頭文件:
功能和返回值:求出并返回一個偽隨機數
srand函數
void srand(unsigned int seed);
參數:seed產生隨機數的種子
所需頭文件:
功能:為使rand()產生一序列偽隨機整數而設置起始點。使用1作為seed參數,可以重新初化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; //輸入隨機數種子 ? ?srand(seed); //將這個種子傳遞給rand() ? ?sum = rollDice(); //第一輪投骰子、計算和數 ? ? switch (sum) { ? ? case 7: ?//如果和數為7或11則為勝,狀態為WIN ? ? case 11: ? ? ? status = WIN; ? ? ? break; ? ? ?case 2: ?//和數為2、3或12則為負,狀態為LOSE ? ? ?case 3: ? ? ?case 12: ? ? ? ? status = LOSE; ? ? ? ? break; ? ? ? default; ?//其他情況,尚無結果,狀態為PLAYING,記下點數 ? ? ? ? status = PLAYING; ? ? ? ? myPoint = sum; ? ? ? ? cout << "point is " << myPoint <<endl; ? ? ? ? break; ? ? ? } ? ? ? while (status == PLAYING) { ?//只要狀態為PLAYING,繼續 ? ? ? ? sum = rollDice(); ? ? ? ? if (sum == myPoint) ?//某輪的和數等于點數則取勝 ? ? ? ? ? status = WIN; ? ? ? ? else if(sum == 7) ?//出現和數為7則為負 ? ? ? ? ? status = LOSE ? ? ? ? } ? ? ? ? //當狀態不為PLAYING時循環結束,輸出游戲結果 ? ? ? ? if (status == WIN) ? ? ? ? ? cout ?<< "player wins" << endl; ? ? ? ? else ? ? ? ? ? cout << "player loses" << endl; ? ? ? ? ?return 0; ? ? ? ?} ? ?? ? ? ? ?//投骰子、計算和數、輸出和數 ? ? ? ?int rollDice() { ? ? ? ? ?int die1 = 1 + rand() % 6; ?//讓一個在整個整數范圍內的數,取1至6之間。除以6取余數,這個數則會在0到5之間,再加上1,這個數就移動到1至6之間了。 ? ? ? ? ?int die2 = 1 + rand() % 6; ? ? ? ? ?int sum = die1 + die2; ? ? ? ? ?cout << "player rolled" << die1 << " + " << ? ? ? ? ?die2 << " = " << sum << endl; ? ? ? ? ?return sum; }
之前小編收藏了一段投骰子的相關代碼,分享給大家,也感謝原作者
#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
相關推薦
- 2022-07-11 Python利用xlrd?與?xlwt?模塊操作?Excel_python
- 2022-12-19 C++?Boost?Coroutine使用協程詳解_C 語言
- 2022-11-16 詳解Python中range()與xrange()的區別_python
- 2022-12-21 Android?RecyclerView四級緩存源碼層詳細分析_Android
- 2022-07-30 go語言中slice,map,channl底層原理_Golang
- 2022-04-16 c語言?數據存儲與原碼?反碼?補碼詳細解析_C 語言
- 2022-10-23 C#中數組擴容的幾種方式介紹_C#教程
- 2022-12-04 Android性能優化死鎖監控知識點詳解_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支