比较二维阵列的结果有问题!

时间:2010-10-23 10:39:51

标签: c++

我正在开发一款老虎机游戏。玩家插入金额并下注玩。并且游戏的目标是尽可能多地获得相同符号的行,列和对角线。在上面的例子中,当上下行具有相等的符号时,获得了利润,部分为2x行。根据具有相同符号的行数,用户获得支付,因为利润系统如下:

  • A系列提供2 * bet
  • 两行给3 *下注
  • 三行给4 *下注
  • 四行给出5 *下注
  • 五行给出7 *下注
  • 完全比赛场地10 *下注

我不知道怎么用付款来解决这个问题?我可以使用什么代码?我应该使用for循环吗?我是c ++的新手,所以我遇到了麻烦。我一直在这个游戏上花了很多时间,但我无法解决它。请帮我! 这是我现在代码的一小部分:我只想比较结果。

 srand(time(0)); 
 char game[3][3] = {{'O','X','A'}, {'X','A','X'}, {'A','O','O'}}; 

 for (int i = 0; i < 3; ++i) 
 { 
 int r = rand() % 3; 
 cout << " " <<game[r][0] << " | " << game[r][1] << " | " << game[r][2] << "\n"; 
 cout << "___|___|___\n"; 
 } 


 //......compare the result of the random symbols. ????

3 个答案:

答案 0 :(得分:3)

您在字母“A”,“O”和“X”之间进行选择,对吗?

#include <algorithm>

char randomSymbol()
{
    char symbol = rand() % 3 + 'A';
    if(symbol == 'B') symbol = 'O';
    else if(symbol == 'C') symbol = 'X';
    return symbol;
}

void populateSlotField(char field[3][3])
{
    // pass your array as an argument to this function
    // note that 9 is because you said your slot field was 3x3
    // for a different sized field, adjust accordingly
    std::generate(field[0], field[0] + 9, randomSymbol);
}

答案 1 :(得分:0)

您可以使用数组代替

#include <iostream>
#include <cstdlib>
#include <cmath>

using namespace std;

int main(){
    char symbs[] = {'0','X','A'};

    for (int i = 0; i != 9 ; i++) {
        int rndnum = round((double)rand() / (double) RAND_MAX * 3);
        cout << symbs[rndnum];
    }
    cout << endl;

    return 0;
}

其中(double)rand()/(double)RAND_MAX为您提供0→1的随机双倍

答案 2 :(得分:0)

Here is a note关于c ++随机数,有一些要处理...否则,你生成的值可能不是真正随机的。

更新:如果我没有弄错你,你要求this ...这是一个非常好的考试我认为,并且包含的​​不仅仅是你需要的,所以只需撕掉你需要的部分......