我已经处理了几天,现在我已经通过互联网进行了塞拉克,并尝试了我想到的一切,但无济于事。我的问题是我正在制作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