2010-10-23 80 views
0

我目前正在开发一款玩家玩老虎机的游戏。该游戏基于用户在金钱,100秒,300秒或500秒时停止。然后用户为每场比赛进行投注。单手武装的匪徒在9个领域随机吐出3个不同的符号。见图:for-loop比较二维数组???帮助!

alt text 游戏的目标是获得尽可能多的行,列和对角线尽可能相同的符号。在上面我做的例子中,当上下行有相同的符号时,获得利润,连续两次同样(aaa)。 以下利润系统取决于行用相同的符号作为数:

•一系列提供2 *赌注

•两个线给予3 *赌注

•三排给予4 *打赌

四行给5个*赌注

•五行给出7 *赌注

•全p铺设领域给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 two-dimensional array???? 
+3

如果你保持这种状态,我们可能需要使用二维数组在C++中使用新的stackexchange站点来制作老虎机游戏(请参阅:http://stackoverflow.com/users/484991/atb) – 2010-10-23 17:08:52

+0

究竟是什么希望比较?上述所有代码都是将某些内容打印到控制台,但该信息不会存储在任何位置。另外,什么是一个系列?而且,如何在只有三行的电路板上获得四行? – fredoverflow 2010-10-23 17:11:12

+0

你的代码只是打印一个3x3的字符网格。似乎没有什么比较任何东西?如果网格中只有三行,你怎么能有“四行”?一旦问题有意义,我怀疑这个问题的答案很简单;) – SteveRawlinson 2010-10-23 17:17:00

回答

0

我不确定我是否完全理解您的要求,但已决定尽我所能地解释它们。这段代码做我认为你想要的。我已经使用0,1和2作为字符,但是您可以在输出中轻松地将它们交换为任何想要的。自从您为您的问题编写了伪代码之后,我也没有费心计算支出。

int game[3][3]; 
int x, y; 
int lines = 0; 

// select a random grid 
srand(time(0)); 
for(x = 0; x < 3; x++) { 
    for(y = 0; y < 3; y++) { 
     game[x][y] = rand() % 3; 
     cout << game[x][y]; 
     if (y == 2) 
      cout << '\n'; 

    } 
} 

// count horizontal lines 
for (y = 0; y < 2; y++) 
    if (game[0][y] == game[1][y] && game[0][y] == game[2][y]) 
     lines++; 

// vertical 
for (x = 0; x < 2; x++) 
    if (game[x][0] == game[x][1] && game[x][0] == game[x][2]) 
     lines++; 

// diagonal 
if (game[0][0] == game[1][1] && game[0][0] == game[2][2]) 
    lines++; 
if (game[0][2] == game[1][1] && game[0][2] == game[2][0]) 
    lines++; 

cout << lines << " lines\n"; 

顺便说一下,这是我的第一个C++程序。

+0

我觉得你刚刚度过了我的一天!!!上帝保佑你,我刚刚发布了一个新问题,但我认为我不需要,现在我要试试这个直接!! im很开心:D:D:DI希望它可以运作 – Atb 2010-10-23 19:15:42

+0

只是一个问题,我如何得到数字符号(a,x,o)? – Atb 2010-10-23 21:52:27

+0

@Atb,你需要明白SO是一个社区我已经为你完成了所有的工作,但是你还没有接受甚至没有投票答复我的答案,你*仍然需要更多的帮助 – SteveRawlinson 2010-10-23 23:30:13

1

您可以使用comparison operators来检查矩阵中的元素是否彼此相等。您已经知道如何访问矩阵的每个元素(game[r][0]等)。

现在,您所要做的就是检查一行,对角线等元素是否相等。

此外,您需要商店您的随机生成的符号。您应该创建一个名为results的新矩阵(或二维数组)。

E.g.

char results[3][3]; 

现在,当你显示老虎机的结果,将其存储在这个二维数组:

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

上面,我只是用另一种循环存储你显示的内容。

为了让您一开始,这里是如何沿着水平线检查所有3行的矩阵:

bool horz_equal[3]; 
for(int r = 0; r < 3; ++r) 
{ 
    horz_equal[r] = (results[r][0] == results[r][1] && results[r][1] == results[r][2]); 
} 

此外,你应该想想你有随机产生符号的方法。有更好的方法!