您需要将当前移动方向存储在某处,因此将其添加到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;
如果你知道如何在屏幕上绘制以及如何工作,我会认为这更多是关于降低逻辑。
这个代码片我粗暴地从你的问题中撕下来就在渲染发生的地方旁边(一个问题,因为我把它视为相当无组织;我建议游戏逻辑和渲染发生在两个不同的函数中)。它基本上表示如果超出屏幕右侧它将向右移动,如果不是,如果它超出屏幕左侧则向左移动,最后,如果不是,它将向左移动。
if (Game.moveX >= Game.WIDTH) { Game.moveX ++; } else if (Game.moveX <= 0) { Game.moveX --; }else { Game.moveX++; }
如果你想让它反弹,你将不得不使用布尔来跟踪它的移动状态,或者,如果你想要更多的多功能性,使用一对浮点数或双打(浮点数通常用于Java游戏设计)来跟踪它的位置,另一个的速度。我现在处于紧张状态,我会回来的。
将此添加到渲染处理程序而不是渲染中的当前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--;