2009年08月12日

Rubyの勉強5

最近では家族で双六やボードゲームをするなどという光景も珍しくなってきたように思います。
そんな話をしていたとき、
「サイコロを振るソフトを作れないかなぁ」
という話になりました。

たまに友人が集まった時などに、思い出したようにボードゲームをしたくなるときがある、と。
だけど、どこにしまったのか家中を探してもサイコロが見つからないときがある、と。
そんなときにデスクトップとかにちょこんとあると嬉しいかもしれない……。

じゃあプログラムで作ってみましょう、というお話です。
Rubyならサイコロといえば

puts rand(6)+1

とかやるだけなので簡単なんですが、よくよく話を聞くと

・サイコロは六面体、八面体、十面体などが選べること
・ふる個数を自由に指定できること
・できれば1~100までの乱数も(100パーセントロール)出せると良い

という希望が出てきました。
単なる双六とかではなく、ウォーゲームとかTRPGやカードゲームなどに使えるようにという事です。

ああ、ウォーゲーム懐かしいなぁなどと思いつつ、
とりあえず後でいろいろと仕様変更があっても良いようにクラスにしておきました。

__________________________

#! ruby -Ks

class Dice

def initialize
@kekka = 0
end

def dice_r(men,kosu)
kosu.times do
@kekka += rand(men) + 1
end
end

def dice100
@kekka = rand(100) + 1
end

def kekka
@kekka
end

end

__________________________

あとでGUIを作って、それと組み合わせる事にします。
主なメソッドは2つです。

dice_r は、サイコロが何面体なのかと個数を受け取って、
個数回ぶんサイコロをふり、毎回ふるたびに出目を@kekkaに加算していきます。

dice100 は100パーセントロールに対応したもので、
やはり結果を@kekkaに渡します。

kekkaメソッドは@kekkaの値を参照するだけのものです。

すごく簡単なものなのでわざわざクラスにしなくても良いとは思うんですが、
一応、今後何かに使いまわすことが無いとも言い切れないので。

あとはGUIで入力と操作の画面を作れば完成です。


今回もどこか間違ってたら暖かいツッコミをお願いいたします。

 
posted by Hol_nice at 23:24| Comment(0) | TrackBack(0) | プログラム | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください

この記事へのトラックバック