<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>ブラックラボシミュレーションゲーム</title>
<style>
body {
font-family: sans-serif;
}
p {
margin: 10px;
padding: 10px;
border: 1px solid black;
}
button {
font-size: 1em;
margin: 10px;
padding: 5px;
background-color: black;
color: white;
border: none;
}
</style>
</head>
<body>
<h1>ブラックラボシミュレーションゲーム</h1>
<p id="boss-comment"></p>
<button id="next-round">次のラウンド</button>
<p id="member1-comment"></p>
<p id="member2-comment"></p>
<p id="member3-comment"></p>
<p id="member4-comment"></p>
<p id="member5-comment"></p>
<script>
const members = [
{name: "松本真理子", personality: "冷静沈着", emotion: "穏やか", point: 50},
{name: "加藤美咲", personality: "勇敢", emotion: "興奮", point: 50},
{name: "佐藤千夏", personality: "神経質", emotion: "不安", point: 50},
{name: "田中愛子", personality: "情熱的", emotion: "興奮", point: 50},
{name: "渡辺由香", personality: "臆病", emotion: "恐怖", point: 50}
];
let round = 1;
let bossSaid = false;
function report(memberIndex) {
// 1.作戦を立案
let plan = "ミッション1を開始する。";
if (round === 2) {
plan = "ミッション2を開始する。";
}
if (round === 3) {
plan = "ミッション3を開始する。";
}
const planReport = members[memberIndex].name + ":「" + plan + "」";
document.getElementById("boss-comment").innerText = planReport;
// 2.作戦の進捗を報告
let progress = "進捗は50%です。";
if (Math.random() < 0.5) {
members[memberIndex].point += 10;
progress = "進捗が75%になりました!";
}
const progressReport = members[memberIndex].name + ":「" + progress + "」";
document.getElementById("boss-comment").innerText += "\n" + progressReport;
// 3.最終的な報告
let result = "ミッションは成功しました!";
if (Math.random() < 0.2) {
members[memberIndex].point -= 20;
result = "惜しくもミッションは失敗しました。";
}
const resultReport = members[memberIndex].name + ":「" + result + "」";
document.getElementById("boss-comment").innerText += "\n" + resultReport;
// 評価ポイントを更新
let pointChange = 5;
if (members[memberIndex].point >= 75) {
pointChange += 5;
}
if (members[memberIndex].point <= 35) {
pointChange -= 5;
}
members[memberIndex].point += pointChange;
const comment = members[memberIndex].name + ":" + pointChange + "ポイント " + members[memberIndex].emotion + "。";
document.getElementById("member" + (memberIndex + 1) + "-comment").innerText = comment;
// 泡になるかどうか
if (members[memberIndex].point <= 0) {
const question = members[memberIndex].name + "が契約を続行するか、打切るか?";
if (confirm(question)) {
// 契約続行
members[memberIndex].point = 50;
} else {
// 契約打切り
const message = members[memberIndex].name + ":" + members[memberIndex].personality + "の " + members[memberIndex].emotion + "に、さようなら……";
alert(message);
members[memberIndex] = {name: members[memberIndex].name + "2", personality: "無口", emotion: "冷静", point: 50};
}
}
}
function playRound() {
document.getElementById("boss-comment").innerText = "";
for (let i = 0; i < members.length; i++) {
report(i);
}
let allPointsOver100 = true;
for (let i = 0; i < members.length; i++) {
if (members[i].point < 100) {
allPointsOver100 = false;
break;
}
}
if (allPointsOver100) {
// ハッピーエンド
document.getElementById("boss-comment").innerText = "全員が100ポイントを超えた。世界を支配しよう!";
document.getElementById("next-round").remove();
document.body.style.backgroundColor = "black";
document.body.style.color = "white";
for (let i = 0; i < members.length; i++) {
document.getElementById("member" + (i + 1) + "-comment").innerText = members[i].name + "が即興の作詞に挑戦する……";
}
} else if (members.filter(member => member.point <= 0).length >= 10) {
// バットエンド
document.getElementById("boss-comment").innerText = "10人目の構成員が泡となった。組織は壊滅的な打撃を受けた……";
document.getElementById("next-round").remove();
}
round++;
}
document.getElementById("next-round").addEventListener("click", playRound);
</script>
</body>
</html>