そんな話をしていたとき、
「サイコロを振るソフトを作れないかなぁ」
という話になりました。
たまに友人が集まった時などに、思い出したようにボードゲームをしたくなるときがある、と。
だけど、どこにしまったのか家中を探してもサイコロが見つからないときがある、と。
そんなときにデスクトップとかにちょこんとあると嬉しいかもしれない……。
じゃあプログラムで作ってみましょう、というお話です。
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で入力と操作の画面を作れば完成です。
今回もどこか間違ってたら暖かいツッコミをお願いいたします。