熊でもわかるRGSS講座 超初級編

<<前の章へ     第2章 とりあえずやってみよう     次の章へ>>





 では、さっそくRGSSでプログラムを書いて、動かしてみようかのう。
 おっしゃ!
 まずは、スクリプトエディタの起動じゃな。
 下の図は、RPGツクールXPのツールバーじゃ。赤丸印のボタンをクリックすると、スクリプトエディタが出てくるぞ。



 そのくらい、知っとるがな、じいちゃん。なめたらあかんで。
 ふむ、では起動させてみい。
 ほないくでえ、ポチっとな・・・。



 うむ。これが、スクリプトエディタの画面じゃな。
 スクリプトエディタは、RGSS専用の編集ソフトで、ワープロのように文章を書くことが出来る。
 もちろん、書くのは文章ではなくて、プログラムじゃがな。

 ちょっと、小さくて見にくいようじゃのう。一部分を切り取って表示するとしよう。



 ふむふむ。相変わらず、何が書いてあんのか、さっぱりわからへんで。
 まあ、最初はそうじゃろうな。とりあえず、画面が左と右に分かれておることは、分かるな?
 そのくらい、分かっとるがな・・・。
 左側は、セクションのリストじゃ。右側は、セクションの中身を表示する場所じゃ。
 その、セクションが分からへんねん・・・。
 セクションと言うのはじゃな、スクリプトエディタの編集単位じゃ。セクションごとに分けてプログラムを書いていくぞい。
 はあ・・・。
 まあ、今は分からんでええ。とりあえず、ちょっとプログラムを書いてみるぞい。
 うん。
 セクションのリストの一番下に『Main』というセクションがある。それをクリックしてみろ。
 一番下・・・とこれやな。



 そう、それじゃ。そうすると、『Main』というセクションの中身が、右側に表示されたはずじゃ。
 うん、されたで。こんな感じや。



 よし。では、7行目のbeginの下に新しい行を作って、p "こんにちは、RGSS" と書いてみろ。こんな感じじゃな。
 pの後に半角のスペースを入れるのを忘れるな。pも"も半角じゃ。

7
8
9
10
11
begin
  p "こんにちは、RGSS"

  # トランジション準備
  Graphics.freeze


 あれ? なんや、勝手に色がついたで?
 うむ、それはスクリプトエディタの機能でな、分かりやすいように、勝手に色分けしてくれるんじゃ。別に、気にせんでええぞ。
 そうなんか。よし、書いたで。
 では、OKボタンをクリックしてスクリプトエディタを閉じて、テストプレイしてみるがいい。
 よし、テストプレイ開始と・・・。



 お! なんか表示されたで。
 うむ。p というのは、このようにメッセージボックスにデータを表示する命令なんじゃ。
 pが命令で、その後の
"こんにちは、RGSS"が、表示する内容というわけじゃな。
 この点々は、何なんや?
 ああ、 " これじゃな? これは、ダブルクォートと言ってな、ダブルクォートに、はさまれたものは、文字列とみなされることになっておるんじゃ。
 文字列? って、普通の文字とは違うんか?
 うむ。文字列と言うのは、プログラムの用語でな、文字を並べたデータのことじゃ。まあ、要するに文字のことじゃが、プログラムの世界では、そう呼ぶんじゃ。
 なんや、ややこしいな・・・。普通に、文字って呼べばええのに・・・。
 そのほうが、いいんじゃ。
 ちなみに、RGSSのプログラム中で、全角の文字が書けるのは、ダブルクォートで囲まれた文字列だけじゃからのう。それ以外は、全部半角じゃ。
 うん。分かった。
 では、文字列の内容を変えて、もう一回表示してみろ。練習じゃ。
 うん。ええと、これは、OKボタンクリックしてええんか?
 ええぞ。クリックすると、普通にゲームが始まるから、終了せい。そして、もう一度スクリプトエディタを開いて、別の文字列に書き換えるんじゃ。
 おっしゃ、なんて書いたろうかなあ・・・。
 なんでも、ええぞい。
 よっしゃ、書けたで。
 表示してみよ。
 おっしゃ、ポチっとな。



 ・・・・・・お前、自分大好きじゃのう・・・。
 ええやんか! ほんとのことやから!
 まあええ、次は数値を表示してみるかのう。数値の場合は、ダブルクォートは、必要ないから、p 58 のように書くんじゃ。
 下の記入例のようになるはずじゃな。

7
8
9
10
11
begin
  p
58

  # トランジション準備
  Graphics.freeze


 なんや、さっきと色が違うな。
 うむ、さっきも言ったとおり、分かりやすいように色分けされるんじゃ。文字列と数値では、色が違う。
 よっしゃ、書けたで。
 実行してみろ。



 うん、そのまんまやな。表示されたで。
 ふむ。では、そのまんまではないのを、やってみるかのう。
 p 2+3 これはどうじゃ?
 ようし、やってみるで・・・。



 お! これってもしかして、2+3=5 ってことか?
 うむ、そのとおりじゃ。式を書いた場合、そのままではなく、計算結果が表示されるんじゃ。
 ふうん・・・。
 この、pという命令は、ゲーム中に使うことはめったに無いが、開発途中ではよく使うから、必ず覚えておけ。
 ふうん、何に使うんや?
 変数の値を確認したり、といったことかのう。まあ、これから徐々に使っていくが、とりあえずはここまでじゃ。次は、別の命令を使ってみるぞ。
 うん。
 では、ゲームらしく、画像でも表示してみるかのう。
 さっきの、p 2+3を消して、かわりにsprite = Sprite.new() sprite.bitmap = RPG::Cache.battler("001-Fighter01",0) と書いてみろ。

