Battleship Game C ++,放置用户输入的船只

时间:2016-03-04 15:25:18

标签: c++

我正在试图弄清楚如何将用户输入的船只放置在战舰游戏中。 x和y整数是10x10板上的位置。水平方向为0,垂直方向为1。 boat_length显然是船的长度(从2到5)。如果船不能放在10x10板上,如果那里还有另一艘船,我想要归还假,我也不能把它放在那里。非常感谢任何帮助!

bool userboat(char boatArray[][BOARD_SIZE],int x, int y, int orientation, int boat_length){
    for(int yy = 0; yy < BOARD_SIZE; yy++){
        for(int xx = 0; xx < BOARD_SIZE; xx++){
            if(yy == y && xx == x){
                boatArray[yy][xx] = 'B';
                if(orientation == 0){
                    if(x+boat_length< BOARD_SIZE){
                        for(int boat = 0; boat<boat_length; boat++){
                            boatArray[yy][boat] =BOAT;
                        }
                    }else{
                        return false;
                        break;
                    }
                }
            }else{
                if(yy+boat_length< BOARD_SIZE){
                    for(int boat = 1; boat<boat_length; boat++){
                        boatArray[boat][yy] =BOAT;
                    }
                }else{
                    return false;
                    break;
                }
            }
        }
    }
    return true; 
}

1 个答案:

答案 0 :(得分:0)

您需要更改以下代码:

boatArray[yy][boat] = BOAT;

要:

boatArray[yy][xx + boat] = BOAT;

让我们看一个简单的例子。如果我们想将船放置在位置(2,2),我们将整个2D阵列循环,直到我们达到xx == 2&amp;&amp;是啊== 2对吗? 好。现在我们检查这个位置(boatArray [yy] [xx])是否为空(你应该实现这个)。如果它是空的,我们做数学,看看船是否可以放在阵列内。 现在你的循环看起来像这样:

for(int boat = 0; boat<boat_length; boat++)
          boatArray[yy][boat] = BOAT;

这意味着boatArray [yy] [0],boatArray [yy] [1],..将获得BOAT的值。但你不希望如此。这些都是每次都是第一列。你应该做的是这个(正如我之前提到的):

boatArray[yy][xx + boat] = BOAT;

编辑:其他循环也一样。