我在尝试将障碍物移向2x2阵列上的目标时遇到了一些问题。我有一个函数,它将两个整数作为参数。该函数然后创建一个大小为10的2x2数组,填充空闲空间,创建一个障碍物(障碍物每次保持不变)。然后它创建目标点(每次将它分配到同一个点)和球点(它位于数组位置[x] [y]中)。如何在C++中通过网格来操作/移动对象
目标是让球向目标移动,直到撞到障碍物,然后绕过障碍物,同时跟踪障碍物周围每个空间离目标多远,然后返回到最近点并继续朝着目标前进。
我试图开发一个moveToGoal函数,该方法将球移向目标,因为没有障碍,但我在访问printGrid函数之外的网格时遇到了很多麻烦。如果我在打印网格功能之外创建网格,我无法访问它,因为它超出了范围。我知道这可能看起来很混乱,但我会尽力回答任何有关它的问题。这是我到目前为止:
#include <stdio.h>
#include <vector>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <fstream>
#include <string>
#include <unistd.h>
using namespace std;
void printGrid(int x, int y) //Used to clear old grids, and print a
{ //new grid with input location for ball
system("CLS");
string grid [10][10]; //Initialize grid array
for (int i=0; i<10; i++)
{
for (int j=0; j<10; j++)
{
grid[i][j] = ' '; //Constructs grid with freespace
}
}
for (int i=2; i<8; i++) //Constructs obstacle(s)
{
grid[5][i]='O';
}
grid[2][5] = 'G'; //Sets Goal location
grid[x][y] = 'B'; //Sets current ball location(starts 8,5)
for (int i=0; i<10; i++) //Prints finished grid
{
for (int j=0; j<10; j++)
{
cout<<grid[i][j];
}
cout<<endl;
}
}
void moveToGoal(int x, int y)
{
printGrid(x-1, y);
}
int main()
{
moveToGoal(8,5);
sleep(1);
moveToGoal(7,5);
sleep(1);
moveToGoal(6,5);
sleep(1);
moveToGoal(5,5);
sleep(1);
moveToGoal(4,5);
sleep(1);
moveToGoal(3,5);
}
任何帮助,将不胜感激!
为什么你需要睡眠呼叫? –
“2x2”数组是一个长度为2和宽度为2的数组。您的意思是“2维数组”吗? – kfsone
您的网格对于printGrid函数是本地的。 如果您需要在此函数之外调整它,您需要将它作为函数参数来回传递,或者将其作为全局变量使用。 –