どうぶつスクールスクールシミュレーターのアップデート
あなたはひさしという開発者が作った、動物たちを教育するシミュレーションゲーム「どうぶつスクールスクールシミュレーター」をプレイ中です。しかし、ひさしはアップデートをしない開発者で、それがゲームの進行に支障をきたしています。
あなたはひさしを無理やりアップデートさせ、ゲームを進めるために、以下のミッションを完了する必要があります。
ひさしの自宅に侵入する。
ひさしのPCを見つけ、アップデート用のデータをUSBにコピーする。
ひさしに見つかっても、アップデートを完了する。
スマホで操作する場合、左下の方に移動ボタンがあります。ボタンをタップすることで移動できます。USBをコピーするためには、ひさしの家の中を探索しましょう。
⬆
⬅
⬇
➡
調べる
JavaScriptコード:
// 座標と状態を保持する変数
let x = 400;
let y = 300;
let state = "start";
// キャンバスとコンテキストの取得
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");
// 画像を読み込む
const playerImage = new Image();
playerImage.src="emozi_all/player.png";
const houseImage = new Image();
houseImage.src="emozi_all/house.png";
const usbImage = new Image();
usbImage.src="emozi_rabbit.png";
// プレイヤーの描画
function drawPlayer() {
ctx.drawImage(playerImage, x, y, 64, 64);
}
// 家の描画
function drawHouse() {
ctx.drawImage(houseImage, 100, 100, 256, 256);
}
// USBの描画
function drawUsb() {
ctx.drawImage(usbImage, 300, 300, 64, 64);
}
// メッセージの表示
function showMessage(message) {
document.getElementById("message").innerHTML = message;
}
// ゲームのメインループ
function gameLoop() {
// キャンバスをクリア
ctx.clearRect(0, 0, canvas.width, canvas.height);
// 描画
drawHouse();
drawUsb();
drawPlayer();
// メッセージの表示
showMessage("");
// 状態別の処理
if (state === "start") {
showMessage("ひさしの自宅に侵入しよう。");
}
else if (state === "house") {
showMessage("ひさしのPCを探そう。");
}
else if (state === "pc") {
showMessage("アップデート用のデータをUSBにコピーしよう。");
}
else if (state === "usb") {
showMessage("ひさしに見つからないように、アップデートを完了しよう。");
}
else if (state === "update") {
showMessage("アップデートが完了した。ゲームを楽しもう!");
}
// ゲームオーバー時の処理
if (state === "gameover") {
showMessage("ひさしに見つかってしまった。ゲームオーバー!");
return;
}
// ゲームクリア時の処理
if (state === "clear") {
showMessage("アップデートが完了した。ゲームクリア!");
return;
}
// 状態によって移動できる範囲を変更
let moveRange = 0;
if (state === "start") {
moveRange = 200;
}
else if (state === "house") {
moveRange = 100;
}
else if (state === "pc") {
moveRange = 50;
}
else if (state === "usb") {
moveRange = 100;
}
// 移動処理
document.getElementById("moveUp").addEventListener("click", function() {
if (y > 0 + moveRange) {
y -= 50;
}
});
document.getElementById("moveLeft").addEventListener("click", function() {
if (x > 0 + moveRange) {
x -= 50;
}
});
document.getElementById("moveDown").addEventListener("click", function() {
if (y
100 && x < 356 && y > 100 && y < 356) {
state = "house";
}
}
else if (state === "house") {
// PCを見つけたかどうか
if (x > 130 && x < 356 && y > 150 && y < 276) {
state = "pc";
}
}
else if (state === "pc") {
// USBをコピーしたかどうか
if (x > 250 && x < 314 && y > 290 && y < 354) {
state = "usb";
}
}
else if (state === "usb") {
// アップデート完了
if (x > 100 && x < 356 && y > 100 && y < 356) {
state = "clear";
}
}
});
// 時間差で再帰呼び出し
setTimeout(gameLoop, 100);
}
// ゲーム開始
gameLoop();