アットウィキロゴ

トップページ > Ruby > level4



クラス(基本)


クラスを作る

オブジェクト指向のページにもありますが、Rubyのクラスは
C++と定義の仕方は同じです

class クラス名

end

ただし、クラス名の頭文字は必ず英大文字でなくてはいけません

オブジェクトを生成する

クラスを定義しただけでは意味が無いのもC++と同じです
ちゃんとオブジェクトを生成しましょう

変数 = クラス名.new

newはクラスを使ってオブジェクトを生成するメソッドです

クラスにメソッドを入れる

クラス内にメソッドを定義します
メソッドの定義は前章でやったので割愛します
クラス内のメソッドを呼ぶ場合

オブジェクト(変数)名.メソッド名

と、ドット演算子を挟んで、どのオブジェクト(クラス)から呼ぶのかをきちんと示します
ちなみに、クラス内で定義されたメソッドを「インスタンス・メソッド」と呼びます

インスタンス変数(メンバ変数)

簡単に言えば、「クラス内だけで使える変数」です
この辺もオブジェクト指向ページで説明しているので、そっちを見てください
Rubyでは

@変数名

@(アットマーク)を付けるとインスタンス変数になります
スコープの範囲など、その辺の関係は下の表を見てください

変数の種類 先頭に付ける記号 スコープ範囲
ローカル変数 なし メソッド内のみ
インスタンス変数 クラス内(インスタンス・メソッドを含む)
グローバル変数 ソース全体(クラス・メソッド共に)

initializeメソッド

コンストラクタみたいなものです(分からない人はオブジェクト指向ページを参照)
つまり、インスタンス変数などの初期化を行うメソッドです
このメソッド内の処理は、newでオブジェクトが生成された瞬間に呼ばれます

継承

これもC++と考え方は同じです
違うのは::(スコープ解決演算子)ではなく

class 派生クラス名 < 基本クラス名

と、小なり記号を使う点です
後は、必要なメソッドを書き足すだけです

クラス(応用)


シーン・クラス

Rubyでは、クラスは「1つのメイン関数」です
普通ゲームには「タイトル画面」「メニュー画面」「ゲーム画面」など複数の画面があります
その画面1つ1つを、1つのクラスで作ればプログラム全体の見通しが良くなり、
作る方が楽になります(Cなどで、関数を使ってソースを細分化するのと同じ要領)
幸いMyGameライブラリには、シーン作成を楽にする「Scene::Base」クラスが用意されています

シーン・クラスを使う

Scene::Baseを使ったシーン・クラスは次のように書きます

require 'mygame/boot'

class クラス名 < Scene::Base

def init
  #初期化処理
end

def quit
  #終了処理
end

def update
  #更新処理
end

def render
  #描画処理
end

end


Scene.main_loop シーン・クラス名

以上がシーン・クラスの雛型になります
これに各種メソッドを定義していくことで、ゲームを作っていきます

シーンの切り替え

上のままでは、最初に指定したクラス内をループし続けてしまいます
例えるなら、タイトル画面が出続けている状態です
なので、そこからメニュー画面に「切り替える」処理が必要です
そこで、次のようにします

self.next_scene = シーン・クラス

「self.next_scene」に切り替え先のシーン・クラスを代入すると、シーンが切り替わります
これを使って、クラス内に切り替えメソッドを定義し、initメソッドでadd_eventなどを使えば、簡単に画面を切り替えられます
最終更新:2009年05月22日 11:44
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。