如何搜索Floor for Player和Ghost并创建实例以传递给字符

时间:2015-03-04 18:16:14

标签: c++ vector maze

好的,所以我在抓住矢量并将实例传递给矢量时遇到了很多麻烦。所以我在这里尝试做的就是找到角色' 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在游戏中。

感谢您的帮助。

0 个答案:

没有答案