如果我在Food类中声明函数void Food::generateRandomPosition(vector<vector<int>>& board),该怎么继续解决问题
时间: 2024-03-19 19:43:21 浏览: 47
如果您在 `Food` 类中声明了 `generateRandomPosition` 函数,那么在 `Snake` 类的构造函数中,您需要传递一个棋盘(即 `board`),使得 `generateRandomPosition` 函数能够在合适的位置生成食物。然后,在 `Snake` 类的 `move` 方法中,您需要将 `board` 传递给 `generateRandomPosition` 函数,以确保在生成食物时不会与蛇身碰撞。
下面是修改后的代码:
```
// Food.h
class Food
{
private:
int food_x, food_y;
public:
void generateRandomPosition(vector<vector<int>>& board); // 修改函数声明
int getfood_x();
int getfood_y();
};
// Food.cpp
void Food::generateRandomPosition(vector<vector<int>>& board) // 修改函数定义
{
// 在 board 上随机生成食物位置
...
}
// Snake.cpp
Snake::Snake(int x, int y)
{
...
snakefood.generateRandomPosition(body); // 将 body 传递给 generateRandomPosition 函数
...
}
void Snake::move()
{
...
if (movedirection == 1)
{
Head_x -= 1;
if (body[Head_x][Head_y] == -2)
{
snakefood.generateRandomPosition(body); // 将 body 传递给 generateRandomPosition 函数
body[snakefood.getfood_x()][snakefood.getfood_y()] = -2;
}
else
{
...
}
}
...
}
```
这样,您就可以通过将棋盘传递给 `generateRandomPosition` 函数,来确保在生成食物时不会与蛇身碰撞。
阅读全文