2010年 02月19日(Fri) [長年日記]
_ [ruby][プログラム][DXRuby]カードゲームの汎用フレームワーク作成(第0回)
趣味のプログラミングの次のネタを探していろいろ考えてたんですが、ふとタイトルのようなものを作るといろいろ便利なのではないかと思ったので、着手してみる事にした。
いつもの如く途中で飽きるかもしれないので、適当に読み捨てると良いかも。
ゲームエンジンはDXRubyを使ってみようと思う。あまり凝った事をしないと思うのでこれで十分かと。
_ [ruby][プログラム][DXRuby]カードゲームの汎用フレームワーク作成(第1回)
とりあえずカードを表示してみよう。
汎用を目指すので、パラメータはYAMLで与えるとしよう。とりあえずカードの表、裏の画像と幅、高さを次のようなパラメータで与えるものとする。
- test.yaml
face: face.png back: back.jpg width: 40 height: 60
- face
- カードの表側画像ファイルのパス
- back
- カードの裏側画像ファイルのパス
- width
- カード表示時の幅
- height
- カード表示時の高さ
まずは裏側だけを表示してみよう。カードのクラスは以下のようになる。
- card.rb
#coding: utf-8 require 'dxruby' class Card def initialize(card) @img = {} @hash = { :face=> { :centerx => 0, :centery => 0, }, :back=> { :centerx => 0, :centery => 0, } } @img[:back] = Image.load card["back"] @x, @y = 0, 0 @hash[:back][:scalex] = card["width"].to_f / @img[:back].width @hash[:back][:scaley] = card["height"].to_f / img[:back].height @state = :back end def paint Window.drawEx @x, @y, @img[@state], @hash[@state] end end
とりあえず表示だけ。
- test01.rb
#coding: utf-8 require 'card' require 'yaml' data = YAML.load_file "test.yaml" card = Card.new data Window.loop do card.paint end
画像貼ろうかと思ったけど、使った画像の著作権を確認していないので今回は止めとく。