我有一个2d的struct _tile数组。 我想要一个函数返回一个tile。
这里是我用来生成2d数组tile的代码。我将做一些寻路和地牢工作。
函数get tile at
enum{normalfloor,door};
平铺结构。
struct _tile{
int type;
bool isSet;
int x,y;
_tile *camefrom;
int index;
bool changeTo(int a){
if(!isSet){
type = a;
isSet = 1;
return 1;
}
return 0;
}
};
地牢地图创建代码:
int Mw,Mh;
_tile **tile;
void create(int w = 30,int h = 30){
Mw=w,Mh=h;
tile = new _tile *[w];
for(int a=0,_index=0;a<w;a++){
tile[a] = new _tile[h];
for(int b=0;b<h;b++,_index++){
_tile *C = &tile[a][b];
C->type = normalfloor;
//1) Start with a rectangular grid, x units wide and y units tall. Mark each cell in the grid unvisited.
C->isSet = 0;
C->x = a;
C->y = b;
C->index = _index;
}
}
}
我想要一个函数来返回给定索引的tile。 但由于某些原因,这不起作用。
_tile getTileAt(int index){
int z[2];
int rem = index/Mh;
int X = index-(rem*Mh);
int Y = index - X;
return *tile[X][Y];
}
当我使用这个
时 _tile *a;
a = getTileAt(10);
a->changeTo(door);// here program crashes.
我一直在网上搜索。但没有得到满意的结果。
答案 0 :(得分:1)
你弄乱了X
的余数计算和计算。试试这个:
_tile getTileAt(int index){
int X = index/Mh;
int Y = index-(X*Mh);
return *tile[X][Y];
}
你可以更简单:
_tile getTileAt(int index) {
return *tile[index/Mh][index%Mh]; //mod returns the remainder
}