3 回答
TA贡献1934条经验 获得超2个赞
如果您知道如何在屏幕上绘图以及这些东西是如何工作的,我认为这更多是为了降低逻辑。
我如此残酷地从您的问题中撕下的这段代码片段就在渲染发生的位置旁边(这是一个问题,因为我认为它相当无组织;我建议游戏逻辑和渲染在两个不同的功能中进行)。它基本上是说如果超出屏幕右侧,它将向右移动,如果不是,则如果超出屏幕左侧,它将向左移动,最后,如果不是,它将向左移动。
if (Game.moveX >= Game.WIDTH) {
Game.moveX ++;
} else if (Game.moveX <= 0) {
Game.moveX --;
}else { Game.moveX++;
}
如果你想让它反弹,你将不得不使用一个布尔值来跟踪它的移动状态,或者,如果你想要更多的通用性,使用一对浮点数或双精度数(浮点数通常用于 Java 游戏设计)来跟踪它的位置,另一个是它的速度。我现在很紧张,我会回来的。
TA贡献1875条经验 获得超5个赞
将此添加到渲染处理程序而不是渲染中的当前 if 语句
bool rol = true; // initialize this outside the method
If(Game.movex + 50 >= Game.width)
rol = false;
Else if(Game.movex <= 0)
rol = true;
If(rol)
Game.movex++;
Else
Game.movex--;
TA贡献1752条经验 获得超4个赞
您需要在某处存储当前移动方向,因此将其添加到 Game 类:
public static int deltaX = 1;
并将 render() 中的条件替换为
if (Game.moveX >= Game.WIDTH-50) {
Game.deltaX =-1;
} else if (Game.moveX <= 0) {
Game.deltaX =1;
}
Game.moveX += Game.deltaX;
添加回答
举报
