void initFood2(int num)//食物编号 { food2.fxy2[num].x2 = rand() % 95*10+90*10; food2.fxy2[num].y2 = rand() % 60 * 10; for (int i = 0; i < snaker2.num2; i++) { if (food2.fxy2[num].x2 == snaker2.xy2[i].x2 && food2.fxy2[num].y2 == snaker2.xy2[i].y2) //判断食物是否在蛇身上 { food2.fxy2[num].x2 = rand() % 100 * 10 + 95 * 10; food2.fxy2[num].y2 = rand() % 65 * 10; } } }
时间: 2024-04-11 07:32:42 浏览: 23
这段代码与之前提到的初始化食物函数类似,但是针对的是另一个食物对象 food2。该函数接受一个参数 num,表示食物的编号。
在函数中,首先生成一个随机的 x2 坐标和 y2 坐标。x2 的范围是 900 到 1049,而 y2 的范围是 0 到 599。然后使用一个循环来检查生成的食物位置是否与蛇身上的任何一节位置重合,如果重合则重新生成一个食物位置。
循环遍历蛇身的每一节,判断食物的位置是否与蛇身的位置重合。如果重合,则重新生成一个随机位置。这样可以确保食物不会生成在蛇身上。
需要注意的是,这段代码中使用了 `rand()` 函数来生成随机数,需要包含 `<cstdlib>` 头文件。
这段代码用于初始化食物2的位置,以便在游戏开始时将食物2放置在地图上的随机位置。
相关问题
//初始化食物 void initFood(int num)//食物编号 { food.fxy[num].x = rand() % 60*10; food.fxy[num].y = rand() % 80*10; for (int i = 0; i < snaker.num; i++) { if (food.fxy[num].x == snaker.xy[i].x && food.fxy[num].y == snaker.xy[i].y) //判断食物是否再蛇上 { food.fxy[num].x = rand() % 75 * 10; food.fxy[num].y = rand() % 60 * 10; } } }
这段代码是用于初始化食物的函数。它接受一个参数 num,表示食物的编号。在函数中,首先生成一个随机的 x 坐标和 y 坐标,范围分别是 0 到 599 和 0 到 799。然后使用一个循环来检查生成的食物位置是否与蛇身上的任何一节位置重合,如果重合则重新生成一个食物位置。
具体来说,使用循环遍历蛇身的每一节,判断食物的位置是否与蛇身的位置重合。如果重合,则重新生成一个随机位置。这样可以确保食物不会生成在蛇身上。
注意,这段代码中使用了 `rand()` 函数来生成随机数,需要包含 `<cstdlib>` 头文件。
这段代码用于初始化食物的位置,以便在游戏开始时将食物放置在地图上的随机位置。
//吃食物 void eatFood() { for (int i = 0; i <= food.num - 1; i++) { if (snaker.xy[0].x == food.fxy[i].x && snaker.xy[0].y == food.fxy[i].y) { snaker.num += 1; snaker.xy.push_back(snaker.next);//新增的放大蛇尾 snaker.color.push_back(food.color[i]);//新增的颜色等于吃掉的食物的颜色 food.grade += 100;//吃掉一个食物得100分 initFood(i); if (food.num < 10 && food.grade % 500 == 0 && food.grade > 0) { food.num++; // 每得 500 分,增加一个食物,但食物总数不超过 10 个 initFood(food.num - 1); // 初始化新增加的食物 } } } }
这段代码用于处理蛇吃食物的逻辑。在函数中,通过一个循环遍历食物对象中的每个食物。对于每个食物,判断蛇头的位置是否与食物的位置重合,如果重合则表示蛇吃到了食物。
如果蛇吃到了食物,执行以下操作:
- 蛇的长度增加1,通过 `snaker.num += 1` 实现。
- 在蛇尾部新增一个节点,通过 `snaker.xy.push_back(snaker.next)` 实现,其中 `snaker.next` 表示下一个节点的位置。
- 新增的节点的颜色设置为被吃掉的食物的颜色,通过 `snaker.color.push_back(food.color[i])` 实现。
- 食物的得分增加100,通过 `food.grade += 100` 实现。
- 重新初始化被吃掉的食物,通过调用 `initFood(i)` 函数实现。
- 如果食物数量小于10,并且得分能够被500整除且大于0,增加一个新的食物,通过 `food.num++` 和 `initFood(food.num - 1)` 实现。
这段代码用于处理蛇吃食物的逻辑,并更新蛇的长度、颜色、得分以及食物的数量和位置。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)