RUBYの宿題教えてください。at TECH
RUBYの宿題教えてください。 - 暇つぶし2ch263:デフォルトの名無しさん
06/05/30 14:32:48
じゃんけんだと、手の種類が2個だと勝敗が決まってるんだよな。
3のときと1のときはあいこだよな。
いちいち判定しないで
#仮想コード
players.find(winner_hand(*hands.uniq)) if hands.uniq.size == 2
とかでいけるんじゃないの?

Handクラスを作ってTyoki<-Paa<-Goo<-Tyokiとリンクリストみたいにして負けた方をincompatibleとして持つなら
def stronger(other)
@incompatible == other ? self : other
end
これだとwinner_handはいらなくて、
hands.uniq.inject{|a,b| a.stronger b}/*hands.uniq.size == 2*/で勝つ方の手が決まる。
まあ真偽値返すようにしてsortして[0]使うんでもいいけど。
Tyokiとかはインスタンスが違っちゃいかんのでHansの定数にするかシングルトンにするかクラスのまま使うかすること。

あとloopでgame呼ばないでgame側でloopしたほうがよさそうなのと
win_patternは普通にクラス定数の方がいいんじゃねえかと思うのと
gameでwinnerに@playersを代入してるけどインスタンス変数のまま使えばいいじゃんってのと
コンストラクタでやってる色々は引数にした方がいいんじゃねえかとか。

あとオブジェクト指向っぽくするならCOMPlayerとHumanPlayerを作ってVisitorパターン使ってplayさせてみるとか。
といってもVisitorパターンが最適とは本見なきゃわからん人なので今ひとつ断言できない。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch