投骰子的随机游戏

投骰子的随机游戏

每个骰子有六面,点数分别为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 }

原文地址:https://www.cnblogs.com/pgzhang/p/9069916.html

时间: 2024-10-09 01:25:15

投骰子的随机游戏的相关文章

一个投骰子的小游戏

下午学着做了一个掷骰子的小游戏,感觉比较好玩.用到了自定义函数,循环和选择等知识. 还有刚开始做的时候一个简单版(第1个小板凳) 原文地址:https://www.cnblogs.com/wentian24/p/9280747.html

Algs4-1.1.35模拟投骰子

1.1.35模拟投骰子.以下代码能够计算每两个骰子之和的准确概率分布:public class Test{    public static void main(String[] args)    {        int SIDES=6;        double[] dist=new double[2*SIDES+1];        for (int i=1;i<=SIDES;i++)            for (int j=1;j<=SIDES;j++)             

随机游戏(Random伪随机函数的应用)

#游戏机有一个投币口,还有一个杠杆.当投币并拉动杠杆后,三个包含不同图片的轮盘开始转动,最后停在三幅图片上.图片有樱桃,橙子,李子,柠檬,横条,以及铃铛这几幅.三幅特定组合的图片会使玩家获得一定的收益.假设每个轮盘包含5个樱桃,5个橙子,5个李子,3个铃铛和一个横条.下面的程序模拟了拉杆拉动以后的情况.每个轮盘包含20幅图片,因此我们随机从1-20中选取数字. 1 import random 2 3 def main(): 4 for i in range(10): 5 outcome = sp

js+css实现骰子的随机转动

网上找的例子,然后增添了新的东西,在这里展示一下...... 效果图预览: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head&

2017华为机试题--投骰子问题

题目描述:骰子是一个立方体,每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6,用123456表示这个状态,放置到平面上,可以向左翻转(用L表示向左翻转1次),可以向右翻转(用R表示向右翻转1次),可以向前翻转(用F表示向前翻转1次),可以向后翻转(用B表示向右翻转1次),可以逆时针旋转(用A表示逆时针旋转90度),可以顺时针旋转(用C表示逆时针旋转90度),现从初始状态开始,根据输入的动作序列,计算得到最终的状态. 输入描述: 初始状态为:123456 输入只包含LRFBA

投骰子

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>骰子</title> <style type="text/css"> .sbing{ -webkit-perspective: 800; -webkit-perspective: 50% 50%;} #cube{ -webki

Java 两个骰子的 赌博游戏

package com.love; /** * Craps赌博游戏 * * */ public class Test08 { public static int roll(){ return (int) (Math.random() * 6 + 1); } public static void main(String[] args) { int firstPoint, currentPoint; firstPoint = currentPoint = roll() + roll(); Syste

关于RPG游戏结构撰写的相关探索上篇

本章节的目标是创造一个游戏理念.这个理念是: *简短的项目概括 *范围描述 *目标用户 *与其他游戏的区别 不要试图编写一款缺乏明确理念的RPG.因为这样可能只会产生与其他游戏雷同的项目. <ignore_js_op> 想法 在你动笔之前,你得先有一个想法.有了想法你才好构建一个引导写作的概念.这个想法可以只是一个单词或简短的句子.如果你有了一个想法,用笔在纸片上写下来,我们将使 用这个词组作为游戏的名称. <ignore_js_op> (我的想法是Chgowiz RPG,虽然这是

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

大富翁游戏,玩家根据骰子的点数决定走的步数,即骰子点数为1时可以走一步,点数为2时可以走两步,点数为n时可以走n步.求玩家走到第n步(n<=骰子最大点数且是方法的唯一入参)时,总共有多少种投骰子的方法. 输入描述: 输入包括一个整数n,(1 ≤ n ≤ 6) 输出描述: 输出一个整数,表示投骰子的方法 思路:递归的思路.n=1时,有1种方法:n=2时,有2种方法:n=3时,有4种方法,在当前n步时应该有前n-1步的方法数加上当前直接投n的方法.即f(n)=f(n-1)+f(n-2)+...+f(