我试图制作游戏蛇时遇到了一些问题。我的第一个问题是我无法将食物广场和蛇形广场完美地重叠。换句话说,食物总是有点偏离。
我的第二个问题是该程序有时不会认识到蛇与食物相交。它会认为当蛇稍微高一点时,它就会相交。
我的第三个也是最后一个问题是,每当程序确实看到两个对象相交时,它就不会产生像传统游戏中那样的第二条蛇。
这是它应该产生一条新蛇的部分:
public void paintSnake(Graphics g){
g.setColor(Color.green);
g.fillRect(food.x, food.y, food.width, food.height);
for(int i = count; i <= count; i++){
g.setColor(Color.red);
g.fillRect(snakes.x - 25, snakes.y - snakes.width - (i*5), snakes.width, snakes.height);
}
}
这是程序检查两个对象是否相交的地方
if (snakes.intersects(food) && snakes.y == food.y && snakes.x == food.x){
count ++;
System.out.println(count);
food.x = randx;
food.y = randy - 10;
}
下一部分来自代码中的三个不同位置。第一个是食物块的坐标:
snakes = new Rectangle(WIDTH / 2, HEIGHT / 2, 20, 20);
food = new Rectangle( snakes.x, snakes.y, snakes.width, snakes.height);
蛇第一次与食物块相交后,会产生一个随机数,在那里使用:
randx = (int) (Math.floor(Math.random()*80)*10);
randy = (int) (Math.floor(Math.random()*80)*10);
在这两行中将数字分配给食物对象:
food.x = randx;
food.y = randy;