我正在通过http://www.tonypa.pri.ee/tbw/tut02.html阅读磁贴引擎教程,但是当我将 Flash 代码翻译成 C++ 时我被卡住了。到目前为止,我理解并翻译了这部分:
unsigned int MAPDATA[6][8] = {
{ 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 1, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 1, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1 }
};
class Tile0 {
public:
Tile0();
bool walkable = true;
unsigned int frame = 0;
};
class Tile1 {
public:
Tile1();
bool walkable = false;
unsigned int frame = 1;
};
但在这条线上,它说,
“第一行 game.Tile0= function () {} 声明了新的对象原型。当我们从地图数组中得到 0 时,我们将使用 Tile0 作为模板在该位置创建新的 tile 对象。”
这是否意味着将数组 MAPDATA 转换为对象数组?
unsigned int MAPOBJS[6][8] = {
{ Tile1, Tile1, Tile1, Tile1, Tile1, Tile1, Tile1, Tile1 },
{ Tile1, Tile0, Tile0, Tile0, Tile0, Tile0, Tile0, Tile1 },
{ Tile1, Tile0, Tile1, Tile0, Tile0, Tile0, Tile0, Tile1 },
{ Tile1, Tile0, Tile0, Tile0, Tile0, Tile1, Tile0, Tile1 },
{ Tile1, Tile0, Tile0, Tile0, Tile0, Tile0, Tile0, Tile1 },
{ Tile1, Tile1, Tile1, Tile1, Tile1, Tile1, Tile1, Tile1 }
};
或者这是否意味着使用 Tile0 间接引用 0?你如何在 C++ 上做到这一点,所以以后你可以......
if ( MAPOBJS[1][5].walkable )
player.moveLeft();
用于串通检测?