好的,所以我在抓住矢量并将实例传递给矢量时遇到了很多麻烦。所以我在这里尝试做的就是找到角色' P'在我的迷宫中,然后创建一个播放器实例并将实例推送到我的角色矢量中。然后鬼魂也一样,但我确定这些陈述是相似的。
这是我所拥有的,但它显然不能编译,因为它是不正确的。
void Game::populateMaze()
{
vector<char>::iterator p, g;
while (!m_floor[0].eof()) //read in FloorA
{
for (int rows = 0; rows < sizeof (*m_floor); rows++)
{ for (int columns = 0; columns < sizeof (*m_floor); columns++)
{
characters.push_back(m_floor); //push to Floor constructor
}
}
}
p = find (characters.begin(), characters.end(), 'P'); //search for 'P'
while (p != vector.end())
p = characters.push_back(Player[p]); //save location in characters as Player
g = find (characters.begin(), characters.end(), 'G'); //search for 'G'
while (g != vector.end())
g = characters.push_back(Ghost[g]); //save location in characters as Ghost
}
}
修改
在我的populateMaze()函数之上,这里是m_floor:
void Floor::Read (const char * filename)
{
size_t row = 0;
ifstream input(filename);
while (row < ROWS && input >> tiles[row++]);
}
void Game::readFloors()
{
m_floor[0].Read("FloorA.txt");
m_floor[1].Read("FloorB.txt");
m_floor[2].Read("FloorC.txt");
}
和标题
class Floor {
const static int ROWS = 20;
const static int COLS = 30;
char tiles[ROWS][COLS];
public:
Floor();
void Read (const char * filename);
void placePlayer();
void Print() const;
bool legal_move(int x, int y) const;
istream eof();
};
class Game {
private:
Floor m_floor [3];
vector<char> characters;
public:
void readFloors();
void populateMaze();
void leave_floor();
};
我认为我的while循环也不正确,但它没有给我任何错误。在我的标题中,我声明了istream eof();
,在游戏中我有Floor m_floor[3]
因为有三个单独的楼层可以使用。同样vector<char> characters
在游戏中。
感谢您的帮助。