[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] Re: オセロのクラス構造
>・AWT以外の実装もあるかも知れないので、ひとつのインプリメン
> トとして、インタフェースの陰に隠します(だったら名前にAWTを
> 入れるべきか?)。
将来 Swing とかに拡張するなら、そうした方が良いかも。
> Action getEvent() ... Actionは、int x, int yをメンバとする
> クラスです。どこがクリックされたかしら、という情報を返します。
> これを呼び出すスレッドは、Judgeのスレッドなので、アプレッ
> トのイベントドリブンなスレッドと、wait()/notify()を使っ
> て待ち合わせます。
java.util.EventObject を拡張したイベントクラスを書いて、
これを受け取れる Listener を書いた方が良いです。
この場合、OthelloPanel とかいう名前の、JavaBeans として
書く事になると思います。
> # setBoard()メソッドは、OthelloWindowインタフェースに含める
> # べきでしょうか? それとも、OthelloWindowImplでいい?
OthelloPanel インターフェースかな。
>・put(int x, int y, int senteOrGote) にて、石が置けます(どう
> してもenumが欲しい!!).
boolean isSente でもオーケー?
>・Boardと、ふたつのPlayerに対してポインタを保持します。
「Boardのインスタンスと、ふたつのPlayerインスタンスを保持します」
の方が分かりやすいです。
>・Boardに対してポインタを持ちます。
「Boardのインスタンスを保持します」かな。
>◎HumanPlayerクラス
>・人間のプレイヤを代行するクラスです。
これは将来通信対戦したりできるように拡張するんですか?
(そうすると、
OthelloサーバーとOthelloクライアントとして実装する必要が..)
>・OthelloWindowへのポインタを保持しています。
なぜこのインスタンスを保持する必要があるのでしょうか。
>・requestAction()がコールされたら、OthelloWindowのgetEvent()
> メソッドを呼んでどこがクリックされたかを取得し、Boardの
> put()をコールします。
>・noticePass()がコールされたら、OthelloWindowにお願いして、
> ダイアログを出してもらいます。
この辺が良く分からないです。HumanPlayerがイベントを中継してやる
のでしょうか?
>◎OthelloConstantsクラス
>・定数を定義します。BOARD_SIZE(8)とか、SENTEとか、GOTEとか、
> SENTE_CELLとかGOTE_CELLとかBLANK_CELLとか...
BOARD_SIZE は Board が知っているべき定数なので、
Board に含めるべきだと思います。
他の定数値も同様で、
それぞれ収めるべきクラス(またはインターフェース)が
あるはずです。
SENTE、GOTE については、私なら boolean を使ってしまいます。
>設計関連の本を買うことはあっても、真ん中辺からナナメ読みになっ
>たり、積ん読に移行することが多いので、シロートの設計ですが...
やはりオブジェクトの気持ちになることが重要でしょう。:}
# ↑エラソーに言ってますが、私も最近知ったばかりの発想法です。
--
えんどう やすゆき <yasuyuki@xxxxxxxxxx>
http://www.javaopen.org/jfriends/ (Java互助会ホームページ)