不用链表用容器重新写一次
时间: 2023-07-04 12:19:13 浏览: 47
可以使用 C++ 中的 `std::vector` 容器来实现贪吃蛇的节点链表,以下是一段使用 `std::vector` 的 C++ 代码实现贪吃蛇吃食物变长的功能:
```c++
#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
using namespace std;
// 定义蛇的节点结构体
struct SnakeNode {
int x;
int y;
};
// 定义食物的坐标
int food_x, food_y;
// 初始化蛇
void init_snake(vector<SnakeNode>& snake) {
SnakeNode head = {1, 1};
snake.push_back(head);
}
// 在蛇的尾部添加一个节点
void add_tail(vector<SnakeNode>& snake) {
int tail_x = snake.back().x;
int tail_y = snake.back().y;
SnakeNode tail_node = {tail_x, tail_y};
snake.push_back(tail_node);
}
// 生成食物的坐标
void generate_food() {
food_x = rand() % 10 + 1;
food_y = rand() % 10 + 1;
}
int main() {
vector<SnakeNode> snake;
init_snake(snake);
// 假设蛇吃到食物后需要变长
int eat_food = 0;
// 随机数种子
srand(time(nullptr));
// 游戏循环
while (true) {
// 判断是否吃到食物
if (snake[0].x == food_x && snake[0].y == food_y) {
eat_food = 1;
generate_food(); // 重新生成食物
} else {
eat_food = 0;
}
// 如果吃到食物,就在蛇的尾部添加一个节点
if (eat_food) {
add_tail(snake);
}
// 更新蛇的位置
// ...
// 输出蛇的长度
int length = snake.size();
cout << "Length: " << length << endl;
}
return 0;
}
```
在上面的代码中,使用 `std::vector` 容器替代了链表,依然可以通过调用 `push_back` 函数在蛇的尾部添加一个新的节点,表示蛇的长度加1。同样,需要注意食物的重新生成,以及在游戏循环中判断是否吃到食物。在输出蛇的长度时,直接通过 `vector::size()` 函数获取蛇的长度。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)