我正在开发一款老虎机游戏。玩家插入金额并下注玩。并且游戏的目标是尽可能多地获得相同符号的行,列和对角线。在上面的例子中,当上下行具有相等的符号时,获得了利润,部分为2x行。根据具有相同符号的行数,用户获得支付,因为利润系统如下:
我不知道怎么用付款来解决这个问题?我可以使用什么代码?我应该使用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. ????
答案 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 ...这是一个非常好的考试我认为,并且包含的不仅仅是你需要的,所以只需撕掉你需要的部分......