for循环比较二维数组???求助!

时间:2010-10-23 17:01:33

标签: c++

我目前正在开发一款玩家玩老虎机的游戏。该游戏基于用户停止赚钱,100秒,300秒或500秒。然后用户为每个游戏下注。单臂强盗随机吐出9个片段中的3个不同符号。见图:

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

•A系列提供2 *下注

•两行给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 two-dimensional array????

2 个答案:

答案 0 :(得分:1)

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

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

此外,您需要存储随机生成的符号。您应该创建一个名为results的新矩阵(或2D数组)。

E.g。

char results[3][3];

现在,当您显示老虎机结果时,请将其存储在此2D阵列中:

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]);
}

此外,您应该考虑随机生成符号的方法。有更好的方法!

答案 1 :(得分: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 ++程序。