RUBYの宿題教えてくだ ..
263:デフォルトの名無しさん
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
4664日前に更新/173 KB
担当:undef