Java 如何在处理过程中返回矩形边界内的任意点?

Java 如何在处理过程中返回矩形边界内的任意点?,java,processing,pacman,Java,Processing,Pacman,仅供参考,我是java新手。我正在使用处理,我正在做一个蛇游戏。我的下一步是,一旦蛇吃了食物,食物就会恢复到一个新的位置。问题是“蛇头”需要与“食物”矩形完全对齐才能刷新;基本上,鼠标需要在食物的正中央,而不是仅仅触摸它。我如何调整它,使鼠标一碰到“食物”矩形,它就会刷新?我试着去摆弄rectMode(),但那很奇怪。哈哈 这就是我到目前为止所拥有的,如果代码是垃圾,请原谅我。就像我说的,对java来说是全新的 类蛇{ //变数 内伦; int wid; int xcord; int ycord

仅供参考,我是java新手。我正在使用处理,我正在做一个蛇游戏。我的下一步是,一旦蛇吃了食物,食物就会恢复到一个新的位置。问题是“蛇头”需要与“食物”矩形完全对齐才能刷新;基本上,鼠标需要在食物的正中央,而不是仅仅触摸它。我如何调整它,使鼠标一碰到“食物”矩形,它就会刷新?我试着去摆弄rectMode(),但那很奇怪。哈哈 这就是我到目前为止所拥有的,如果代码是垃圾,请原谅我。就像我说的,对java来说是全新的

类蛇{
//变数
内伦;
int wid;
int xcord;
int ycord;
//建造师
蛇(整数x,整数y,整数len,整数wid){
this.len=len;
this.wid=wid;
这个.xcord=x;
这个.ycord=y;
rect(xcord、ycord、len、wid);
}
//清屏
无效更新(){
背景(255);
rect(mouseX、mouseY、len、wid);
}    
}
等级食品{
//变数
int xcord;
int ycord;
//建造师
食物(){
this.xcord=int(随机(宽度));
this.ycord=int(随机(高度));
rect(xcord,ycord,10,10);
}
//更新食物位置。这似乎是问题代码块
无效更新(){
if(mouseX==xcord&&mouseY==ycord){
xcord=int(随机(宽度));
ycord=int(随机(高度));
}
}
//展示食物
食物{
rect(xcord,ycord,10,10);
}
}
蛇;
食品f;
无效设置(){
背景(255);
s=新蛇(mouseX,mouseY,10,10);
f=新食品();
}
作废提款(){
s、 更新();
f、 更新();
f、 显示食物();
}

你有控制蛇和食物的类游戏处理程序吗?您可以检查
isFoodIntersectSnake()
。当食物不与蛇身相交时,产生新的食物位置

对于正确的刷新食物,您必须检查蛇头是否与食物位于同一矩形:

布尔isSnakeEatFood(蛇、蛇、食物){
返回snake.xcord==food.xcord&&snake.ycord==food.ycord
}

要检查与矩形的碰撞,必须检查矩形在两个维度上是否重叠

对于每个尺寸,都有以下可能的情况(例如尺寸x):

不重叠:

x1-x1+w1
+----+
+----+
x2+w2
x1-x1+w1
+----+
+----+
x2+w2
重叠

x1-x1+w1
+--------------+
+----+
x2+w2
x1-x1+w1
+----+
+---------------+
x2+w2
x1-x1+w1
+---------+
+----------+
x2+w2
x1-x1+w1
+----------+
+----------+
x2+w2
这意味着,如果

x1
这导致方法
update

类食品{
// [...]
无效更新(){
如果(mouseX
谢谢!在你发帖之前,我自己就已经弄明白了,但我相信这对别人会很有帮助的!