→ togs:該不會上面這是正確解答? 11/20 05:31
不好意思,稍微自問自答一下
發文前雖然已經看過上面那個網址,但當時看不太懂
後來看了另一篇文章,加上自己實作(修改程式)後,
終於理解網址(同上面): http://www.java-gaming.org/index.php?topic=24220.0
裡面一部分的意思,並且真的可行( ̄▽ ̄)b
雖然仍然不懂
doGameUpdates();
render();
這兩段的意思
(doGameUpdates似乎是更新遊戲資料?,
但render就真的不曉得了。該不會是重繪圖形或GUI?)
但終於做出遊戲攻防交替的動作了 (跪
程式大致如下:
public class CardBattleFrame extends JFrame{
boolean loopIsRunning = true;
... //中間省略 (設定參數
public CardBattleFrame() throws Exception {
... //中間省略 (設定JLabel位置 JPanel外觀樣式
loopGame(); //進入遊戲迴圈
}
void loopGame() throws InterruptedException{
while(loopIsRunning == true){
switch (nowRunningStepNumber) {
case -1: break;
case 0:
playerTurnStart(); //進入玩家回合
nowRunningStepNumber = -1; //之後每次進入loop則跳出
break;
case 1:
enemyTurnStart(); //進入敵人回合
nowRunningStepNumber = -1;
break;
default:
}
Thread.sleep(1); //每隔1毫秒重新進loop一次
}
當玩家點選名為"玩家回合結束"的JButton時,
將nowRunningStepNumber的值設為1,
此舉使得(一毫秒過後)再次進入loop時,
enemyTurnStart()這個方法將會被執行
接著在enemyTurnStart()這個方法的最後一段敘述裡
加上一行: nowRunningStepNumber = 0;
則程式再次進入玩家的回合
依此類推,玩家不斷在loop間循環,
直到loopIsRunning被改為false
最後: (cardGame為自訂名稱)
public static void main(String[] args) throws Exception {
CardBattleFrame cardGame = new CardBattleFrame();
}
如此一來遊戲程式就可以開始跑了
目前(正在學習中的初學者)在下的體認只到這裡
感覺上switch可以換成更為簡單的寫法,(換言之可能沒必要用到switch
雖然實作上這樣的程式可以讓玩家在攻防之間來回跑
但不曉得這樣做是否恰當與適合?
還請多指教<(_ _)>
※ 編輯: togs 來自: 36.224.211.167 (11/20 06:36)
推 ypsps:switch用if + bool 會更快點? 雖然沒什麼差.. 11/27 11:21