如何在周期内运行的程序中处理事件(循环)



我已经处理了几天,现在我已经通过互联网进行了塞拉克,并尝试了我想到的一切,但无济于事。我的问题是我正在制作pexeso游戏,我们直接从学校里有一些额外的库或类似的东西,这使我们能够绘制一些图片而不是Comad Line ...(我们还没有图形),所以我的问题是我的游戏在周期中运行并等待我的单击SOM我正在检查是否进行单击,请检查条件。如果我想单击我只需要在我的代码中声明的方法公共void vyberSuradnice(int, int)

因此,问题在于我的游戏在周期中运行并检查是否进行了点击。但是,当单击时,执行了vyberSuradnice的方法,在那里我将其设置为artrbiute - cakatNaKlik上的 CC_3,因此可以单击并可以制作游戏的一步。但是,由于该功能在周期中运行,甚至甚至连如果我单击并在方法vyberSuradnice中更改属性的值,则在周期中运行的功能对此变化没有响应,因此游戏不在进行。这是单击

的方法
 public void vyberSuradnice(int paSuradnicaX, int paSuradnicaY) {
        this.riadokOdkry = (paSuradnicaY ) / 25;
        this.stlpecOdkry  = (paSuradnicaX - 10) / 25;
        if (this.riadokOdkry > this.aPocetRiadkov || this.stlpecOdkry > this.aPocetStlpcov) {
            System.out.println("Klikli ste mimo hracieho pola ");
        } else {
            this.cakatNaKlik = false;
        }
    }

这是我正在等待cakatnaklik的代码的一部分 - false value

while(uhadol){

 if (!this.cakatNaKlik) {
                if (this.pocetUhadnutych >= (this.aPocetRiadkov * this.aPocetStlpcov) / 2) {
                    uhadol = false;
                }
                this.hraciaPlocha[this.riadokOdkry][this.stlpecOdkry].setUhadnute(true);

,即使在方法中更改了该值Vybersuradnice,也不会触发此条件。但是当我做这样的事情时:

while (uhadol) {
             System.out.print(this.cakatNaKlik);   
                if (!this.cakatNaKlik) {
                    if (this.pocetUhadnutych >= (this.aPocetRiadkov * this.aPocetStlpcov) / 2) {
                        uhadol = false;
                    }
                    this.hraciaPlocha[this.riadokOdkry][this.stlpecOdkry].setUhadnute(true);

游戏通过编写变量刷新它或其他内容的工作就像...但是我在命令行上毫无疑问地打印true或false,这是我所能负担的...

我知道这可能是线程的dan,但这是我可以做的,我基本上是在尝试一次做两件事。

还有其他事情要这样做,即使没有该println,该变量也将被刷新,并且代码将起作用?

非常感谢所有帮助

感谢大家的帮助,我终于解决了它。我只是尝试在if条件下睡觉。它只需要睡一个milisecond,似乎已经刷新了这种情况。

尝试以下:

实现ActionListener接口或扩展实现ActionListener接口的类。例如:

public class MyClass implements ActionListener {
}

在一个或多个组件上注册事件处理程序类的实例为侦听器。例如:

someComponent.addActionListener(instanceOfMyClass);
instanceOfClass = this; //(if it is handled in the same Class)

包括在侦听器接口中实现方法的代码。例如:

public void actionPerformed(ActionEvent e) { 
    ...//code that reacts to the action... 
}

参考:https://docs.oracle.com/javase/tutorial/uiswing/events/actionListener.html

相关内容

  • 没有找到相关文章

最新更新