クラスとは


クラスとは、データや処理をひとまとまりにまとめたものです。

例えば、RPGで「キャラクタは、ステータスに力(power)をもっていて、攻撃力(strength)は力×2倍と計算される」というようなルールがあるとします。
powerはデータ、攻撃力計算は処理ということになります。

いずれもキャラクタに関連するものですから、キャラクタでグルーピングすると便利でしょう。
このようなグルーピング(分類)をクラスと呼びます。

サンプル:キャラクタクラス


以下のようなキャラクタクラスを作ってみましょう。

  • キャラクタは名前(name)、力(power)、体力(stamina)を持つ
  • 攻撃力(strength)は力の2倍
  • 防御力(defence)は体力の半分

# キャラクタクラスの定義
class Character
  # キャラクタクラスが持つ値
  # name, power, stamina
  attr_accessor :name, :power, :stamina

  # 初期値などを設定する初期化処理
  def initialize
    @name = ""
    @power = 10
    @stamina = 10
  end
  
  # 攻撃力計算
  def strength
    power * 2
  end
  
  # 防御力計算
  def defence
    stamina / 2
  end
end

# キャラクタクラスを使ってみましょう

# キャラクタ「まじたい」を作ります
majitai = Character.new
majitai.name = "まじたい"
majitai.power = 8
majitai.stamina = 4

speak("名前:#{majitai.name}、攻撃力:#{majitai.strength}、防御力:#{majitai.defence}")


属性(インスタンス変数)


クラスが持つ値のことを属性(インスタンス変数)と呼びます。
attr_accessorメソッドで定義することができます。

class Character
  # キャラクタクラスが持つ値
  attr_accessor :name, :power, :stamina

  # 以下のように行を分けて書いても構いません
  # attr_accessor :name
  # attr_accessor :power
  # attr_accessor :stamina
end


attr_accessorメソッドを使わずに定義することもできます。

class Character
  # 下の1行と同等の定義を行う
  # attr_accessor :name
  
  def name
    @name
  end

  def name=(value)
    @name = value
  end
end


メソッドとは


クラスが持つ処理のことをメソッドと呼びます。

class Character
  def strength
    power * 2
  end
end


インスタンスを生成する


インスタンスとは、クラスを具象化したものです。
仮に、「まじたい」というキャラクタがいるとしましょう。
まじたいは、キャラクタクラスのインスタンスということができます。

# インスタンス生成
# このタイミングでinitializeメソッドが自動的に実行されます
majitai = Character.new


初期化処理(initialize)


初期値を設定する場合はinitializeメソッドを定義してください。

class Character
  # 初期値を設定します
  def initialize
    @name = ""
    @power = 4
    @stamina = 2
  end
end


なぜクラスを使うのか?


古代ローマ人は「分割して統治せよ」という哲学のもとに、2000年も前に通信も移動手段も未熟な時代に巨大帝国を運営しました。ゲームシステムは巨大で複雑です。巨大で複雑なものを扱うには、「分割して統治せよ」の教えに従うべきです。

システムをクラスに分割することで、巨大で複雑なものを管理しやすい小さな塊の集まりにすることができるのです。

ぜひとも、クラスを使いこなして、様々なゲームを実現させてください!


サンプル一覧

チュートリアル1 - ようこそ、Rmakeの世界へ

アニメーションとモーション
あたり判定の初歩、タップすると話すキャラ
あたり判定の応用、キャラクタ同士の衝突
弾を打つキャラクタ
ソースのロードとライブラリのロード

サンプルゲーム

サンプル - 脱出ゲーム
脱出ゲームのサンプルです。

サンプル - シューティング
弾幕シューティングゲームのサンプルです。

まじたいスリーマッチパズル
スリーマッチパズルゲームのサンプルです。

お知らせ

2014/03/04 ver. 0.1.39 を公開しました!
・0.1.36でWindowsで起動しない問題を修正しました
(Android版はバージョン番号のみの変更です。)

2014/03/04 ver. 0.1.36 を公開しました!
・アプリケーションアイコンを変更しました
・セーブ・ロードを繰り返すとアプリが強制終了する問題を修正しました
・他、重大なバグを修正しました

ダウンロードはこちらから。

2013/07/17 Code on Rmakeをα公開しました!