プログラミング日誌8~終盤戦~
あけましておめでとうございます
いよいよこのファイルのプログラムも終盤戦に差し掛かってます
前回
1エラーを解消しマップ4へとつなげる
2たどり着いた先でコメント欄的なのが表示され会話シーンへと突入する
3マップ4から以前研究ノートで作ったマップへとつなげる
これが目標でしたがすべて完成しました!
まず1に関してはエラーは解消しました
全てのモンスターを倒すとこの扉が現れ、中に入れるといったプログラムを組んでいたのですがここでエラーが発生し進めませんでした
なので左の扉がない状態ですでに壁に入れるようにしました
つまりモンスターを倒さなくてもマップ4にいけるのです
まぁ壁の中に突っ込む人はなかなかいないと思うので、大丈夫かと
通常の壁と床を描画しフラグを解消すると上記の扉付きの画像に切り替わります
お次は2です
var talkEvent = false; //会話中かどうか
var talkIndex = 0; //今何行目か
var talkTexts = [
"よくここまでたどりつきましたね",
"しんじつをしりたいですか",
"まぁもどればすぐにわかるでしょう",
"さようなら"
];
手順としてはまずグローバル変数を追加しました
これで会話をいつでも呼び出せます
//会話開始の判定
if (
stage === 3 &&
syujinnkou.px === 12 &&
syujinnkou.py === 9 &&
keycode === 13 &&
!talkEvent
) {
talkEvent = true;
talkIndex = 0;
keycode = 0; // 押しっぱなし防止
}
次にエンターキー判定を追加しました
これはtick処理の中に含まれています
エンターキーのkeycodeは13なので上記通りです
ステージ3のX12Y9座標でエンターを押すと会話が始まります
//会話中のエンター処理
if (talkEvent && keycode === 13) {
talkIndex++;
keycode = 0;
// 全文章を読み終えたら
if (talkIndex >= talkTexts.length) {
// 別ファイルへ移動
window.location.href = "ending.html"; // ←飛ばしたいHTML
}
}
お次は会話中の処理です
エンターキーを押すごとにIndexの判定が1ずつ増え次のTextに変わります
そして一番最後の文章にたどり着いたときにエンターを押すと違うファイルに飛べるようになってます
まだ飛ぶ先のファイルが完成していないのでending.htmlとして仮においています
// ===== 会話ウィンドウ描画 =====
if (talkEvent) {
// 黒い半透明ウィンドウ
gc.fillStyle = "rgba(0, 0, 0, 0.7)";
gc.fillRect(80, 420, 640, 160);
// 枠線
gc.strokeStyle = "white";
gc.lineWidth = 2;
gc.strokeRect(80, 420, 640, 160);
// 文字
gc.fillStyle = "white";
gc.font = "20px serif";
gc.fillText(talkTexts[talkIndex], 110, 480);
gc.font = "14px serif";
gc.fillText("Enterで次へ", 600, 560);
}
そしてこれが会話イベントに関する最後の追加です
やはりゲーム内の会話と言えば会話ウィンドウですよね
ということでこれが最後の追加です
説明は書いてある通りなので特にいらないと思います
3に関しては以前作ったプログラムのファイルに飛ぼうかと思ったのですが違うものにした方が都合がよさそうだったので新たに作ろうと思います
そして飛び方に関しては会話の中に飛べるようになっているので...
これで今回は以上になります
大枠は完成したのであとは細かいところを追加していきたいです
具体的には
1以前懸念点としていたゴーレムを倒した後の通れる壁探し
2このファイルに飛んだあとに何をするのかの助言等
3行ったら駄目なルートの完成
これができたら以前研究ノートで作ったファイルを少しいじりつつ新たにこのファイルからの飛び先を作ります
まだまだやることは多いですが頑張ります
それではまた
コメント
コメントを投稿