// アプリコード開始
// 一覧用のJSONデータ
const ZAKO_LIST = [
{
"type": "ハンドタイプ",
"name": "サキ",
"face": "キリッとした目が印象的な美人",
"hair": "ボブカットにアップ感のある黒髪",
"appearance": "品の良さが感じられる上品な外見",
"personality": "しっかりしているが、友好的な性格"
},
{
"type": "レーザータイプ",
"name": "アイカ",
"face": "整った顔立ちで凛とした美女",
"hair": "ロングストレートの赤髪",
"appearance": "美しい身体つきと洗練されたファッション",
"personality": "自信過剰で傍若無人な性格"
},
{
"type": "パワータイプ",
"name": "ハルカ",
"face": "パッチリとした大きな瞳が印象的な可愛らしい顔立ち",
"hair": "ショートヘアにフリルのついたリボンをつけている",
"appearance": "子供っぽさが残る華奢な外見",
"personality": "天真爛漫であっけらかんとした性格"
}
];
// ZAKOクラス
class ZAKO {
constructor(zakoData) {
this.type = zakoData.type;
this.name = zakoData.name;
this.face = zakoData.face;
this.hair = zakoData.hair;
this.appearance = zakoData.appearance;
this.personality = zakoData.personality;
this.fatigue = 0;
}
task() {
const tasks = [
{
text: `${this.name}は培養装置の維持管理をしている。`,
fatigue: 1,
quality: 1
},
{
text: `${this.name}は培養装置でZAKOSを育てている。`,
fatigue: 2,
quality: 2
},
{
text: `${this.name}は育成したZAKOSの品質検査をしている。`,
fatigue: 1,
quality: 2
}
];
const randomTask = tasks[Math.floor(Math.random() * tasks.length)];
this.fatigue += randomTask.fatigue;
return randomTask.text;
}
evaluate() {
return `【${this.type}】${this.name}\n${this.face}\n${this.hair}\n${this.appearance}\n${this.personality}\n(疲労度:${this.fatigue})`;
}
rest() {
const actions = [
{
text: `${this.name}は他のZAKOとスキンシップを楽しんでいる。`,
fatigue: -1
},
{
text: `${this.name}はシャワーを浴びて疲れを癒やしている。`,
fatigue: -2
},
{
text: `${this.name}は欲求を抑えられずに教育中の慰安ZAKOに手を出してしまった。`,
fatigue: -10
},
{
text: `${this.name}は抱き枕ZAKOと一緒に過ごしている。`,
fatigue: -1
}
];
const randomAction = actions[Math.floor(Math.random() * actions.length)];
this.fatigue += randomAction.fatigue;
return randomAction.text;
}
}
// 初期化
const zako = new ZAKO(ZAKO_LIST[Math.floor(Math.random() * ZAKO_LIST.length)]);
let isWorking = false;
// ターン1
console.log(`「新たな${zako.type}が誕生した」\n${zako.evaluate()}`);
// ターン2
function startEvaluation() {
if (isWorking) {
return;
}
isWorking = true;
const intervalId = setInterval(() => {
if (zako.fatigue >= 20) {
clearInterval(intervalId);
console.log(`${zako.name}は疲労で倒れてしまった。`);
zako = new ZAKO(ZAKO_LIST[Math.floor(Math.random() * ZAKO_LIST.length)]);
console.log(`「新たな${zako.type}が誕生した」\n${zako.evaluate()}`);
isWorking = false;
} else {
console.log(zako.task());
}
}, 10000);
}
// ターン3
const names = [
"タカ、ミツ、ナミ、ユウ、ミホ"
];
console.log(`【慰安ZAKO】${names.join("、")}`);
function reuseDefective() {
console.log(`【教育】${zako.rest()}`);
}
// ターン4
function updateStatus() {
const randomEvent = Math.random();
if (randomEvent < 0.05) {
console.log(`基地が襲撃を受けた!${zako.name}は迎撃に向かった!`);
const randomOutcome = Math.random();
if (randomOutcome < 0.5) {
console.log(`${zako.name}は戦いの中で倒れてしまった。`);
zako = new ZAKO(ZAKO_LIST[Math.floor(Math.random() * ZAKO_LIST.length)]);
console.log(`「新たな${zako.type}が誕生した」\n${zako.evaluate()}`);
} else {
console.log(`${zako.name}は勝利した!`);
zako.fatigue = Math.max(zako.fatigue - 10, 0);
}
}
setTimeout(updateStatus, 10000);
}
startEvaluation();
setInterval(reuseDefective, 30000);
updateStatus();
// アプリコード終了