Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 战舰游戏C++;,放置用户输入的船只_C++ - Fatal编程技术网

C++ 战舰游戏C++;,放置用户输入的船只

C++ 战舰游戏C++;,放置用户输入的船只,c++,C++,我试图找出如何在战舰游戏中放置用户输入的船只。x和y整数是10x10板上的位置。水平方向为0,垂直方向为1。船的长度显然是船的长度(从2到5)。如果船不能放在10x10板上,我想返回false,如果那里有另一艘船,我也不能放在那里。非常感谢您的帮助 bool userboat(char boatArray[][BOARD_SIZE],int x, int y, int orientation, int boat_length){ for(int yy = 0; yy < BOARD

我试图找出如何在战舰游戏中放置用户输入的船只。x和y整数是10x10板上的位置。水平方向为0,垂直方向为1。船的长度显然是船的长度(从2到5)。如果船不能放在10x10板上,我想返回false,如果那里有另一艘船,我也不能放在那里。非常感谢您的帮助

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; 
}
bool用户船(char boatArray[][板大小],整数x,整数y,整数方向,整数船长){
用于(int-yy=0;yy对于(int boat=0;boat您需要更改以下代码:

boatArray[yy][boat] = BOAT;
致:

让我们看一个简单的例子。如果我们想把船放在位置(2,2),我们循环整个2D数组直到到达xx==2&&yy==2,对吗? 好的。现在我们检查这个位置(boatArray[yy][xx])是否为空(您应该实现它)。如果为空,我们进行计算,看看是否可以将船放置在阵列中。 现在,您的循环如下所示:

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

编辑:另一个循环也是如此。

那么,你的实际问题是什么?哪个部分不工作,或者你不知道如何检查这些条件?整个代码工作不正常,返回的值不正确。这是我尝试的解决方案,但我想不出任何其他方法。听起来你可能需要学习如何使用调试器逐步完成代码。有了一个好的调试器,你可以逐行执行你的程序,看看它偏离了你的预期。如果你要做任何编程,这是一个必不可少的工具。进一步阅读:你不需要在整个电路板上搜索给你的坐标。我I’我投票结束这个问题,因为这是一个关于家庭作业的问题,除了提问者之外,对任何人都没有用处。
for(int boat = 0; boat<boat_length; boat++)
          boatArray[yy][boat] = BOAT;
boatArray[yy][xx + boat] = BOAT;