ZAKOS基地哨戒任務
基地の設備:
1. 前線通信室
2. 弾薬庫
3. 給水所
4. 入り口ゲート
5. 食堂
6. 補給庫
7. 医務室
8. 仮眠室
哨戒メンバー:
現在位置:
エンカウンターの現在位置:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ZAKOS基地哨戒任務</title>
</head>
<body>
<h1>ZAKOS基地哨戒任務</h1>
<p>基地の設備:</p>
<p>1. 前線通信室</p>
<p>2. 弾薬庫</p>
<p>3. 給水所</p>
<p>4. 入り口ゲート</p>
<p>5. 食堂</p>
<p>6. 補給庫</p>
<p>7. 医務室</p>
<p>8. 仮眠室</p>
<br>
<p>哨戒メンバー:</p>
<ul>
<li id="zako1"></li>
<li id="zako2"></li>
<li id="zako3"></li>
</ul>
<br>
<p>現在位置:</p>
<ul>
<li id="zako1_pos"></li>
<li id="zako2_pos"></li>
<li id="zako3_pos"></li>
</ul>
<br>
<p>エンカウンターの現在位置:</p>
<p id="en_pos"></p>
<br>
<p id="turn"></p>
<button onclick="nextTurn()">次のターン</button>
<script>
// ZAKOの情報
const zakos = [
{name: "アズサ", age: 20, leotard: "青", personality: "無口"},
{name: "エリカ", age: 18, leotard: "黄", personality: "元気"},
{name: "ミサミ", age: 25, leotard: "緑", personality: "クール"}
];
// 現在位置をランダムに設定する関数
function setZakoPositions() {
zakos.forEach(zako => {
zako.currentPos = Math.floor(Math.random() * 8) + 1;
});
}
// ZAKO同士の会話をランダムに表示する関数
function showZakoConversation(zako1, zako2) {
const conversations = [
`${zako1.name}「おはよう、${zako2.name}」\n${zako2.name}「おはよう、${zako1.name}」`,
`${zako1.name}「${zako2.name}、何してるの?」\n${zako2.name}「ただ、景色を見ていたんだ。${zako1.name}は?」\n${zako1.name}「銃の手入れをしていたよ」`,
`${zako1.name}「${zako2.name}、今日食べたいものある?」\n${zako2.name}「んー、ステーキとかいいな」\n${zako1.name}「そっか、私はラーメンが食べたいな」`
];
const conversation = conversations[Math.floor(Math.random() * conversations.length)];
console.log(`${zako1.name}と${zako2.name}が会話`);
console.log(conversation);
}
// 不安度を下げるためのスキンシップをランダムに表示する関数
function showSkinship(zako) {
const actions = [
`${zako.name}「またおっぱいー?」`,
`${zako.name}「そこダメ、人に見られちゃうよ」`,
`${zako.name}「ちょっと力強くしてみて」`
];
const action = actions[Math.floor(Math.random() * actions.length)];
console.log(`${zako.name}がスキンシップをしている`);
console.log(action);
}
// 次のターンに進む関数
function nextTurn() {
// ZAKOの移動
zakos.forEach(zako => {
const prevPos = zako.currentPos;
zako.currentPos = Math.floor(Math.random() * 8) + 1;
if (prevPos === zako.currentPos) {
console.log(`${zako.name}は移動しなかった`);
} else if (prevPos < zako.currentPos) {
console.log(`${zako.name}は${prevPos}から${zako.currentPos}に移動した`);
} else {
console.log(`${zako.name}は${prevPos}から${zako.currentPos}に移動した`);
}
});
// ZAKO同士の会話
for (let i = 0; i < zakos.length; i++) {
for (let j = i + 1; j < zakos.length; j++) {
if (zakos[i].currentPos === zakos[j].currentPos) {
showZakoConversation(zakos[i], zakos[j]);
}
}
}
// ZAKOの不安度を下げるためのスキンシップ
zakos.forEach(zako => {
if (zako.currentPos === 8 && Math.random() < 0.2) {
showSkinship(zako);
}
});
// エンカウンターの移動
const prevEnPos = enPos;
enPos = Math.floor(Math.random() * 8) + 1;
if (prevEnPos === enPos) {
console.log(`エンカウンターは移動しなかった`);
} else if (prevEnPos < enPos) {
console.log(`エンカウンターは${prevEnPos}から${enPos}に移動した`);
} else {
console.log(`エンカウンターは${prevEnPos}から${enPos}に移動した`);
}
// 接触判定
zakos.forEach(zako => {
if (zako.currentPos === enPos) {
console.log(`${zako.name}はエンカウンターに捕まった!`);
showZakoDeath(zako);
zako.currentPos = 8;
}
});
// ターン数更新
turn++;
if (turn <= 50 && zakos.some(zako => zako.currentPos !== 8)) {
document.getElementById("turn").textContent = `ターン数:${turn}`;
setTimeout(nextTurn, 20000);
} else {
if (zakos.some(zako => zako.currentPos !== 8)) {
console.log("50ターン経過した!ZAKOSの勝利!");
} else {
console.log("すべてのZAKOSの体力が0になった!エンカウンターの勝利!");
}
}
}
// ZAKOが倒れたときに詳細をランダムに表示する関数
function showZakoDeath(zako) {
const screams = ["くはっ!", "ギャ!ゥン…"];
const faceShapes = ["大きな瞳", "細い眉毛", "小さな鼻", "美しい唇"];
const hairstyles = ["ロングヘアー", "ショートヘアー", "ツインテール", "サイドテール"];
const bodyShapes = ["豊かな胸", "くびれたウエスト", "美しいヒップ"];
const positions = ["仰向けに倒れている", "うつ伏せに倒れている", "座ったまま倒れている"];
console.log(`${zako.name}は${screams[Math.floor(Math.random() * screams.length)]}と叫びながら倒れ、`);
console.log(`${faceShapes[Math.floor(Math.random() * faceShapes.length)]}の顔立ちと`);
console.log(`${hairstyles[Math.floor(Math.random() * hairstyles.length)]}の髪型と`);
console.log(`${bodyShapes[Math.floor(Math.random() * bodyShapes.length)]}の体つきで`);
console.log(`${positions[Math.floor(Math.random() * positions.length)]}、`);
console.log(`力が抜けている様子だ`);
}
// 初期設定
setZakoPositions();
let enPos = Math.floor(Math.random() * 8) + 1;
let turn = 1;
document.getElementById("zako1").textContent = `${zakos[0].name}(${zakos[0].age}歳、${zakos[0].leotard}) - ${zakos[0].personality}`;
document.getElementById("zako2").textContent = `${zakos[1].name}(${zakos[1].age}歳、${zakos[1].leotard}) - ${zakos[1].personality}`;
document.getElementById("zako3").textContent = `${zakos[2].name}(${zakos[2].age}歳、${zakos[2].leotard}) - ${zakos[2].personality}`;
document.getElementById("zako1_pos").textContent = zakos[0].currentPos;
document.getElementById("zako2_pos").textContent = zakos[1].currentPos;
document.getElementById("zako3_pos").textContent = zakos[2].currentPos;
document.getElementById("en_pos").textContent = enPos;
document.getElementById("turn").textContent = `ターン数:${turn}`;
setTimeout(nextTurn, 20000);
</script>
</body>
</html>