7
8
9
10
11
12
begin
  sprite = Sprite.new()
  sprite.bitmap = RPG::Cache.battler("001-Fighter01",0)
 

  # トランジション準備
  Graphics.freeze


 ちょっと、長いな・・・。
 大文字と小文字を間違えんようにな。
 よっしゃ、書けたで。
 実行してみろ。



 あ! なんか出た! すぐ、消えてもうたけど・・・。
 うむ。ここで、Sprite(スプライト)という機能を使っておるんじゃが、これがRGSSで画像を扱うための機能なんじゃ。
 sprite = Sprite.new() で、新たにスプライトを生成し
 sprite.bitmap = RPG::Cache.battler("001-Fighter01",0) で、ファイルから画像データを読み込んでおる。
 ふうん・・・でも、すぐに消えてもうたで?
 うむ。プログラムは、上から順番に次々と実行されていくからのう。放っておけば、次の命令が実行されて画面が変わってしまう。それを防ぐには、ループを使えばええぞい。
 ループ? 確か、イベントでもそんなんあったな。
 そうじゃ。あれと同じで、処理を繰り返したい時に使うんじゃ。
 下記のように、付け足してみい。

7
8
9
10
11
12
13
14
15
begin
  sprite = Sprite.new()
  sprite.bitmap = RPG::Cache.battler("001-Fighter01",0)
  loop
do
    Graphics.update
  
end

  # トランジション準備
  Graphics.freeze


 お、ほんまや。ループ追加したら、画像が消えへん。ずっと、表示されてるで。
 ループは、loop do とendの間の命令を、ずっと繰り返すんじゃ。
 この、Graphics.updateって、なに?
 Graphics.updateは、画面を更新する命令じゃな。
 この命令が10秒以上実行されんと、強制終了されてしまうからのう。ループさせるときは、入れておかんといかんのじゃ。
 強制終了て・・・そんな怖いことになんの?
 うむ。そういう仕様なんじゃ。ためしに、Graphics.updateをコメントアウトしてやってみるがいい。10秒たつと終了するぞい。
 コメントアウト?
 コメントアウトというのは、コメント化することじゃ。Graphics.updateの頭に#(半角のシャープ)をつけてみい。

7
8
9
10
11
12
13
14
15
16
begin
  sprite = Sprite.new()
  sprite.bitmap = RPG::Cache.battler("001-Fighter01",0)
  loop
do
    
#Graphics.update
  
end

  # トランジション準備
  Graphics.freeze

 あ、緑になったで。
 うむ。RGSSでは、#から次の改行までを、コメントと判断するようになっておる。コメントは、緑で表示されるから、すぐわかるぞ。 
 ほんで、コメントって、なんなん?
 コメントは、プログラム実行中は無視される文じゃ。プログラムをわかりやすくするために、説明などを書くのに使われるな。
 ちなみに、コメントはプログラムでなないので、全角の文字が書けるからのう。日本語で説明が書けるぞ。
 なるほどな。#つけてコメントにすると、Graphics.updateが実行されんようになるわけやな。よし、ならやってみるで。

 ええと、ゲームを動かしてと・・・あ、真っ暗な画面しか表示されへん・・・。



 お、ハングアップしたって、表示されたで。
 うむ。これが、10秒間Graphics.updateが実行されなんだ時に出る表示じゃ。
 こうならんように、Graphics.updateを入れとくんやな。#消して、元に戻しとかな・・・。
 うむ。では、次は、ちょっとゲームらしいことをやってみるかのう。
 なにするんや?
 十字ボタンで、画像を動かせるようにするんじゃ。
 おお! ええやんか、やってみよ!
 うむ。では、ループの中に、このように書いてみよ。

7
8
9
10
11
12
13
14
15
16
17
18
19

begin
  sprite = Sprite.new
()
  sprite.bitmap = RPG::Cache.battler
("001-Fighter01",0)
  loop
do
    Graphics.update
    Input.update
    
if Input.press?(Input::DOWN)
      sprite.y += 1
    
end
  
end

  # トランジション準備
  Graphics.freeze

 なんや、ややこしなってきたなあ・・・。
 うむ。分かりやすいようにコメントをつけてみるかのう。

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

begin
  
# スプライトを生成
  sprite = Sprite.new
()
  
# スプライトのビットマップに画像を設定
  sprite.bitmap = RPG::Cache.battler
("001-Fighter01",0)
  
# ループ
  loop
do
    
# 画面の更新
    Graphics.update
    
# ボタン入力の更新
    Input.update
    
# 条件分岐 ボタンの下が押されていた場合
    
if Input.press?(Input::DOWN)
      
# スプライトのY座標に1を加算(表示位置を下方向へ移動)
      sprite.y += 1
    
end
  
end

  # トランジション準備
  Graphics.freeze


 なるほどな・・・。
 どういう処理をしとるか、分かったか?
 うーん、まだ、よう分からん・・・。
 まあええ。ともかく動かしてみい。十字ボタンの下を押すと画像が動くようになっとるはずじゃ。
 うん、やってみるわ・・・。



 おお! ほんまや、動いた!
 今は、ボタンの下を押したときの処理しか書いていないが、上や左右の処理も書けば、どちらを押しても動くようになるぞ。
 なるほどな。そうなるとゲームっぽいな。
 しかし、今日はそこまではやらんぞ。まだ、基礎もできとらんのに、これ以上やっても理解できんじゃろうからな。
 分かった。ほな、また明日な。



 本日のおさらい
・プログラムは、基本的に半角文字で書く(スペースも半角で)
・p でデータ表示できる
・文字列は、"(ダブルクォート)で囲う
・プログラムは、先頭の行から順番に1行づつ実行されていく
・コメントの頭には#(シャープ)

 次の章は
第3章 計算してみよう

 リンク
>>>この講座のトップページ
>>>タンクタウンのトップページ