日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C++實現投骰子的隨機游戲_C 語言

作者:黑盒子Key ? 更新時間: 2022-06-02 編程語言

本文實例為大家分享了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

欄目分類
最近更新