RPGツクール5で関数を使う方法を知りたいです
公開されていた初心者用のプログラミングを見ながら関数の組み方を勉強したいですが、
分からない所を教えて頂きたいです。 シューティングゲームの当たり判定などの関数が理解できません。自分の現在の知識、組みたいプログラムなどは、もっと下のほうに記入します。
10 width 80,20 '10~96行まで初期設定
20 cls:beep
30 print "KEY操作 1 左 2 右 3ミサイル発射"
40 print "自機 <T> を操り 敵 =を撃つゲーム"
50 for i=0 to 40
60 locate i,5:print "-"
70 next
80 locate 19,5:print "-<T>-"
90 x=19: m=0:mx=0:my=0 'x、y 自機の座標 mx、my ミサイル座標
95 randomize(val(right$(time$,2))) 'ex,ey 敵座標
96 ey=int(rnd(1)*10)+6:ex=5
100 gosub 200 '100~130 メインルーチン
110 if m=1 then gosub 300 'm=0 ミサイル未発射。この時は300行(ミサイル移動ルーチン
'にはいかない m=1 ミサイル発射中は300行へ
120 gosub 400
130 goto 100
200 b$="" '自機の移動、ミサイル発射
202 a$=inkey$
205 if a$<>"" then b$=a$:goto 202
210 if b$="1" and x>1 then x=x-1
215 if b$="2" and x<37 then x=x+1
220 if b$="3" and m=0 then mx=x+2:my=5:m=1:beep
230 locate x,5 :print"-<T>-"
240 return
300 locate mx,my:print " " 'ミサイル移動ルーチン
310 my=my+1
320 if mx=ex and my=ey then gosub 600: end '当たり判定
330 if my>15 then mx=0:my=0:m=0:return '下までいったらミサイル終了。m=0に戻す
340 locate mx,my:print "V":return
400 locate ex,ey:print " " '敵移動ルーチン
410 ex=ex+1
420 if ex=mx and ey=my then gosub 600 :end '当たり判定
430 if ex>39 then ex=0: ey=int(rnd(1)*10)+6 '端までいったら新座標
440 locate ex,ey:print"="
450 return
600 beep '当たりの時の処理
610 locate mx,my:color 4:print "*"
620 print "大当たり THE END": color 7
630 print "HIT ANY KEY"
640 a$=input$(1):return
RPGツクール5には関数の命令文がないと思われるため、自作するために関数を理解したいです。
変数への代入と操作には+、 -、 ×、÷、=、指定した2つの変数(定数)間の値の乱数を得ることができる、ツクール5では小数点以下の値は持っていません、余りを変数に入れる事はできる、と書かれています。
スクリプト分岐 条件 (IF THENにあたると思われる )は、=、≧、≦、≠、<、>が用意されています。
関数命令が見当たらない以外に計算順位を指定するための( )も使う事ができません。
とっても楽しくツクールガイドを購入しましたが、マップやイベント設置、イベント実行などが主で、プログラムのようなスクリプトの組み方は触れられていません。
関数を自作する役にたつかと思い情報処理の本に仕組みが書いている16ビットの仮想コンピュータCOMETを見本用フラグ0~15のON OFFを切り替える事で、0~32767までの数値入力値を2進数に直す所まではできました。再現した仮想コンピュータでciv系戦略ゲームやシムアント系を作れるのかやってみたいと思っています。2進数の足し算引き算などゲーム作りに必要そうな事は、情報処理の本で憶える予定です。
N88basicしかプログラミングソフトを使った事がないので、関数の自作方法をbasic形式で教えて頂けないでしょうか? 十数年前のBASICの教科書?は持っています。
下に書いたのが0~32767までの数値入力値を2進数に直すツクール5スクリプト(テストプレイ済)です。応用すれば関数の代わりが自作できないでしょうか
ユーザー入力数値入力0~32767
データ制御 変数 見本用変数01=数値入力値
スクリプト分岐 条件 変数 見本用変数01 <16384
データ制御 フラグ (1ビットの代わり)見本用フラグ1 OFFにする
スクリプト分岐 条件終端
スクリプト分岐 条件 変数 見本用変数01≧16384
データ制御 変数 見本用変数01=見本用変数01-16384
データ制御 フラグ (1ビットの代わり)見本用フラグ1 ONにする
スクリプト分岐 条件終端
スクリプト分岐 条件 変数 見本用変数01 <8192
データ制御 フラグ (1ビットの代わり)見本用フラグ2 OFFにする
スクリプト分岐 条件終端
スクリプト分岐 条件 変数 見本用変数01≧8192
データ制御 変数 見本用変数01=見本用変数01-8192
データ制御 フラグ (1ビットの代わり)見本用フラグ2 ONにする
スクリプト分岐 条件終端
ツクール5では フラグのON OFFはスクリプト分岐 条件に使う事ができます。
これとほぼ同じスクリプトを見本用フラグ15(15ビットの代わり)までやりました。
見本用フラグ2(2ビットの代わり)を操作する場合、上に書いた16384の部分を2で割って8192、見本用フラグ3(3ビットの代わり)を操作する場合、8192を2で割って4096、と似たような手順を2で割り続けました。
スクリプト分岐 繰り返しはGOTO文で好きな行番号が指定できないので使い方をツクール動画などで学習中です。
お礼
詳しく教えてくださってありがとうございます。 通行・ブロックの設定は○(草原)になってました。 体験版はhttp://www.enterbrain.co.jp/digifami/products/rpg2003/2003trial.html で、インストールしなおしました。 今度はちゃんと移動できました、しばらくこれで様子をみながら体験版を楽しんでみたいと思います。また何かあったら宜しくお願いします。 ありがとうございました!