2013-06-01 84 views
0

我正在爲一個大學項目構建一個使用Java的遊戲。遊戲首先必須使用文本界面,而後來我們不得不添加一個GUI。Java:控制器線程通信的GUI

我有一個線程運行遊戲邏輯和更新遊戲模型,以及一個單獨的線程,帶有主函數的線程,將JFrame實例化,然後根據遊戲狀態切換面板(控制器告訴gui使用setPage方法顯示哪個框架)。

但是,獲取用戶輸入是現在讓我瘋狂的原因。 使用文本界面,我只需要調用一個方法,比如getPlayerNum,然後在用戶輸入數字並按下回車鍵後,我會將輸入返回給控制器。 所有的遊戲邏輯都是在遊戲循環中實現的,當需要輸入時要求輸入並將輸出通知給視圖。

我現在如何模擬類似的行爲,我不得不使用基於事件的gui? 如何在用戶單擊按鈕之前阻止方法調用,然後讓該方法返回正確的值?

+1

您需要完全重新考慮您的程序結構,以便它不是線性的,而是狀態和事件驅動的。不要「阻塞」方法,而是根據模型的狀態改變程序對事件的響應。 –

+1

有關更詳細的答案,請考慮詢問更具體的問題,並附帶一小部分可編譯和可運行的示例代碼。 –

+1

感謝您的回答。老師建議構建文本界面爲「它會引導您正確構建遊戲循環」,他「忘記」提及的是我們的目的是將請求和用戶的答案分開。 我花了一段時間把所有東西都分開了,但現在它已經升級並且正在運行。 – Alakanu

回答

1

開發獨立遊戲模型的榮譽。作爲設計GUI的前奏,從這個非常簡單的game開始。添加一個監聽模型並報告遊戲進度的TextView。這將幫助您瞭解GUI的工作原理,並可幫助您確定模型中可能需要的附加功能。

+0

感謝您發佈的示例,這是一個很好的例子,我希望我之前看到的方式比今天更好。 – Alakanu