投骰子的随机游戏

Posted Pink.Pig

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了投骰子的随机游戏相关的知识,希望对你有一定的参考价值。

投骰子的随机游戏

每个骰子有六面,点数分别为1、2、3、4、5、6。游戏者在程序开始时输入一个无符号整数,作为产生随机数的种子。

每轮投两次骰子,第一轮如果和数为7或11则为胜,游戏结束;和数为2、3或12则为负,游戏结束;和数为其它值则将此值作为自己的点数,继续第二轮、第三轮...直到某轮的和数等于点数则取胜,若在此前出现和数为7则为负。

 

  投骰子需要一个能模拟产生随机数的函数,#include <cstdlib> 中的 int rand(void) 函数是C++库中自带的产生并返回一个伪随机数的函数。

    所谓伪随机数,即是指每当程序重新运行时产生的随机数和上次程序运行时产生的随机数相同,

      比如在第一次程序运行时产生随机数:1,8,6,4,9,3,2,在本次运行内的确为一组随机数,但当关闭程序重新运行时,产生的随机数仍为1,8,6,4,9,3,2,

  #include <cstdlib> 中的 void srand(unsigned int seed) 函数则可以解决这一问题,通过输入不同的参数 seed ,则可以为rand() 每次产生随机数设置一个起始点,

     使得每次产生的随机数不同

 

C++代码如下:

 1 #include<iostream>
 2 #include<cstdlib>
 3 using namespace std;
 4 
 5 enum GameStatus {WIN,LOSE,PLAYING};  //枚举游戏状态
 6 
 7 int rollDice() {
 8     int dice1, dice2,sum;
 9     dice1 = 1 + rand() % 6;  //将产生的随机数转成范围1-6的骰子的点数
10     dice2 = 1 + rand() % 6;
11     sum = dice1 + dice2;
12     return sum;
13 }
14 
15 int main() {
16     unsigned seed;
17     GameStatus status;
18     int sum,MyPoint;
19     cin >> seed;
20     srand(seed);
21     sum = rollDice();
22     switch (sum)
23     {
24     case 7:
25     case 11:status = WIN;
26         break;
27     case 2:
28     case 3:
29     case 12:status = LOSE;
30         break;
31     default:status = PLAYING; MyPoint = sum;
32         break;
33     }
34     while (status==PLAYING)
35     {
36         sum = rollDice();
37         if (sum == MyPoint)
38             status = WIN;
39         else if (sum == 7)
40             status = LOSE;
41     }
42     if (status == WIN)
43         cout << "player win";
44     else     //此时只有输和赢两种状态
45         cout << "player lose";
46     return 0;
47 }

以上是关于投骰子的随机游戏的主要内容,如果未能解决你的问题,请参考以下文章

tyvj P4879骰子游戏

美团点评2017秋招笔试编程题——大富翁游戏

如何在Unity 3D中掷骰子

Algs4-1.1.35模拟投骰子

基础入门题053骰子游戏

模拟算法_掷骰子游戏&&猜数游戏