能解释一下这个java桌球程序吗

能解释一下这个java桌球程序吗,第1张

计算到了碰撞,这很像是一个JAVAME的游戏啊~~

collisions()

表示定义了一个碰撞的方法,在里面分别调用了边界、球洞和球的碰撞方法;

calculateNext(long millis)

从名字来看,应该是计算球的下一毫秒的位置,double segs = millis / 10000; 是表示根据时间来计算的位置的单位,millis应该是毫秒

nextX[i] = x[i] + vx[i] segs;

nextY[i] = y[i] + vy[i] segs;

这两句应该就是计算球的位置的偏移量的;

if (Mathabs(Mathhypot(vx[i], vy[i]))<2) {

vx[i] = 0;

vy[i] = 0;

}

Mathabs(Mathhypot(vx[i], vy[i]))是计算球的移动距离的,至于两个Math方法的作用你可以去查API,学java的一定要懂得利用API

holesCollision()

这个方法就是判断球进洞的方法,

for (int iHX=0; iHX<3; ++iHX) {

for (int iHY=0; iHY<2; ++iHY) {

应该是球台上的6个洞的坐标,然后判断如果球的坐标与洞的坐标相等了,就表示球与洞碰撞了,即球进洞了

以上皆为推测,因为只看到这小部分代码,可能部分不准确的

1、所谓“暂停”,就是程序暂等待。

2、在java中暂停,有几种方法,如线程wait或是sleep或是yield等,自己百度查一下这些方法的用法,就可以解决你的问题了~

试试吧

你说的应该不是sleep吧。呵呵,

这么简单的话,就没必要在这里问了。

我猜测呢,你是要在多线程计时任务

Task线程里面有个while循环?

那么你需要一个TimerTask 来控制这个线程,也就是计时线程。

那么这个计时线程,有两种方法~

第一种,比较不讲究的方法,也就是,对结果处理不好的方式,类似于过时方法的stop,就是把你的Task线程在TimerTask里面启动。

TimerTask里面类似于

while(true){

Taskstart();

Date date = new Date();

while(true){

计算时间差,如果时间差大于超时时间,则break

而在Task线程中,需要加上一行代码

thissetDeamon(true);

将这个task任务设置成后台线程。

因为是TimerTask启动的这个后台任务线程, 一旦超时,那么,这个后台线程Task将会被强制shutdown 。

这种方式适用于不怎么严格的线程要求。

还有一种呢,就是比较严格,对后台处理要求很高的那种。

就是两个线程中需要有共享的变量,将结果,运行状态,都要共享,当TimerTask发现超时的时候,会判断Task线程的处理结果。以及运行状态,而做出相应的处理。

你问的问题比较宽泛。所以,我只能大致的把思路给介绍一下。

如果,能牵扯到实际的问题,那样就容易判断用那种方式的线程超时机制比较好了。呵呵

最后,节日愉快~~

如果你是在Linux, ps -ef | grep java 拿到pid, 再 kill -9 pid

如果你是在windows, 直接打开任务管理器, 打到Java进程,停止它

以上就是关于能解释一下这个java桌球程序吗全部的内容,包括:能解释一下这个java桌球程序吗、java中如何实现暂停程序,单击按钮继续、java 多线程如何让程序运行一定时间后停止等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10209805.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存