我有一个问题我正在做一个台球游戏,当我模拟击球时我需要球做出反应,程序的工作原理是这样的,你点击击球的方向和力量,然后点击 go,go 按钮在创建我的标签的 GUI 类中,按钮从我的主类调用一个接收参数的方法,然后在其中一段时间,更改球的 X 和 Y,直到功率降低到 0,然后停止,代码正在运行,但球一直移动,直到 while 停止。所以while有效,当power int为0时,while熄灭,然后绘制新的X,Y。
这是按钮调用的函数,按钮发送所有参数
public void golpe(int pbola, int pvelocidad, String pdireccion, JLabel[] listalabels) throws InterruptedException{
listabolas[pbola].setVelocidad(pvelocidad);
listabolas[pbola].setDireccion(pdireccion);
while (listabolas[pbola].getVelocidad() > 0) {
moverBola(pbola, listalabels);
//System.out.println(listabolas[pbola].getPosX());
//System.out.println(listabolas[pbola].getPosY());
Thread.sleep(500);
//This line is supposed to change the X and Y of the object over and over
//but only does it till the end
listalabels[pbola].setLocation(listabolas[pbola].getPosX(), listabolas[pbola].getPosY());
}
}
这是函数 moverbola(),只复制了一个“if”,这样代码看起来不会太大
private void moverBola(int pbola, JLabel[] listalabels) {
if (listabolas[pbola].getDireccion().equals("SE")) {
int pposX = listabolas[pbola].getPosX();
listabolas[pbola].setPosX(pposX + 1);
int pposY = listabolas[pbola].getPosY();
listabolas[pbola].setPosY(pposY + 1);
}