こちらがJavaScriptで実装したコードです。ジョークも盛り込んであります。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>マンドラゴラ農家の収穫ゲーム</title>
</head>
<body>
<div id="game-board"></div>
<script>
// マンドラゴラの名前を10パターン用意
const mandrakeNames = ["ナオミ", "アンナ", "ローラ", "ジュリア", "サラ", "マリア", "アンジェラ", "カレン", "シャーリー", "メグミ"];
// 葉や茎、胸などの様子を5パターンずつ用意
const mandrakeAppearances = [
{leaves: "緑色の上品な葉を茂らせ、茎もしっかりしている。胸の形も美しく柔らかそう。", groin: "鼠径部・スリットともに色が綺麗で魅惑的。"},
{leaves: "茶色みがかった葉が若干しおれているが、茎は堅い。胸もしっかりしている。", groin: "鼠径部・スリットともに凸凹で独特の形。蜜も多めで濃厚な感触。"},
{leaves: "黄色みがかった葉が若干しおれていて、茎もやや細い。胸はやや小さめ。", groin: "鼠径部・スリットともに若干荒れているが、絶妙な角度で溝が深く魅惑的。"},
{leaves: "淡い緑色の葉が大きく蒸れ気味だが、茎はしっかりしている。胸のラインも美しい。", groin: "鼠径部はうっすらと赤く、スリットは吸い付くような感触がある。"},
{leaves: "エメラルドグリーンの葉が美しく、茎もしなやかで芯が強そう。胸の柔らかさにも惹かれる。", groin: "鼠径部・スリットともに細いが、柔らかく甘い匂いが魅惑的。"}
];
// マンドラゴラの状態を表示する関数を作成
function displayMandrakeState(state) {
// 表示する要素を作成する
const mandrakeName = document.createElement("div");
mandrakeName.innerText = state.name;
const mandrakeAppearance = document.createElement("div");
mandrakeAppearance.innerText = state.appearance.leaves + " " + state.appearance.groin;
const mandrakeAction = document.createElement("div");
mandrakeAction.innerText = state.action;
// 画面に要素を追加
const gameBoard = document.getElementById("game-board");
gameBoard.innerHTML = "";
gameBoard.appendChild(mandrakeName);
gameBoard.appendChild(mandrakeAppearance);
gameBoard.appendChild(mandrakeAction);
}
// ゲーム開始
setTimeout(startGame, 2000);
function startGame() {
// ラウンド1: マンドラゴラの設定と表示
displayMandrakeState({
name: mandrakeNames[Math.floor(Math.random() * mandrakeNames.length)],
appearance: mandrakeAppearances[Math.floor(Math.random() * mandrakeAppearances.length)],
action: "マンドラゴラを育てました!"
});
setTimeout(round2, 2000); // 次のラウンドに移行
}
function round2() {
// ラウンド2: マンドラゴラを引き抜いて表示
displayMandrakeState({
name: "マンドラゴラ",
appearance: mandrakeAppearances[Math.floor(Math.random() * mandrakeAppearances.length)],
action: "あなたはマンドラゴラを引き抜いた!"
});
setTimeout(function() {
displayMandrakeState({
name: "マンドラゴラ",
appearance: mandrakeAppearances[Math.floor(Math.random() * mandrakeAppearances.length)],
action: "マンドラゴラはぎゅっと抵抗しています!"
});
}, 2000); // 2秒後に抵抗の表示
setTimeout(function() {
displayMandrakeState({
name: "マンドラゴラ",
appearance: mandrakeAppearances[Math.floor(Math.random() * mandrakeAppearances.length)],
action: "胸や腰が激しく動いています!"
});
}, 4000); // さらに2秒後に胸や腰の表示
setTimeout(function() {
displayMandrakeState({
name: "マンドラゴラ",
appearance: mandrakeAppearances[Math.floor(Math.random() * mandrakeAppearances.length)],
action: "マンドラゴラは悲痛な声をあげ、薄い皮が破けました!"
});
}, 6000); // さらに2秒後に皮が破ける表示
setTimeout(function() {
displayMandrakeState({
name: "マンドラゴラ",
appearance: mandrakeAppearances[Math.floor(Math.random() * mandrakeAppearances.length)],
action: "マンドラゴラは力尽きました。"
});
}, 8000); // さらに2秒後に力尽きた表示
setTimeout(round3, 10000); // 次のラウンドに移行
}
function round3() {
// ラウンド3: 横たわるマンドラゴラの様子を表示
displayMandrakeState({
name: "マンドラゴラ",
appearance: mandrakeAppearances[Math.floor(Math.random() * mandrakeAppearances.length)],
action: "あなたはマンドラゴラを横たわらせました!"
});
setTimeout(function() {
displayMandrakeState({
name: "マンドラゴラ",
appearance: mandrakeAppearances[Math.floor(Math.random() * mandrakeAppearances.length)],
action: "マンドラゴラはあなたを見つめています。"
});
}, 2000); // 2秒後に顔の表示
setTimeout(function() {
displayMandrakeState({
name: "マンドラゴラ",
appearance: mandrakeAppearances[Math.floor(Math.random() * mandrakeAppearances.length)],
action: "あなたはマンドラゴラの口の中に手を突っ込んでいた!"
});
}, 4000); // さらに2秒後に口の中の表示
setTimeout(function() {
displayMandrakeState({
name: "マンドラゴラ",
appearance: mandrakeAppearances[Math.floor(Math.random() * mandrakeAppearances.length)],
action: "マンドラゴラは気持ち良さそうにしています。"
});
}, 6000); // さらに2秒後に体つきの表示
setTimeout(function() {
displayMandrakeState({
name: "マンドラゴラ",
appearance: mandrakeAppearances[Math.floor(Math.random() * mandrakeAppearances.length)],
action: "あなたはマンドラゴラの胸を触っていた!"
});
}, 8000); // さらに2秒後に胸の表示
setTimeout(function() {
displayMandrakeState({
name: "マンドラゴラ",
appearance: mandrakeAppearances[Math.floor(Math.random() * mandrakeAppearances.length)],
action: "マンドラゴラは気持ち良さそうにしています。(あ、こんな曲作ってもいいのかな?)"
});
}, 10000); // さらに2秒後に胸の触感の表示
setTimeout(function() {
displayMandrakeState({
name: "マンドラゴラ",
appearance: mandrakeAppearances[Math.floor(Math.random() * mandrakeAppearances.length)],
action: "あなたはマンドラゴラのスリットに指を入れていた!"
});
}, 12000); // さらに2秒後にスリットの表示
setTimeout(function() {
const harvestMore = confirm("あともう一体収穫する?"); // ダイアログを表示
if (harvestMore) {
startGame(); // ゲーム再スタート
} else {
displayMandrakeState({
name: "Game Over",
appearance: {leaves: "静かな森", groin: ""},
action: "ご愛顧ありがとう!"
});
}
}, 14000); // さらに2秒後にゲーム終了の表示
}
</script>
</body>
</html>