反转数组变量 C++ 中的坐标

reversing coordinates in an array variable C++

我不太确定如何表达这个问题,对于没有帮助的标题感到抱歉。

我有一个大数组(5 列,50 行),我用它在 ascii 文本中绘制关卡环境(数组中的每个条目都是一个字符,它们都被打印出来制作图像) 即:

  char worldarr[5][9] = 
{
        {'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'}, //the length of these entries are actually
        {'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'}, //50 but I shortened them for the post
        {'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'},
        {'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'},
        {'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'},
}

其中输出为:

XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX

现在我正在尝试建立一个坐标系,其中 (0,0) 是左下角,目标是能够输入坐标并将该位置替换为“@”我最初的假设是我可以使用这个:

int x = 0, y = 0;
worldarr[y][x] = '@'; 

但这输出:

@XXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX

不是:

XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
@XXXXXXXX

我如何创建一个新系统来强制 (0,0) 位于底部,或者更好的是,位于阵列的确切中心(如果可能)。

再次抱歉,简洁得可怕,我不确定我在做什么。

与其尝试完全重新映射数组,不如将数组包装在 class.

类似于:

class World {
private:
    static const size_t COLS = 5;
    static const size_t ROWS = 9;
    char worldarr[COLS][ROWS] = 
    {
        {'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'}, //the length of these entries are actually
        {'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'}, //50 but I shortened them for the post
        {'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'},
        {'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'},
        {'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'},
    };
public:
    char* operator[](int indx) {
        return worldarr[COLS - (indx + 1)];
    }
};

然后你可以像这样使用它:

World w;
w[0][0] = '@';

在此处查看实际示例:https://ideone.com/f6xgBb