C ++让腔室适用于老虎机程序

时间:2015-10-24 02:24:47

标签: c++

情况

嘿伙计们,所以我现在正在做一个项目。基本上我需要制作传统的老虎机,或水果机,或者单机强盗#34;。它是一个3 x 1 x 3字符的网格,只要用户“拉动杠杆”就会改变#34;

我现在已经从头顶完成了所有代码,但我陷入了僵局,我想知道你们是否可能提供帮助。

我使用单词"chamber",但是将其视为单词"Wheel",并且在任何给定时间,屏幕上只显示三个值,因此我将这些称为"Blocks"

我尝试使用单室显示输出,例如:

   2
   3
   4

其中我生成随机数3,并输出4和2,因为它们在腔室上相邻。这将是房间的起始位置,然后我可以操纵它。

显然,为了获得转换并显示在屏幕上的随机数,我需要将该整数转换为char*以后我将需要的图标,这不是很好我需要做一个常数char

我有两个问题。

1)首先,我称我的spinChamer()方法3次(因为我有3个房间),但方法中的随机数生成器似乎对输出没有任何影响方法,几乎​​就像某个地方有一个常数。

srand(time(NULL));

//generate start position for central block. use this to find upper and lower block.

int startpoint = rand() % 7 + 1;

2)第二个是,要在屏幕上绘制一个坐标,我必须转换为char*。这涉及将我的随机int变量转换为char*变量,这似乎很简单,但是,当我尝试将此转换后的值与它的上下元素一起添加到矢量时,所有3个位置都是相同的值,当它们不应该再次出现时,似乎某个地方有一个我不在的地方。

for (int i = 0; i < 3; i++){

     convert = std::to_string(startpoint + assigner);
     temporarystore = (char*)convert.c_str();
     blocks.push_back(temporarystore);
     assigner++;
}

//spin around twice for visual effect.
for (int counter = 0; counter < 2; counter++){

    Draw_String(drawY, drawX - 1, blocks.at(0));
    Draw_String(drawY, drawX, blocks.at(1));
    Draw_String(drawY, drawX + 1, blocks.at(2));
}

非常感谢任何帮助。

注意:

Draw_String()只是将字符串绘制到屏幕上,由于其他地方的依赖性,我不会编辑该方法。

2 个答案:

答案 0 :(得分:3)

第一期:请勿在生成随机数的函数内调用srand(time(NULL));。把它移到功能之外!在程序执行期间,srand()只能被调用一次。

第二个问题:目前尚不清楚您要完成的工作以及原因。

答案 1 :(得分:0)

如果您可以在程序中使用C ++ 11,则会出现一系列与随机性相关的新功能。

#include <random>
#include <iostream>

namespace
{
    std::random_device rd;
    std::mt19937 mt(rd()); // seed the random number generator once
}

int GetRandomNumber(const int lowBound, const int highBound)
{
    std::uniform_int_distribution<int> dist(lowBound, highBound);
    return dist(mt);
}

int main()
{
    const auto diceResult = GetRandomNumber(1, 6);
    std::cout << diceResult << std::endl;
    return 0;
}