ZAKOS基地哨戒任務
※本アプリは架空のものであり、実際の出来事とは関係ありません。
設備一覧
- 1. 兵器庫
- 2. 通信室
- 3. 作戦室
- 4. 医務室
- 5. 訓練場
- 6. 食堂
- 7. 睡眠室
- 8. 補給庫
ZAKOS哨戒メンバー
ZAKOSの行動
現在の状況
<!DOCTYPE html>
<html>
<head>
<title>ZAKOS基地哨戒任務</title>
</head>
<body>
<h1>ZAKOS基地哨戒任務</h1>
<p>※本アプリは架空のものであり、実際の出来事とは関係ありません。</p>
<h2>設備一覧</h2>
<ul>
<li>1. 兵器庫</li>
<li>2. 通信室</li>
<li>3. 作戦室</li>
<li>4. 医務室</li>
<li>5. 訓練場</li>
<li>6. 食堂</li>
<li>7. 睡眠室</li>
<li>8. 補給庫</li>
</ul>
<h2>ZAKOS哨戒メンバー</h2>
<ul id="zakos-list"></ul>
<h2>ZAKOSの行動</h2>
<p id="zakos-action"></p>
<h2>現在の状況</h2>
<p id="current-status"></p>
<script>
// ZAKOSの名前、年齢、レオタードのデザイン、性格をテキストで定義
var zakosData = [
{ name: "ナナミ", age: 22, design: "赤", personality: "明るい" },
{ name: "リリカ", age: 19, design: "青", personality: "クール" },
{ name: "ミサキ", age: 26, design: "黄色", personality: "おっとり" },
{ name: "シホ", age: 20, design: "緑", personality: "活発" },
];
// ZAKOSの現在位置をランダムに決定
var zakosLocation = [];
for (var i = 0; i < 3; i++) {
zakosLocation[i] = Math.floor(Math.random() * 8) + 1;
}
// ZAKOSの行動をランダムに決定
var zakosAction = [
"敵を見つけた!",
"ぶらぶらしている。",
"装備を整えている。",
"通信をチェックしている。",
"休憩中。",
"訓練をしている。",
"メンバーと話をしている。",
"食堂で食事をしている。"
];
var zakosIndex = Math.floor(Math.random() * 3);
var zakosMessage = zakosData[zakosIndex].name + "は" + zakosAction[Math.floor(Math.random() * zakosAction.length)] + " (" + zakosData[zakosIndex].personality + ")";
// エンカウンターの現在位置をランダムに決定
var encounterLocation = Math.floor(Math.random() * 8) + 1;
// ターン数
var turn = 0;
// ZAKOSを表示
for (var i = 0; i < 3; i++) {
var li = document.createElement("li");
li.textContent = zakosData[i].name + " (" + zakosData[i].design + " / " + zakosData[i].age + "歳) 現在の位置:" + zakosLocation[i];
document.getElementById("zakos-list").appendChild(li);
}
// 現在の状況を表示
document.getElementById("current-status").textContent = "現在の状況:ZAKOSが" + zakosLocation[0] + "・" + zakosLocation[1] + "・" + zakosLocation[2] + "に配置されており、エンカウンターが" + encounterLocation + "に存在します。";
// 1ターンごとに処理
var intervalId = setInterval(function(){
turn++;
document.getElementById("zakos-action").textContent = "ターン" + turn + ":" + zakosMessage;
// ZAKOSの現在位置をランダムに変更
for (var i = 0; i < 3; i++) {
zakosLocation[i] = Math.floor(Math.random() * 8) + 1;
}
// ZAKOS同士の会話
var conversation = [
{ num: 1, message: "ナナミ:ねえ、リリカ、調子はどう?" },
{ num: 2, message: "リリカ:まあ、まずまずかな。" },
{ num: 3, message: "ミサキ:私、ちょっと眠いんだけど…" },
{ num: 4, message: "シホ:ミサキ、お昼寝でもする?" },
{ num: 5, message: "ナナミ:やる気がないのはよくないよ。" },
{ num: 6, message: "リリカ:私は調子がいいから、ミサキもがんばってね。" },
{ num: 7, message: "ミサキ:うん、がんばるよ。" },
{ num: 8, message: "シホ:みんな頑張ってるから、私も頑張ろうかな。" }
];
if (zakosLocation[0] == zakosLocation[1] || zakosLocation[0] == zakosLocation[2] || zakosLocation[1] == zakosLocation[2]) {
var zakosNum = 0;
if (zakosLocation[0] == zakosLocation[1]) {
zakosNum += 2;
}
if (zakosLocation[0] == zakosLocation[2] || zakosLocation[1] == zakosLocation[2]) {
zakosNum++;
}
var convIndex = Math.floor(Math.random() * conversation.length);
var message = "";
switch(zakosNum) {
case 1:
message = conversation[convIndex].message;
break;
case 2:
message = conversation[convIndex].message.replace("リリカ:", "ナナミ:").replace("ミサキ:", "シホ:");
break;
case 3:
message = conversation[convIndex].message.replace("リリカ:", "シホ:").replace("ミサキ:", "ナナミ:");
break;
default:
break;
}
document.getElementById("zakos-action").textContent = message;
}
// エンカウンターの現在位置をランダムに変更
encounterLocation = Math.floor(Math.random() * 8) + 1;
// エンカウンターとZAKOSが接触した場合
for (var i = 0; i < 3; i++) {
if (zakosLocation[i] == encounterLocation) {
var knockout = [
{ message: "くはっ!", face: "怒りの表情", hair: "ショートヘア", body: "スレンダー", pose: "床に倒れている" },
{ message: "ギャ!ゥン…", face: "泣き顔", hair: "ロングヘア", body: "ボリューミー", pose: "痙攣している" },
{ message: "うわっ!", face: "驚いた表情", hair: "ツインテール", body: "スレンダー", pose: "転がっている" },
{ message: "カッコわる…", face: "恥ずかしそうな表情", hair: "ポニーテール", body: "グラマー", pose: "まっすぐ倒れている" },
{ message: "グゥ…", face: "意識がなくなった表情", hair: "ショートヘア", body: "スレンダー", pose: "崩れ落ちた体勢" },
];
var knockIndex = Math.floor(Math.random() * knockout.length);
document.getElementById("zakos-action").textContent = zakosData[i].name + "が" + knockout[knockIndex].message + " (" + zakosData[i].personality + ")";
// 活動停止したZAKOSを削除
zakosData.splice(i, 1);
zakosLocation.splice(i, 1);
clearInterval(intervalId);
if (zakosData.length == 0) {
alert("エンカウンターの勝利!");
} else if (zakosLocation.indexOf(encounterLocation) == -1) {
alert("ZAKOSの勝利!");
}
break;
}
}
// 現在の状況を更新
document.getElementById("zakos-list").textContent = "";
for (var i = 0; i < zakosData.length; i++) {
var li = document.createElement("li");
li.textContent = zakosData[i].name + " (" + zakosData[i].design + " / " + zakosData[i].age + "歳) 現在の位置:" + zakosLocation[i];
document.getElementById("zakos-list").appendChild(li);
}
document.getElementById("current-status").textContent = "現在の状況:ZAKOSが" + zakosLocation[0] + "・" + zakosLocation[1] + "・" + zakosLocation[2] + "に配置されており、エンカウンターが" + encounterLocation + "に存在します。";
}, 10000);
</script>
</body>
</html>