- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如何扩展 SnakeGame 中的 spawnFood() 方法,以在未被 Snake 或 Barrier 占据的字段上创建新的 Food 对象。
private void spawnFood() {
int x = (int) (Math.random() * numRows + 1);
int y = (int) (Math.random() * numColumns +1);
food = new Food(x , y);
}
最佳答案
你想要的是计算一个随机的自由字段,而不是计算任何随机字段然后检查它是否是自由的。你可以这样做,但最终当字段被填满时,它会表现得很糟糕。虽然您的代码很便宜,因此这不会是一个严重的问题,但它并不理想,最好的方法(您可能无论如何都需要计算胜利条件)是计算空闲字段,然后找到第一个空闲字段:
public Food spawnFood() {
int width = numColumns - 2; // assuming borders on both ends.
int height = numRows - 2; // assuming borders on both ends.
int numFields = width * height;
int freeSpaces = numField - getSnakeLength(); // I assume this method, because I don't know how your code works in regards to the Snake object.
int freeFieldIndex = (int) Math.round(Math.random() * freeSpaces);
for (int row = 0; freeFieldIndex >= 0; ++row) {
int snakeFieldsInRow = getNumSnakeFieldsInRow(row); // The number of fields the snake takes up in that row.
int unoccupiedInRow = width - snakeFieldsInRow;
if (freeFieldIndex < unoccupiedInRow ) {
int column = 0;
while(; freeFieldIndex > 0; ++column) {
if (!isSnakeField(row, column + 1)) { // This method must decide, whether a field is occupied by the snake.
--freeFieldIndex;
}
}
return new Food(row, column);
}
freeFieldIndex -= unoccupiedInRow;
}
return null;
}
我没有运行这个,因为我缺少其余的代码,所以它可能需要一些调整。
我知道我假设了很多方法,但由于我们了解得不够,所以我不得不假设很多。希望这会有所帮助。
关于java - 如何在贪吃蛇游戏中,在没有被蛇或障碍物占据的 field 上生成食物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56642561/
我是编程新手,并且卡在涉及蛇方向改变的特定部分上。该游戏与旧诺基亚手机上的游戏相同。很经典。 目前,每次我按 W、A、S 或 D 键,蛇都会移动 1 平方/20 像素。问题是我希望这个 Action
如果您熟悉任何梦幻体育选秀,选秀顺序网格如下所示: EXAMPLE 1 (3-teams): Round Team 1 Team 2 Team 3 1 1 (1.1) 2 (
我从这里得到了蛇算法的代码(在MatLab中实现) http://www.mathworks.com/matlabcentral/fileexchange/28109-snakes-active-co
我遵循了这个 link 中的示例.然而,轮廓从初始点开始收缩。是否可以做展开的轮廓?我想要像显示的图像那样的东西。左边的图像是它的样子,右边的图像是我想要的样子——向外扩展而不是收缩。红色圆圈为起点,
我正在编写一款类似于贪吃蛇的游戏。目前,我正在努力编写 move() 和 Growth() 方法。这个游戏的运作方式是,蠕虫从 1 block 开始,每 move 一步就增加 1 block ,直到达
说明 我目前正在使用 Pygame 开发蛇游戏,但我遇到了一个问题,因为我的蛇目前仅由方 block 组成,但如果蛇包含蛇头、 body 、尾部的绘制 25x25 图片,我会发现它会更好对于弯曲的 b
我是一名优秀的程序员,十分优秀!