«前の日記(2010年 02月18日(Thu)) 最新 次の日記(2010年 02月21日(Sun))» 編集

日記のような何か

2002|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|08|09|10|11|12|
2020|01|02|03|04|06|07|08|09|10|11|12|
2021|01|02|03|04|05|07|08|10|11|12|
2022|01|02|03|04|05|06|07|08|10|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|09|10|11|

ようこそいらっしゃいました。
あなたは今日人目、合計人目のお客様です(ちなみに昨日は人のお客様がいらっしゃいました)。
よろしければツッコミに足跡等を残していって下さいな。

My status ← skypeやってます。


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

画像貼ろうかと思ったけど、使った画像の著作権を確認していないので今回は止めとく。


Googleカスタム検索

my recommend books