关于java小游戏的暂停,退出和从新开始

【关于暂停】
这里我只举线程类暂停。我的游戏只设置了一个多线程,是用来repaint的,所以当不执行repaint时,游戏画面就会进入停顿(但是监听还在)。这时设置暂停我们需要注意一点就是不能让线程停止,我一开始试了很多方法,都是将run里的while死循环的判断条件改为了false,这样导致的结果是游戏确实暂停了,但是却继续不了了,原因就是你的线程已经结束了(run方法执行完了),想再继续游戏就要新start一个线程,显然这样太麻烦了,所以我们不能让run里面的while死循环停止,经过多次尝试发现可以在while死循环内部再写一个暂停死循环
在这里插入图片描述
如图,蓝色部分外的是没有添加暂停之前的正常的线程,是个死循环,在内部又加了一个死循环,pause一开始为false,所以一开始外层while死循环不执行内层死循环,当pause为true时,内层死循环开始,就不再执行内层while以外的代码,也就做到了停止repaint,画面停止的效果,再让pause=false,内层死循环结束,继续我们的外层死循环,又开始repaint,这样画面就又动起来了,而从头到尾我的线程仍然没有结束,不需要再开启新线程。还要注意的是在按键监听或者鼠标监听的所有代码前面加一个if(!pause)。如此一来,暂停效果就达到了。

【关于退出和从新开始】

这里我放到一类里说,就是按键比你新弄个按钮要简单的多,大多数同学游戏应该都有按键监听,所以直接设置两个新键就行了,退出游戏无非就是关闭当前窗口,框架直接继承了KeyListener接口的,在监听方法里可以直接写this.dipose(),如果不是的话需要把框架对象传进去。

重新开始游戏就是在关闭当前窗口的基础上再new一下这个游戏窗口,有静态变量的需要全部手动设置为初始值,还需要注意一些对象的销毁和当前线程的停止。

这些只是针对大部分游戏有效,因为每个人的可能都不太一样,可以参考一下。

猜你喜欢

转载自blog.csdn.net/weixin_42822484/article/details/97787776