gpt4 book ai didi

java - 制作蛇游戏,我的解决方案是避免 'food/blobs' 按顺序在我的蛇顶部产生吗?

转载 作者:行者123 更新时间:2023-11-30 11:36:03 24 4
gpt4 key购买 nike

http://i.stack.imgur.com/P7Ano.png <- 图片 ~..~

希望标题能提供一些信息。我目前正在用 Java 制作我的第一款游戏,我需要一些关于特定代码的帮助。

我们开始:

当蛇在一个红色方 block (以下简称“blob”)上移动时,该方 block 会重新绘制新的、随机生成的坐标。由于这些坐标是随机生成的,因此有可能将 Blob 绘制在我的蛇的顶部。

我想避免这种情况,我已经让生成随机坐标的方法根据蛇的当前坐标检查它们。这条蛇由 5x5 像素的片段组成,每个片段都有自己的坐标存储在二维数组中。

我的逻辑如下:1) 生成 X 和 Y 坐标。 2) 获取坐标的微分(例如,它们彼此之间的距离)3) 如果它们在彼此的 COLLISIONRANGE (5px) 范围内 -> 不要使用这些坐标。

我真正想问的是:

这是一个好的解决方案吗?我检查这个的方式有什么明显的错误吗?当我玩游戏时,我得到更多 System.out.println("Log: No-go spawn #"+ i); 的触发器。我在那里进行日志记录比我想象的要自然。

似乎随机生成的坐标在 snakesegments 的 COLLISIONRANGE 范围内太频繁了,所以一切都是正确的。

我的方法:

private void generateBlobCoordinates() {
Random randomGenerator = new Random();
boolean isClearSpawn = true;

int x = randomGenerator.nextInt(BORDER_X_MAX);
int y = randomGenerator.nextInt(BORDER_Y_MAX);

int xDiff;
int yDiff;

// If generated coords are within COLLISIONRANGE, set isClearSpawn to false
for(int i = 0; i < snakeSegments.length; i++) {
if(snakeSegments[i][0] != -1) {
xDiff = Math.abs(x - snakeSegments[i][0]);
yDiff = Math.abs(y - snakeSegments[i][1]);

if(xDiff <= COLLISIONRANGE || yDiff <= COLLISIONRANGE) {
isClearSpawn = false;
System.out.println("Log: No-go spawn #" + i);
break;
}
}
else
break;
}

if(isClearSpawn == true) {
blobX = x;
blobY = y;
}
else
generateBlobCoordinates();
}

最佳答案

你的担心是对的。您正在测试 OR 条件,但需要 AND。否则你会在有蛇的行或列的任何地方发生碰撞!

改变

        if(xDiff <= COLLISIONRANGE || yDiff <= COLLISIONRANGE) {

        if(xDiff <= COLLISIONRANGE && yDiff <= COLLISIONRANGE) {

关于java - 制作蛇游戏,我的解决方案是避免 'food/blobs' 按顺序在我的蛇顶部产生吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14742370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com