为什么这不能取代' Xs'与空间

时间:2015-07-30 00:16:47

标签: c++

    int mapSizeX = 30;
    int mapSizeY = 10;
    string map[10][30];
    char playerMovement;
    for (int i = 0; i < mapSizeY; i++)
    {
        for (int j = 0; j < mapSizeX; j++)
        {
            map[i][j]= "X";
            cout << map[i][j];
        }
        cout << endl;
    }
    for (int i = 1; i < mapSizeY - 1; i++)
    {
        for (int j = 1; j < mapSizeX - 1; j++)
        {
            map[i][j] = " ";
            cout << map[i][j];
        }
        cout << endl;
    }

由于某些原因,这并不是用空格替换X并在X之后添加它并且不会制作一个&#34;竞技场&#34;这是顺便说一句蛇游戏

3 个答案:

答案 0 :(得分:2)

您输出到cout两次。从循环中删除cout << map[i][j];并仅在编辑完字符串后输出:

 ... // Previous code without printing

 for (int i = 0; i < mapSizeY; i++)
    {
        for (int j = 0; j < mapSizeX; j++)
        {
            cout << map[i][j];
        }
        cout << endl;
    }

答案 1 :(得分:1)

尝试添加以下内容以查看您的竞技场:

cout << endl << endl;
cout << "The arena: " << endl << endl;

for (int i = 0; i < mapSizeY; i++)
{
    for (int j = 0; j < mapSizeX; j++)
    {
        cout << map[i][j];
    }
    cout << endl;
}

答案 2 :(得分:0)

用X打印整个舞台后,然后用白色空间打印整个舞台,每边只有一个拼贴。所以你要在彼此之后打印它们。你想要做的是在相同的嵌套for循环中打印它们,如下所示:

for (int i = 0; i < mapSizeY; i++)
{
        for (int j = 0; j < mapSizeX; j++)
        {
            if (i == 0 || j == 0 || i == mapSizeY - 1 || j == mapSizeX - 1) {
                map[i][j] = "X";
                cout << map[i][j];
            }
            else {
                map[i][j] = " ";
                cout << map[i][j];
            }
        }
        cout << endl;
}

if子句检查当前迭代是否为边(如果它在X或Y轴上为0,或者如果它是X或Y轴上数组中的最后一个元素)并打印X,如果不是(在该字段)它打印一个空白区域。

小小的提示我想给你:我会直接用字符初始化字段而不打印它。

所以初始化字段如下:

for (int i = 0; i < mapSizeY; i++)
{
        for (int j = 0; j < mapSizeX; j++)
        {
            if (i == 0 || j == 0 || i == mapSizeY - 1 || j == mapSizeX - 1) {
                map[i][j] = "X";
            }
            else {
                map[i][j] = " ";
            }
        }
}

然后在你完成关于蛇,食物和东西的方程之后,把所有这些都写成你的'map'可用,去打印整个地图如下:

for (int i = 0; i < mapSizeY; i++)
{
        for (int j = 0; j < mapSizeX; j++)
        {
                cout << map[i][j];
        }
        cout << endl;
}

希望我能帮忙!