我和我正在研究一種遊戲,基本上,我們有一個擊中格設立在那裏,如果我們的性格撞擊它(蜘蛛),字符失去健康的朋友。遊戲計時器延遲損害
因爲我們使用一個for循環中,不可避免的發生了,玩家通過1失去他們的健康1,但如此之快,人眼無法看到它。因此,我們需要一個計時器,暫停,或者每玩家擊中蜘蛛的x時間量。這裏是我們的代碼:
if (ResetEntities.spiderObj.intersects(ResetEntities.blueCharacterObj)) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
for (int i = 0; i < 100; i++) {
if (ResetEntities.blueHealth < 0) {
ResetEntities.blueHealth = 0;
Frame.blueHealthLabel.setText("Health: "
+ ResetEntities.blueHealth);
} else {
ResetEntities.getBlueHealth(ResetEntities.blueHealth - 1);
Frame.blueHealthLabel.setText("Health: "
+ ResetEntities.blueHealth);
}
}
}
在這段代碼中,我們有一個if語句來檢查相交。我試圖睡覺劇本,(我意識到10速度非常快,但是1000落後於可怕,所以Thread#sleep
不是我想象的方式)。然後我們有一個運行100次的聲明(作爲球員的健康狀況)。然後我們有一個如果看到健康是否低於0,回到0,所以玩家不能得到負面的健康。如果它不低於0,我們做其他的並且減去1生命值。但正如我所說,這跑得太快,看不到。
任何幫助?
您的代碼是一種方法。嘗試睡眠100L到200L毫秒。 – 2013-03-11 15:41:48
如果你想在'Java'遊戲中設置'Timer',我建議你使用'javax.swing.Timer'而不是'Thread'。 – Rob 2013-03-11 15:45:31