// กำหนดระบบดาวและโครงสร้างบอร์ด
const systems = {
"Nebula Rex": ["-", "-", "-", "-"],
"Vortex Prime": ["-", "-", "-", "-"],
"Drakon’s Veil": ["-", "-", "-", "-"],
"Solaris Abyss": ["-", "-", "-", "-"],
"Kryon Verge": ["-", "-", "-", "-"],
"Aetherion Rift": ["-", "-", "-", "-"],
"Synthara Nexus": ["-", "-", "-", "-"],
"Zorath Crucible": ["-", "-", "-", "-"]
};
// ความสัมพันธ์ "ติดกัน" ระหว่างระบบ
const adjacentSystems = {
"Nebula Rex": ["Vortex Prime", "Zorath Crucible"],
"Vortex Prime": ["Nebula Rex", "Drakon’s Veil"],
"Drakon’s Veil": ["Vortex Prime", "Solaris Abyss"],
"Solaris Abyss": ["Drakon’s Veil", "Kryon Verge"],
"Kryon Verge": ["Solaris Abyss", "Aetherion Rift"],
"Aetherion Rift": ["Kryon Verge", "Synthara Nexus"],
"Synthara Nexus": ["Aetherion Rift", "Zorath Crucible"],
"Zorath Crucible": ["Synthara Nexus", "Nebula Rex"]
};
// ผู้เล่น (ตัวอย่าง 2 ผู้เล่น)
const players = {
"Player A": { energy: 4, symbol: "A", bases: 0 },
"Player B": { energy: 4, symbol: "B", bases: 0 }
};
// แสดงบอร์ด
function printBoard() {
console
.log("\n=== Galactic Betrayal Board ==="); for (const system in systems
) { }
console
.log("\nPlayer Stats:"); for (const player in players) {
console
.log(`$
{player
}: Energy
= $
{players
[player
].energy
}, Bases
= $
{players
[player
].bases
}`
); }
}
// ตรวจสอบการครองระบบดาว
function checkSystemControl() {
for (const system in systems
) { const planets
= systems
[system]; if (planets.every(p => p === planets[0] && p !== "-")) {
console
.log(`$
{system} is controlled by $
{planets
[0]}!`
); for (const player in players) {
if (players[player].symbol === planets[0]) {
players[player].energy += 3;
console
.log(`$
{player
} gains
3 energy
for controlling $
{system}!`
); }
}
}
}
}
// สร้างฐานทัพ
function buildBase
(player
, system, position
) { if (players
[player
].energy
>= 2 && systems
[system][position
] === "-") { players[player].energy -= 2;
players[player].bases += 1;
systems
[system][position
] = players
[player
].symbol
; console
.log(`$
{player
} builds a base in $
{system} at position $
{position
}`
); } else {
console
.log(`$
{player
} cannot build
: not enough energy or position occupied`
); }
}
// ยึดฐานทัพ
function captureBase
(player
, system, position
) { const targetSymbol
= systems
[system][position
]; if (targetSymbol !== "-" && targetSymbol !== players[player].symbol) {
if (players[player].energy >= 2) {
let canCapture = false;
for (const adjSystem of allAdjacent) {
if (systems[adjSystem].includes(players[player].symbol)) {
canCapture = true;
break;
}
}
if (canCapture) {
players[player].energy -= 2;
systems
[system][position
] = players
[player
].symbol
; console
.log(`$
{player
} captures a base in $
{system} at position $
{position
}`
); for (const p in players) {
if (players[p].symbol === targetSymbol) {
players[p].bases -= 1;
}
}
players[player].bases += 1;
} else {
console
.log(`$
{player
} cannot capture
: no adjacent base`
); }
} else {
console
.log(`$
{player
} cannot capture
: not enough energy`
); }
} else {
console
.log(`$
{player
} cannot capture
: empty or own base`
); }
}
// จำลองเกม
function playGame() {
let turn = 1;
function nextTurn() {
if (turn > 10) {
console
.log("\nGame Over: 10 turns completed"); return;
}
console
.log(`\n
=== Turn $
{turn
} ===`
); for (const player in players) {
players[player].energy += 1; // ได้พลังงาน 1 ต่อตา
printBoard();
const action = prompt(`${player}, choose action (build/capture/skip): `);
if (action === "build") {
const system = prompt
("Enter system (e.g., Nebula Rex): "); const pos = parseInt
(prompt
("Enter position (0-3): ")); } else if (action === "capture") {
const system = prompt
("Enter system (e.g., Nebula Rex): "); const pos = parseInt
(prompt
("Enter position (0-3): ")); }
checkSystemControl();
if (players[player].bases >= 15) {
console
.log(`$
{player
} wins by conquering
15 bases
!`
); return;
}
}
turn++;
setTimeout(nextTurn, 100); // หน่วงเวลาเล็กน้อยเพื่อให้คอนโซลไม่รวน
}
nextTurn();
}
// รันเกม (ต้องรันในเบราว์เซอร์)
playGame();
Ly8g4LiB4Liz4Lir4LiZ4LiU4Lij4Liw4Lia4Lia4LiU4Liy4Lin4LmB4Lil4Liw4LmC4LiE4Lij4LiH4Liq4Lij4LmJ4Liy4LiH4Lia4Lit4Lij4LmM4LiUCmNvbnN0IHN5c3RlbXMgPSB7CiAgICAiTmVidWxhIFJleCI6IFsiLSIsICItIiwgIi0iLCAiLSJdLAogICAgIlZvcnRleCBQcmltZSI6IFsiLSIsICItIiwgIi0iLCAiLSJdLAogICAgIkRyYWtvbuKAmXMgVmVpbCI6IFsiLSIsICItIiwgIi0iLCAiLSJdLAogICAgIlNvbGFyaXMgQWJ5c3MiOiBbIi0iLCAiLSIsICItIiwgIi0iXSwKICAgICJLcnlvbiBWZXJnZSI6IFsiLSIsICItIiwgIi0iLCAiLSJdLAogICAgIkFldGhlcmlvbiBSaWZ0IjogWyItIiwgIi0iLCAiLSIsICItIl0sCiAgICAiU3ludGhhcmEgTmV4dXMiOiBbIi0iLCAiLSIsICItIiwgIi0iXSwKICAgICJab3JhdGggQ3J1Y2libGUiOiBbIi0iLCAiLSIsICItIiwgIi0iXQp9OwoKLy8g4LiE4Lin4Liy4Lih4Liq4Lix4Lih4Lie4Lix4LiZ4LiY4LmMICLguJXguLTguJTguIHguLHguJkiIOC4o+C4sOC4q+C4p+C5iOC4suC4h+C4o+C4sOC4muC4mgpjb25zdCBhZGphY2VudFN5c3RlbXMgPSB7CiAgICAiTmVidWxhIFJleCI6IFsiVm9ydGV4IFByaW1lIiwgIlpvcmF0aCBDcnVjaWJsZSJdLAogICAgIlZvcnRleCBQcmltZSI6IFsiTmVidWxhIFJleCIsICJEcmFrb27igJlzIFZlaWwiXSwKICAgICJEcmFrb27igJlzIFZlaWwiOiBbIlZvcnRleCBQcmltZSIsICJTb2xhcmlzIEFieXNzIl0sCiAgICAiU29sYXJpcyBBYnlzcyI6IFsiRHJha29u4oCZcyBWZWlsIiwgIktyeW9uIFZlcmdlIl0sCiAgICAiS3J5b24gVmVyZ2UiOiBbIlNvbGFyaXMgQWJ5c3MiLCAiQWV0aGVyaW9uIFJpZnQiXSwKICAgICJBZXRoZXJpb24gUmlmdCI6IFsiS3J5b24gVmVyZ2UiLCAiU3ludGhhcmEgTmV4dXMiXSwKICAgICJTeW50aGFyYSBOZXh1cyI6IFsiQWV0aGVyaW9uIFJpZnQiLCAiWm9yYXRoIENydWNpYmxlIl0sCiAgICAiWm9yYXRoIENydWNpYmxlIjogWyJTeW50aGFyYSBOZXh1cyIsICJOZWJ1bGEgUmV4Il0KfTsKCi8vIOC4nOC4ueC5ieC5gOC4peC5iOC4mSAo4LiV4Lix4Lin4Lit4Lii4LmI4Liy4LiHIDIg4Lic4Li54LmJ4LmA4Lil4LmI4LiZKQpjb25zdCBwbGF5ZXJzID0gewogICAgIlBsYXllciBBIjogeyBlbmVyZ3k6IDQsIHN5bWJvbDogIkEiLCBiYXNlczogMCB9LAogICAgIlBsYXllciBCIjogeyBlbmVyZ3k6IDQsIHN5bWJvbDogIkIiLCBiYXNlczogMCB9Cn07CgovLyDguYHguKrguJTguIfguJrguK3guKPguYzguJQKZnVuY3Rpb24gcHJpbnRCb2FyZCgpIHsKICAgIGNvbnNvbGUubG9nKCJcbj09PSBHYWxhY3RpYyBCZXRyYXlhbCBCb2FyZCA9PT0iKTsKICAgIGZvciAoY29uc3Qgc3lzdGVtIGluIHN5c3RlbXMpIHsKICAgICAgICBjb25zb2xlLmxvZyhgJHtzeXN0ZW19OiBbJHtzeXN0ZW1zW3N5c3RlbV0uam9pbigiLCAiKX1dYCk7CiAgICB9CiAgICBjb25zb2xlLmxvZygiXG5QbGF5ZXIgU3RhdHM6Iik7CiAgICBmb3IgKGNvbnN0IHBsYXllciBpbiBwbGF5ZXJzKSB7CiAgICAgICAgY29uc29sZS5sb2coYCR7cGxheWVyfTogRW5lcmd5ID0gJHtwbGF5ZXJzW3BsYXllcl0uZW5lcmd5fSwgQmFzZXMgPSAke3BsYXllcnNbcGxheWVyXS5iYXNlc31gKTsKICAgIH0KfQoKLy8g4LiV4Lij4Lin4LiI4Liq4Lit4Lia4LiB4Liy4Lij4LiE4Lij4Lit4LiH4Lij4Liw4Lia4Lia4LiU4Liy4LinCmZ1bmN0aW9uIGNoZWNrU3lzdGVtQ29udHJvbCgpIHsKICAgIGZvciAoY29uc3Qgc3lzdGVtIGluIHN5c3RlbXMpIHsKICAgICAgICBjb25zdCBwbGFuZXRzID0gc3lzdGVtc1tzeXN0ZW1dOwogICAgICAgIGlmIChwbGFuZXRzLmV2ZXJ5KHAgPT4gcCA9PT0gcGxhbmV0c1swXSAmJiBwICE9PSAiLSIpKSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke3N5c3RlbX0gaXMgY29udHJvbGxlZCBieSAke3BsYW5ldHNbMF19IWApOwogICAgICAgICAgICBmb3IgKGNvbnN0IHBsYXllciBpbiBwbGF5ZXJzKSB7CiAgICAgICAgICAgICAgICBpZiAocGxheWVyc1twbGF5ZXJdLnN5bWJvbCA9PT0gcGxhbmV0c1swXSkgewogICAgICAgICAgICAgICAgICAgIHBsYXllcnNbcGxheWVyXS5lbmVyZ3kgKz0gMzsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgJHtwbGF5ZXJ9IGdhaW5zIDMgZW5lcmd5IGZvciBjb250cm9sbGluZyAke3N5c3RlbX0hYCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCi8vIOC4quC4o+C5ieC4suC4h+C4kOC4suC4meC4l+C4seC4ngpmdW5jdGlvbiBidWlsZEJhc2UocGxheWVyLCBzeXN0ZW0sIHBvc2l0aW9uKSB7CiAgICBpZiAocGxheWVyc1twbGF5ZXJdLmVuZXJneSA+PSAyICYmIHN5c3RlbXNbc3lzdGVtXVtwb3NpdGlvbl0gPT09ICItIikgewogICAgICAgIHBsYXllcnNbcGxheWVyXS5lbmVyZ3kgLT0gMjsKICAgICAgICBwbGF5ZXJzW3BsYXllcl0uYmFzZXMgKz0gMTsKICAgICAgICBzeXN0ZW1zW3N5c3RlbV1bcG9zaXRpb25dID0gcGxheWVyc1twbGF5ZXJdLnN5bWJvbDsKICAgICAgICBjb25zb2xlLmxvZyhgJHtwbGF5ZXJ9IGJ1aWxkcyBhIGJhc2UgaW4gJHtzeXN0ZW19IGF0IHBvc2l0aW9uICR7cG9zaXRpb259YCk7CiAgICB9IGVsc2UgewogICAgICAgIGNvbnNvbGUubG9nKGAke3BsYXllcn0gY2Fubm90IGJ1aWxkOiBub3QgZW5vdWdoIGVuZXJneSBvciBwb3NpdGlvbiBvY2N1cGllZGApOwogICAgfQp9CgovLyDguKLguLbguJTguJDguLLguJnguJfguLHguJ4KZnVuY3Rpb24gY2FwdHVyZUJhc2UocGxheWVyLCBzeXN0ZW0sIHBvc2l0aW9uKSB7CiAgICBjb25zdCB0YXJnZXRTeW1ib2wgPSBzeXN0ZW1zW3N5c3RlbV1bcG9zaXRpb25dOwogICAgaWYgKHRhcmdldFN5bWJvbCAhPT0gIi0iICYmIHRhcmdldFN5bWJvbCAhPT0gcGxheWVyc1twbGF5ZXJdLnN5bWJvbCkgewogICAgICAgIGlmIChwbGF5ZXJzW3BsYXllcl0uZW5lcmd5ID49IDIpIHsKICAgICAgICAgICAgbGV0IGNhbkNhcHR1cmUgPSBmYWxzZTsKICAgICAgICAgICAgY29uc3QgYWxsQWRqYWNlbnQgPSBbLi4uYWRqYWNlbnRTeXN0ZW1zW3N5c3RlbV0sIHN5c3RlbV07CiAgICAgICAgICAgIGZvciAoY29uc3QgYWRqU3lzdGVtIG9mIGFsbEFkamFjZW50KSB7CiAgICAgICAgICAgICAgICBpZiAoc3lzdGVtc1thZGpTeXN0ZW1dLmluY2x1ZGVzKHBsYXllcnNbcGxheWVyXS5zeW1ib2wpKSB7CiAgICAgICAgICAgICAgICAgICAgY2FuQ2FwdHVyZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGNhbkNhcHR1cmUpIHsKICAgICAgICAgICAgICAgIHBsYXllcnNbcGxheWVyXS5lbmVyZ3kgLT0gMjsKICAgICAgICAgICAgICAgIHN5c3RlbXNbc3lzdGVtXVtwb3NpdGlvbl0gPSBwbGF5ZXJzW3BsYXllcl0uc3ltYm9sOwogICAgICAgICAgICAgICAgY29uc29sZS5sb2coYCR7cGxheWVyfSBjYXB0dXJlcyBhIGJhc2UgaW4gJHtzeXN0ZW19IGF0IHBvc2l0aW9uICR7cG9zaXRpb259YCk7CiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHAgaW4gcGxheWVycykgewogICAgICAgICAgICAgICAgICAgIGlmIChwbGF5ZXJzW3BdLnN5bWJvbCA9PT0gdGFyZ2V0U3ltYm9sKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBsYXllcnNbcF0uYmFzZXMgLT0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwbGF5ZXJzW3BsYXllcl0uYmFzZXMgKz0gMTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke3BsYXllcn0gY2Fubm90IGNhcHR1cmU6IG5vIGFkamFjZW50IGJhc2VgKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke3BsYXllcn0gY2Fubm90IGNhcHR1cmU6IG5vdCBlbm91Z2ggZW5lcmd5YCk7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBjb25zb2xlLmxvZyhgJHtwbGF5ZXJ9IGNhbm5vdCBjYXB0dXJlOiBlbXB0eSBvciBvd24gYmFzZWApOwogICAgfQp9CgovLyDguIjguLPguKXguK3guIfguYDguIHguKEKZnVuY3Rpb24gcGxheUdhbWUoKSB7CiAgICBsZXQgdHVybiA9IDE7CiAgICBmdW5jdGlvbiBuZXh0VHVybigpIHsKICAgICAgICBpZiAodHVybiA+IDEwKSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCJcbkdhbWUgT3ZlcjogMTAgdHVybnMgY29tcGxldGVkIik7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgY29uc29sZS5sb2coYFxuPT09IFR1cm4gJHt0dXJufSA9PT1gKTsKICAgICAgICBmb3IgKGNvbnN0IHBsYXllciBpbiBwbGF5ZXJzKSB7CiAgICAgICAgICAgIHBsYXllcnNbcGxheWVyXS5lbmVyZ3kgKz0gMTsgLy8g4LmE4LiU4LmJ4Lie4Lil4Lix4LiH4LiH4Liy4LiZIDEg4LiV4LmI4Lit4LiV4LiyCiAgICAgICAgICAgIHByaW50Qm9hcmQoKTsKICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gcHJvbXB0KGAke3BsYXllcn0sIGNob29zZSBhY3Rpb24gKGJ1aWxkL2NhcHR1cmUvc2tpcCk6IGApOwogICAgICAgICAgICBpZiAoYWN0aW9uID09PSAiYnVpbGQiKSB7CiAgICAgICAgICAgICAgICBjb25zdCBzeXN0ZW0gPSBwcm9tcHQoIkVudGVyIHN5c3RlbSAoZS5nLiwgTmVidWxhIFJleCk6ICIpOwogICAgICAgICAgICAgICAgY29uc3QgcG9zID0gcGFyc2VJbnQocHJvbXB0KCJFbnRlciBwb3NpdGlvbiAoMC0zKTogIikpOwogICAgICAgICAgICAgICAgYnVpbGRCYXNlKHBsYXllciwgc3lzdGVtLCBwb3MpOwogICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PT0gImNhcHR1cmUiKSB7CiAgICAgICAgICAgICAgICBjb25zdCBzeXN0ZW0gPSBwcm9tcHQoIkVudGVyIHN5c3RlbSAoZS5nLiwgTmVidWxhIFJleCk6ICIpOwogICAgICAgICAgICAgICAgY29uc3QgcG9zID0gcGFyc2VJbnQocHJvbXB0KCJFbnRlciBwb3NpdGlvbiAoMC0zKTogIikpOwogICAgICAgICAgICAgICAgY2FwdHVyZUJhc2UocGxheWVyLCBzeXN0ZW0sIHBvcyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2hlY2tTeXN0ZW1Db250cm9sKCk7CiAgICAgICAgICAgIGlmIChwbGF5ZXJzW3BsYXllcl0uYmFzZXMgPj0gMTUpIHsKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke3BsYXllcn0gd2lucyBieSBjb25xdWVyaW5nIDE1IGJhc2VzIWApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHR1cm4rKzsKICAgICAgICBzZXRUaW1lb3V0KG5leHRUdXJuLCAxMDApOyAvLyDguKvguJnguYjguKfguIfguYDguKfguKXguLLguYDguKXguYfguIHguJnguYnguK3guKLguYDguJ7guLfguYjguK3guYPguKvguYnguITguK3guJnguYLguIvguKXguYTguKHguYjguKPguKfguJkKICAgIH0KICAgIG5leHRUdXJuKCk7Cn0KCi8vIOC4o+C4seC4meC5gOC4geC4oSAo4LiV4LmJ4Lit4LiH4Lij4Lix4LiZ4LmD4LiZ4LmA4Lia4Lij4Liy4Lin4LmM4LmA4LiL4Lit4Lij4LmMKQpwbGF5R2FtZSgpOw==
// กำหนดระบบดาวและโครงสร้างบอร์ด
const systems = {
"Nebula Rex": ["-", "-", "-", "-"],
"Vortex Prime": ["-", "-", "-", "-"],
"Drakon’s Veil": ["-", "-", "-", "-"],
"Solaris Abyss": ["-", "-", "-", "-"],
"Kryon Verge": ["-", "-", "-", "-"],
"Aetherion Rift": ["-", "-", "-", "-"],
"Synthara Nexus": ["-", "-", "-", "-"],
"Zorath Crucible": ["-", "-", "-", "-"]
};
// ความสัมพันธ์ "ติดกัน" ระหว่างระบบ
const adjacentSystems = {
"Nebula Rex": ["Vortex Prime", "Zorath Crucible"],
"Vortex Prime": ["Nebula Rex", "Drakon’s Veil"],
"Drakon’s Veil": ["Vortex Prime", "Solaris Abyss"],
"Solaris Abyss": ["Drakon’s Veil", "Kryon Verge"],
"Kryon Verge": ["Solaris Abyss", "Aetherion Rift"],
"Aetherion Rift": ["Kryon Verge", "Synthara Nexus"],
"Synthara Nexus": ["Aetherion Rift", "Zorath Crucible"],
"Zorath Crucible": ["Synthara Nexus", "Nebula Rex"]
};
// ผู้เล่น (ตัวอย่าง 2 ผู้เล่น)
const players = {
"Player A": { energy: 4, symbol: "A", bases: 0 },
"Player B": { energy: 4, symbol: "B", bases: 0 }
};
// แสดงบอร์ด
function printBoard() {
console.log("\n=== Galactic Betrayal Board ===");
for (const system in systems) {
console.log(`${system}: [${systems[system].join(", ")}]`);
}
console.log("\nPlayer Stats:");
for (const player in players) {
console.log(`${player}: Energy = ${players[player].energy}, Bases = ${players[player].bases}`);
}
}
// ตรวจสอบการครองระบบดาว
function checkSystemControl() {
for (const system in systems) {
const planets = systems[system];
if (planets.every(p => p === planets[0] && p !== "-")) {
console.log(`${system} is controlled by ${planets[0]}!`);
for (const player in players) {
if (players[player].symbol === planets[0]) {
players[player].energy += 3;
console.log(`${player} gains 3 energy for controlling ${system}!`);
}
}
}
}
}
// สร้างฐานทัพ
function buildBase(player, system, position) {
if (players[player].energy >= 2 && systems[system][position] === "-") {
players[player].energy -= 2;
players[player].bases += 1;
systems[system][position] = players[player].symbol;
console.log(`${player} builds a base in ${system} at position ${position}`);
} else {
console.log(`${player} cannot build: not enough energy or position occupied`);
}
}
// ยึดฐานทัพ
function captureBase(player, system, position) {
const targetSymbol = systems[system][position];
if (targetSymbol !== "-" && targetSymbol !== players[player].symbol) {
if (players[player].energy >= 2) {
let canCapture = false;
const allAdjacent = [...adjacentSystems[system], system];
for (const adjSystem of allAdjacent) {
if (systems[adjSystem].includes(players[player].symbol)) {
canCapture = true;
break;
}
}
if (canCapture) {
players[player].energy -= 2;
systems[system][position] = players[player].symbol;
console.log(`${player} captures a base in ${system} at position ${position}`);
for (const p in players) {
if (players[p].symbol === targetSymbol) {
players[p].bases -= 1;
}
}
players[player].bases += 1;
} else {
console.log(`${player} cannot capture: no adjacent base`);
}
} else {
console.log(`${player} cannot capture: not enough energy`);
}
} else {
console.log(`${player} cannot capture: empty or own base`);
}
}
// จำลองเกม
function playGame() {
let turn = 1;
function nextTurn() {
if (turn > 10) {
console.log("\nGame Over: 10 turns completed");
return;
}
console.log(`\n=== Turn ${turn} ===`);
for (const player in players) {
players[player].energy += 1; // ได้พลังงาน 1 ต่อตา
printBoard();
const action = prompt(`${player}, choose action (build/capture/skip): `);
if (action === "build") {
const system = prompt("Enter system (e.g., Nebula Rex): ");
const pos = parseInt(prompt("Enter position (0-3): "));
buildBase(player, system, pos);
} else if (action === "capture") {
const system = prompt("Enter system (e.g., Nebula Rex): ");
const pos = parseInt(prompt("Enter position (0-3): "));
captureBase(player, system, pos);
}
checkSystemControl();
if (players[player].bases >= 15) {
console.log(`${player} wins by conquering 15 bases!`);
return;
}
}
turn++;
setTimeout(nextTurn, 100); // หน่วงเวลาเล็กน้อยเพื่อให้คอนโซลไม่รวน
}
nextTurn();
}
// รันเกม (ต้องรันในเบราว์เซอร์)
playGame();