flandlescarlet's diary【情報工学生の備忘録】

元機械工学科所属だった情報工学生です。JavaScriptで適当に何かを作ったり、絵を描いていたりします。

JavaScriptを使ったライブラリを使わないRPGの作り方(入門編)3

イベントの追加

では実際にマップ上を歩けるようになった事ですし

イベント追加としましょう。先にDemo版をご覧ください

Demo※(IE動作不可)

http://yatagarasu0495.web.fc2.com/javascript/blog/map/map05.html

とりあえずキャラクターに関しては"東方"を扱っています。

キャラクターを動かして上にいるキャラクターに話をする事ができます。

動作原理については、座標の位置での発動です。

とりあえず各部位のソース

Sample1

 		case 37://←:こっちに移動する時
			
	if( a == 0 && b == 2){//フランちゃんの位置
		document.getElementById("comment").innerHTML = hina[hina_took];
		hina_took++;	
		b++;//位置を戻す
	}

イベント内容が←を押した時のものです。

もし←キーを押した時、そのキャラクターの位置が(a,b)=(0,2)であるならば(上のキャラクターに重なる位置)=(キャラクターのそばまでいて更に←を押した時)

コメント用のエリアに会話配列を呼び出す。

そして会話データの数をあげて次のコメントにして待機。

位置がこのままだと上のキャラクターに被ってしまうので一つ戻しておく(右)。

※キャラクターの移動座標に関しては前記事参照

この処理を共に他の位置から行なってもなるようにします。

これが基本的なイベントの流れになります。最終的には関数にまとめていきますが、今は短いので移動用caseの中に入れておきます。

一応会話配列

Sample2

hina = new Array();
hina[0] = "ありがとう<br>助かったわ";
hina[1] = "周りの石が邪魔で<br>出られなかったの";
hina[2] = "暇だったら<br>『神々の祈り』<br>でも聞くと(・∀・)イイ!!";
hina[3] = "じゃぁまたね";
hina[4] = " ";
for(z=5;z<=100;z+=2){//無限に続かせる
hina[z] = "本当に助かったわ";
}
for(z=6;z<=100;z+=2){//無限に続かせる
hina[z] = " ";
}

よくRPGで一度会話したキャラにまた何度も話しかけてみる事あると思いますが、同じことを何度も言っているはずです。

ですのでこれも終わり用の言葉を継ぎ足しておきます。

このままだと会話が100を超すとundefindになりますが、後で修正します。

基本的なイベントの枠組みはこうなっていますのでまとめると。

  • イベントは座標で指定してその(x,y)座標に止まると呼び起こすようにする。
  • 会話は配列データに入れて会話するごとにあげていく、そして終わり用の会話も入れてループさせる。

こんな感じです。

次回はRPGに必須なメニューの作り方を解説していこうと思います。