我正在尝试用libgdx开发一个简单的蛇游戏。我的问题是,每次我想要繁殖一些苹果(纹理,20px宽X 20px高),它总是与蛇的身体重叠。我试图避免这种情况,但它在比赛中不断发生。
snake由多个部分组成-每个部分都是一个20px宽X 20px高的纹理(屏幕宽度是480px宽X 800px高)
以下是我迄今为止所做的尝试:
public void addApple() {
accomplishedSnake = false;
accomplishedApples = false;
while (!accomplishedSnake && !accomplishedApples) {
xApple = 20 * MathUtils.random(0, 23);
yApple = 20 * MathUtils.random(20, 36);
if (!accomplishedSnake) {
for (int i = 0; i < snake.getSize(); i++) {
if (snake.getPart(i).getX() <= xApple
&& snake.getPart(i).getX() + 20 >= xApple
&& yApple >= snake.getPart(i).getY()
&& yApple <= snake.getPart(i).getY() + 20)
break;
if (i == snake.getSize() - 1) {
accomplishedSnake = true;
break;
}
}
}
if (!accomplishedApples) {
for (int i = 0; i < apples.size; i++) {
if (apples.get(i).getX() <= xApple && apples.get(i).getX()+20 >= xApple
&& yApple >= apples.get(i).getY() && yApple <= apples.get(i).getY()+20)
break;
if (i == apples.size - 1) {
accomplishedApples = true;
break;
}
}
}
}
apples.add(new Apple(xApple, yApple));
}
代码很容易解释。每时每刻,屏幕上都有3个不同的苹果。这段代码试图抽奖x-y坐标到新苹果,但在苹果添加到屏幕并渲染之前,我想确保它不会与蛇的身体或其他苹果重叠。
我就是看不出这个代码有什么问题。
P、 我尝试在Rectangle类中使用overlaps方法,但它不起作用。
这个游戏应该是基于磁贴的。
这意味着游戏被组织成一个网格,其中每个单元格都有相同的大小。
这是通过使用相机来完成的:Orthograph icCamera cam=new Orthograph icCamera(viewportWidth, viewportHeight)
viewportWidth
和viewportHeight
定义x
和y
中应该有多少个单元格。
当您使用480*800px的分辨率和20*20px大小的图片时,viewportWidth
应该是480/20=24,viewportHeight
应该800/20 = 40。
注意,相机P(0/0)是在屏幕中间,您可以看到从-12到12(x)和-20到20(y)的对象。只需将相机的位置设置为P(12/20),P(0/0)是左下角,像往常一样。
现在产卵将很容易:
我使用一个int[][]world,如果有:
P(x,y)处的蛇形部分(世界[x][y]==1)
- 苹果在P(x,y)(世界[x][y][=2)
- P(x,y)处无任何内容(世界[x][y]==0)
这意味着,如果蛇离开了一个磁贴,则需要将其值设置为0(world[x][y]=0),并将其输入的每个磁贴设置为1(world[x][y]=1)
public void spawnApple() {
boolean spawned = false;
while(!spawned) {
// The lower left corner is always an int-value
int x = (int)MathUtils.random(0, 23);
int y = (int)MathUtils.random(0, 40);
if (world[x][y] == 0) {
// Add Apple at x,y
world[x][y] = 2;
}
}
}
希望有帮助!
试试这个...
if (snake.getPart(i).getX() >= xApple
&& snake.getPart(i).getX() + 20 <= xApple
&& snake.getPart(i).getX() >= xApple+20
&& snake.getPart(i).getX() + 20 <= xApple+20
&& snake.getPart(i).getY() >= yApple
&& snake.getPart(i).getY() + 20 <= yApple
&& snake.getPart(i).getY() >= yApple +20
&& snake.getPart(i).getY() + 20 <= yApple +20)
break;
此外,您还需要确保在进入while循环之前和每次计算随机坐标之后,将completeshedapple和completeshedsnake设置为false。在进一步构建代码时,还需要模仿这种逻辑。
你的测试条件太简单了。每个物品蛇身体部分/苹果都有大小,你需要考虑它们的轨迹。所以[蛇。X,蛇。X 20]和[蛇。Y,蛇。Y 20]被每个身体部分占用,你需要确保苹果。X和苹果。X 20不在范围内,苹果也是如此。Y
本文向大家介绍python实现简单贪吃蛇游戏,包括了python实现简单贪吃蛇游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 代码: 更多有趣的经典小游戏实现专题,分享给大家: C++经典小游戏汇总 python经典小游戏汇总 python俄罗斯方块游戏集合 JavaScript经典游戏 玩不停 java经典小游戏汇
按照我找到的这个教程,我一直在Unity(C#)中创建了一个简单的贪吃蛇游戏: https://www.youtube.com/watch?v=U8gUnpeaMbQ 我发现这是一个非常好的教程,到最后我有一个完美的蛇游戏,但是,我想走得更远一点,使运动更加愉快,添加尾巴,Gameover等。 现在我的问题是,如果一个玩家快速连续按下两个可接受的方向试图抓住一些食物,蛇的头会跳过食物,完全错过它。
本文向大家介绍js实现贪吃蛇游戏(简易版),包括了js实现贪吃蛇游戏(简易版)的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 直接开始 效果图: 项目结构:图片自己找的 1.html 2.area.js 3.config.js 4.food.js 5.init.js 6.move.js 7.score.js 8.snake.js
帖子底部的实际问题! 首先,我想解释我的问题。 我正在写一个基本的蛇游戏,我让蛇自动移动。当您执行代码时,它会自动移动到窗口的右侧,就像预期的那样。然而,我不能按我想要的方式控制我的蛇,它根本不会改变方向。 为了避免混淆,是类的一个实例。 为了解释蛇的运动: 对象有一个属性,它是一个包含对象的数组列表。每个对象都有和属性。使用此ArrayList,蛇通过在画布的y轴和x轴上使用和属性在画布上绘制小
我正在为iOS开发一个贪吃蛇游戏:https://github.com/ScottBouloutian/Snake 我的目标是让AI以最佳方式完成蛇的游戏(让蛇填满棋盘)。 我正在使用IDA*找到一条从蛇当前位置到食物的路径。这是有效的。然而,该算法没有考虑到它将来可能需要获得更多食物的事实。因此,有时它倾向于把自己框起来。 也就是说,蛇在任何给定时间的目标都是找到食物,而它的目标应该是填满棋盘(
我很难把我的心思放在这件事上。每当玩家猜错时,它应该从最初的余额中减去他/她的赌注。由于它是在一个循环中,它总是从一开始就取初始平衡,每次都吐出相同的平衡。(很明显)我试过分配不同的变量,但似乎无法找到答案。 我已经省略了中等难度和难难度的方法,因为它们现在是没有用的,直到我弄清楚这个。