【问题标题】:How to update a game board? c++如何更新游戏板? C++
【发布时间】:2018-12-18 17:47:06
【问题描述】:

我正在尝试制作一个地牢爬行类游戏,并且我有这个代码来创建一个游戏板。我使用“F”作为终点,使用“P”作为播放器。

    void Gameboard::CreateGameboard()
{
    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 10; j++)
        {
         GameGrid[i][j] = 'x';
        }
    }
    cout << "  0 1 2 3 4 5 6 7 8 9 10" << endl;
    cout << " +---------------------+" << endl;
    for (int i = 0; i < 10; i++)
    {
        cout << " " << "|" << GameGrid[i][0];
        for (int j = 0; j < 10; j++)
        {
            if (i == Spawn[0] && j == Spawn[0])
            {
                GameGrid[0][0] = 'P';
            }
            cout << " " << GameGrid[i][j];
        }
        cout << "|" << endl;
    }
    cout << " +---------------------+" << endl;
}

我面临的问题是。 'P' 被放置在板的前两个插槽中,不确定原因。以及如何通过玩家移动来更新棋盘?我有一个带有 x,y 位置变量的 Player 类,我的想法是根据它们的去向来向下/向上递增。每次移动后是否需要重新打印整个板子?

【问题讨论】:

  • 你输出了两次GameGrid[0][0],并且设置为'P'explicitly。

标签: c++ visual-c++ c++17


【解决方案1】:

用你画的白板。

 for (int i = 0; i < 10; i++)
    {
        cout << " " << "|" << ***GameGrid[i][0]***;
        for (int j = 0; j < 10; j++)
        {
            cout << " " << GameGrid[i][j];
        }
        cout << "|" << endl;
    }

您打印出该行的第一项,然后再打印整行,包括第一项。所以每一行都会有第一个项目的两倍。

至于你的第二个问题,清屏正是你必须要做的。如果您使用的是 Windows,那么您可以使用 system("cls"); '清除'控制台然后重绘。我建议将电路板绘图和电路板创建放入不同的功能中。

【讨论】:

  • 我用我更改的内容编辑了原始帖子。我现在遇到了将“P”放在第二个位置的问题。 Spawn 在头文件中为 int Spawn[2] = { 0,0 };。可能我完全错过了一些东西..:/
  • 尝试单步执行您的程序,观察它的流程并查看输出是否符合预期。 docs.microsoft.com/en-us/visualstudio/debugger/…
猜你喜欢
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-17
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
相关资源
最近更新 更多