2010-06-04 25 views
1

我正在用Java編寫一個基本的tic tac腳趾遊戲。 在我的Board類中,我有一個揮杆窗口,它確定按下哪個按鈕。 TttGame是具有Board對象的類。如何簡單地使用Java發送事件?

該董事會的目標不是作爲一個功能齊全的井字棋板,而是作爲TttGame類控制所有邏輯的框架。因此,我需要董事會發送某種事件,當按鈕被按下時,按鈕被按下到TttGame類。

這樣做的最簡單方法是什麼?

編輯:我發現了一種叫做觀察者模式 - 這是最簡單的這樣做的方法嗎?

+2

在另一個筆記...不打字「TttGame」只是讓你瘋了嗎? – Timothy 2010-06-04 14:49:03

回答

3

是的,觀察者模式是你想在這裏應用。創建一個監聽器接口(BoardListener)也許是這樣的:

public interface BoardListener { 
    public void squareSelected(int x, int y); 
} 

然後通過他們保持聽衆的SetListBoard類和週期,呼籲squareSelected每個,選擇一個正方形的時候。

但是我會查看模型 - 視圖 - 控制器模式,其中視圖監聽模型的更改,並且控制器檢測用戶操作並相應地更改模型。

+0

我已經在我的理事會課上做過 - 我需要讓理事會班級通知遊戲類 – 2010-06-04 14:48:37

+0

啊,誤解了。答案已更新。 – 2010-06-04 14:51:32

+0

警告詞:對於Board類中的監聽器列表,請使用CopyOnWriteArrayList。這可以防止在電路板通過偵聽器循環的情況下發生ConcurrentModificationException,並且在迭代過程中偵聽器嘗試刪除自身。 – Adamski 2010-06-04 14:53:22

0

我會建議改變你的設計了一下。掌握遊戲邏輯和跟蹤棋盤上的棋子位置都可以在「引擎」(或一系列沒有視覺顯示的類)中完成。

然後,您將擁有一箇中間班級,用於將所有片段位置傳送到可互換的顯示類。它也可以處理從顯示類到引擎的任何通信(例如點擊以放置X或O)

P.S.我正在考慮跳棋,而不是打字時打字,但設計仍然適用

相關問題