如何更新游戏板? C++

Posted

技术标签:

【中文标题】如何更新游戏板? C++【英文标题】:How to update a game board? 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。 【参考方案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/…

以上是关于如何更新游戏板? C++的主要内容,如果未能解决你的问题,请参考以下文章

游戏逻辑的异步屏幕更新,C++

C++ 中的游戏更新(线程或计时器)?

MFC - 如何在运行时更新编辑框? (C++)

嵌入式学习笔记以及C++学习笔记更新计划

如何更新动态生成的故事板中的自定义特定 UITableview 单元格?

为啥我不能在 C++ 中更新我的类属性?