編輯:這讓我對現在更加理解,因爲我已經離開了代碼一步,感謝您的幫助。j2me「回合制」遊戲的Gameloop
剛剛發現堆棧溢出有一天通過編碼恐怖,它看起來很棒。我會問社區關於我目前正在努力解決的一個問題。
我正在開發一款使用j2me for midp 2.0手機的roguelike sortof遊戲。當我弄清楚它將如何工作時,該項目仍處於發展的基本階段。我目前堅持的部分與線程有關。
遊戲有一個定製的HaxCanvas
類,它擴展了GameCanvas和Implements runnable。它的運行方法調用repaint(),然後睡眠50 ms,結果幀率爲20 FPS。這使我可以編寫遊戲的其餘部分,而無需在任何地方進行重繪,並且稍後應該使動畫和效果更容易完成。 (至少在理論上)。
遊戲的流程由一個GameManager類控制,該類可以循環遍歷地圖上的所有NPC,輪到他們,直到輪到玩家。在這一點上,我需要獲得投入,讓玩家移動和/或攻擊事物。我原本在HaxCanvas
的keyPressed
方法中調用gameManager.runUntilHeroTurn()
。然而,在讀完j2me系統線程後,我意識到將一個方法放在回調中運行一段時間是一個不好的主意。但是我必須使用keyPressed來完成輸入操作,因爲我需要訪問數字鍵,並且getKeyStates()
不支持此操作。
我試圖把我的gameloop放在它自己的線程中,結果導致了災難。一個奇怪的「未捕獲的ArrayIndexOutOfBoundsException」沒有堆棧跟蹤顯示出來後,遊戲已經跑了好幾個回合。
,所以我想我的問題是這樣的:
對於「回合制」遊戲在J2ME中,什麼是執行遊戲循環的最好辦法,允許輸入僅HANDELING當它是玩家的大轉彎?
順便說一句,好問題。 +1 – Fostah 2009-02-26 14:49:18