「Mainの中身を見る」の編集履歴(バックアップ)一覧に戻る

Mainの中身を見る - (2009/04/09 (木) 20:22:29) のソース

入門編・3
*Mainの中身を見る
クラスと準備は準備のための部分で、実行されるのはMainの部分でした。
Mainの部分をのぞいてみましょう。
>unless Font.exist?("UmePlus Gothic")
>  print "UmePlus Gothic フォントが見つかりません。"
>  exit
>end
>
>begin
>  Graphics.freeze
>  $scene = Scene_Title.new
>  $scene.main while $scene != nil
>  Graphics.transition(30)
>rescue Errno::ENOENT
>  filename = $!.message.sub("No such file or directory - ", "")
>  print("ファイル #{filename} が見つかりません。")
>end

重要な所以外は適当に行きます。
前半のフォント云々は、ゲームに使うフォント(文字の形状みたいな)があるかをチェックして、
無かったら強制終了するようにしています。
beginからがMainの本体です。
Graphics.freezeはとりあえず無視。
$scene = Scene_Title.new、これが、『タイトル画面から始めましょう』という意味。
英語を解釈すると、シーン=シーン・タイトル。まさに、『シーンをタイトルに移行』となっています。
で、次の一行。
>  $scene.main while $scene != nil
この一行でゲームが始まり、そして実質上終わります。
この一行を訳すと、『$scene.main(あるシーンの、main関数)を、シーンがある限り(!= nil、存在しない状態(nil)でない(!=)限り(while)』続けましょう、という意味。
シーンはいろいろ変わります。タイトルからロード画面、マップ、バトル。いろいろ変わった結果、ゲーム終了時にはシーンが『なし』、つまりゲーム終わり、ということになって、この1行が終了します。
つまり、ゲームが続く限り、この1行から先に進まないのです。
その後にも続きはありますが、これもおまけのようなもの。
実質的には
>  $scene = Scene_Title.new
>  $scene.main while $scene != nil
この2行がMainの全てです。
タイトルから始めましょう、そしてシーンがある限りそのシーンのmainを行いましょう。そういうことです。
では、次に見るべき場所はどこでしょう?
Scene_Titleクラスの、main関数ですね。では次回。

なお、このMainもほとんどいじりません。
いじるのは、
>  $scene = Scene_Title.new
の、最初に実行するシーンの名前のみ。
----
[[前へ>モジュールとクラス]]・[[次へ>シーンの基本構造]]
----
#comment_num2(size=40,vsize=4,num=20,logpage=コメント一覧)
目安箱バナー