2009年09月18日

Rubyの勉強9(すごろく編1)

本来の最終目標である人工無脳の話もしなくちゃいけないんですが、
なぜか脱線中ですごろくの仕組みについて考えていきます。

でもそれだけなのは申し訳ないので実は完成している人工無脳(試作)のチラ見せだけしておきます。

kani3_t2.jpg
kani3が無脳です。

すごく出来が悪いのでソースは晒しません。
実際は改良していくうちにぐちゃぐちゃのスパゲッティになってしまったので、最初から整理しなおして書き直すつもりでいます。
ちなみに形態素解析は使ってません。自前の仕組みである程度の言葉を拾ってます。
ただし完成度が低いので仕組みを補うための辞書も必要なのが現状です。

話を今回のテーマ「すごろく」に戻します。

VisualuRuby計画(仮称)だけでなんとかしたいので、まずは画面を作ってマスとコマを配置して
その上でコマを動かすところまでやります。

masu_b1.bmp cara1.bmp

今回使うマスとコマの画像です。必要なら保存して使ってください。

sugoroku_sp1.jpg
(画面の見本です、動きません)

まずはソースです。
__________________________
#! ruby -Ks

require 'vr/vruby'
require 'vr/vrcontrol'

class SgorokuForm < VRForm
include VRDrawable

def initialize
#各マスの座標
@m_z = [[10,10],[70,10],[130,10],[190,10],[250,10]]
@koma_z = [10,10] #コマのX.Y座標
end

def construct
self.caption = 'sugoroku.ver.0'
@font = @screen.factory.newfont('MS Pゴシック',12)
#マスとコマの画像の読み込み(maskomフォルダから読み込み)
@masu= SWin::Bitmap.loadFile("maskom/masu_b1.bmp")
@koma = SWin::Bitmap.loadFile("maskom/cara1.bmp")

addControl(VRButton, 'susume_btn', '進む',110,100,
30,20)
@susume_btn.setFont(@font)

end


def self_paint
(@m_z.size).times do |z|
drawBitmap @masu,@m_z[z][0],@m_z[z][1]
end
drawBitmap @koma,@koma_z[0],@koma_z[1]
end

def susume_btn_clicked
if @koma_z[0] != 250
@koma_z[0] += 60
else
@koma_z[0] = 250
end
self.refresh
end

end

VRLocalScreen.start(SgorokuForm,100,100,350,180)

__________________________
今回は画像をまとめて(maskom)という名前のフォルダに収めて読み込みのときはそこから呼び出してます。
マスはひとつの画像を並べて連続したマスにしてます。
self_paintメソッド内のブロックに注意してみてください。マスの増減の変更に対応できるようにしてます。

とりあえず今回はボタンを押すとコマがひとマスづつ移動します。
座標に+=60づつ(マスの幅が60ピクセル)していくだけです。
ただしそれだと押し続けるとコマがマスの外へ出て、画面の外へも出て行ってしまいますから、
if文でX座標が250(最後のマスの座標)でなければ+=60して
それ以外(X座標が250)ならばそれ以上は動かないようにしてます。

今回はここまでです。

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

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

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