服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C++实现投骰子的随机游戏

C++实现投骰子的随机游戏

2022-11-02 12:00黑盒子Key C/C++

这篇文章主要为大家详细介绍了C++实现投骰子的随机游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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()。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#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;
}

之前小编收藏了一段投骰子的相关代码,分享给大家,也感谢原作者

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#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

延伸 · 阅读

精彩推荐
  • C/C++教你5分钟轻松搞定内存字节对齐

    教你5分钟轻松搞定内存字节对齐

    随便google一下,人家就可以跟你解释的,一大堆的道理,我们没怎么多时间,讨论为何要对齐.直入主题,怎么判断内存对齐规则,sizeof的结果怎么来的,请牢记以下...

    C语言教程网7432020-12-29
  • C/C++浅析C语言中的sizeof

    浅析C语言中的sizeof

    sizeof是C/C++中的一个操作符(operator),作用就是返回一个对象或者类型所占的内存字节数。返回值类型为size_t,在头文件stddef.h中定义...

    C语言教程网2142020-12-17
  • C/C++c++优先队列用法知识点总结

    c++优先队列用法知识点总结

    在本篇文章里小编给大家整理的是关于c++优先队列用法知识点总结内容,需要的朋友可以参考学习下。...

    藏色散人9062021-08-16
  • C/C++C++入门笔记之std::vector容器详解

    C++入门笔记之std::vector容器详解

    这篇文章主要给大家介绍了关于C++之std::vector容器的相关资料,vector,一种随机访问的数组类型,它提供了对数组元素的快速、随机访问,以及在序列尾部快速、...

    Code_DZhangTeng6472021-11-22
  • C/C++C++实现视频流转换为图片方式

    C++实现视频流转换为图片方式

    今天小编就为大家分享一篇C++实现视频流转换为图片方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    Liu_LongPo7572021-08-06
  • C/C++C语言 数据结构链表的实例(十九种操作)

    C语言 数据结构链表的实例(十九种操作)

    这篇文章主要介绍了C语言 数据结构链表的实例(十九种操作)的相关资料,需要的朋友可以参考下...

    hughdong10142021-05-24
  • C/C++Qt实现网络聊天室的示例代码

    Qt实现网络聊天室的示例代码

    本文主要介绍了Qt实现网络聊天室,实现一个在线聊天室, 使用tcp对客户端和服务器端进行通讯。具有一定的参考价值,具有一定的参考价值,...

    进击的汪sir7672021-11-17
  • C/C++wince禁止程序标题栏上的退出按钮示例

    wince禁止程序标题栏上的退出按钮示例

    这篇文章主要介绍了wince禁止程序标题栏上的退出按钮示例,需要的朋友可以参考下...

    C语言程序设计8682021-01-15