沿二维网格移动值

Moving a value along a 2d grid

我正在尝试编写一个应用程序,用户在其中输入一个整数

我不确定我做错了什么,所以任何帮助将不胜感激。

#include "stdafx.h"
#include <iostream>

using namespace std;

char player = 'x';
char grid[3][3] = {{ player, '.' ,'.'},{'.', '.', '.' },{'.', '.', '.' } };

void Draw() {
    for (int row = 0; row <= 2; row++) {
        for (int col = 0; col <= 2; col++) {
        cout << grid[row][col];
    }
        cout << endl;
    }
}

int main() {
int posX = 0;
int posY = 0;
int in;
Draw();
while (1) {
    cin >> in;
    if (in == 1) {
        grid[posY][posX] = '.';
        posY = posY - 1;
        grid[posY][posX] = player;
    }
    else if (in == 2) {
        grid[posY][posX] = '.';
        posY = posY + 1;
        grid[posY][posX] = player;
    }
    else if (in == 3) {
        grid[posY][posX] = '.';
        posX = posX - 1;
        grid[posY][posX] = player;
    }
    else if (in == 4) {
        grid[posY][posX] = '.';
        posX = posX + 1;
        grid[posY][posX] = player;
    }
    else {
        grid[posY][posX] = player;
    }
    system("cls");
    Draw();
}
cin.get();
return 0;
}

我已经编译过了,一切正常....但是你必须检查玩家是否在网格的最大一侧,然后如果玩家想移动你必须阻止他,当然是因为墙; > 示例:

    while (1)
{
    cin >> in;
    if (in == 1)
    {
        if(posY>0) // HERE
        {
            grid[posY][posX] = '.';
            posY = posY - 1;
            grid[posY][posX] = player;
        }
    }
    ...
}