#前提
javaのswingを用いてGUIの将棋ソフトを作成しています。
ほぼ趣味プログラマーであり、プログラミング初心者です。
厳格で純粋なオブジェクト指向に近いコードで綺麗に書く事を目標とします。
そのため、早く軽快な動作は期待しません。
ソースコードを短くするという事も期待しません。
#制作途中のクラスの関係
MVC(Model View Controller)の考え方に添い、3つのパッケージに分割しています。
Controller
入力制御クラス(入力から盤面クラスに指示)
View
画面出力クラス
Model
駒クラス(抽象)
歩、金、成桂などのクラス
升クラス(1つの駒クラスと、先手後手どちらの駒であるかを保持)
盤面クラス(81つの升クラスを保持)
#質問
画面出力クラスが盤面クラスの情報を知り、その情報から表示する駒の画像を決める。
この処理をどうすれば良いのかどうしても思いつきません。
何かアイディアをください。
ただ実装すれば良いだけなら2通りの方法が思い浮かびましたが、どちらも良い方法ではありません。
1.盤面クラスのメソッド(引数は座標)を呼んで升クラスを返して貰えば、画面に表示させるのに必要な情報がわかる。
その情報からifかswitchを使い画像を選択する。
これは全くオブジェクト指向的ではないので問題外です。
2.駒クラスが最初に画像を読み込み保持しておく。そして盤面クラスのメソッド(引数は座標)を呼び、駒の画像を返してもらう。
この場合MVCの役割が破綻しています。
#追記
目的に対して適切な手段を取るのが正解との事で、ModelとViewに分ける目的をある程度はっきりとさせておきます。
後にコンソールで動く将棋ソフトを作る際、Model部分を変更させずに再利用できる様にすると言う事が目的です。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/25 04:21
2017/02/25 09:25
2017/02/25 11:00