let gameState = 0; let myTeam = ""; let targetProvince = ""; const provinceList = ["山东", "河北", "江苏", "山西", "河南", "湖北", "广东"]; let soldiers = []; let resultText = ""; function setup() { createCanvas(700, 450); textAlign(CENTER, CENTER); textSize(22); } function draw() { background(46, 64, 37); if (gameState === 0) { fill(255); text("请选择作战阵营", width / 2, 70); drawBtn(220, 160, 260, 70, "#216ed8", "中国军"); drawBtn(220, 260, 260, 70, "#c62828", "日本军"); } else if (gameState === 1) { fill(255); text("请选择作战省份", width / 2, 60); let startY = 110; for (let i = 0; i < provinceList.length; i++) { drawBtn(230, startY, 240, 40, "#555", provinceList[i]); startY += 48; } } else if (gameState === 2) { fill(255); text( ${myTeam} · ${targetProvince} 战场 , width / 2, 40); updateSoldiers(); drawSoldiers(); if (resultText !== "") { fill(255, 230, 0); textSize(26); text(resultText, width / 2, height / 2); } } } function drawBtn(x, y, w, h, color, txt) { fill(color); rect(x, y, w, h, 8); fill(255); text(txt, x + w / 2, y + h / 2); if (mouseIsPressed && mouseX > x && mouseX < x + w && mouseY > y && mouseY < y + h) { if (gameState === 0) { myTeam = txt; gameState = 1; } else if (gameState === 1) { targetProvince = txt; gameState = 2; initBattle(); } } } function initBattle() { soldiers = []; resultText = ""; for (let i = 0; i < 12; i++) { soldiers.push({ team: "our", x: 60, y: 100 + i * 28, hp: 2 }); } for (let i = 0; i < 12; i++) { soldiers.push({ team: "enemy", x: 640, y: 100 + i * 28, hp: 2 }); } } function updateSoldiers() { let ourAlive = soldiers.filter(s => s.team === "our" && s.hp > 0).length; let enemyAlive = soldiers.filter(s => s.team === "enemy" && s.hp > 0).length; if (ourAlive === 0) { resultText = myTeam === "日本军" ? "占领成功!" : "阵地失守!"; return; } if (enemyAlive === 0) { resultText = myTeam === "中国军" ? "成功守住省份!" : "进攻失败!"; return; } for (let s of soldiers) { if (s.hp <= 0) continue; if (s.team === "our") { s.x += 0.8; } else { s.x -= 0.8; } for (let t of soldiers) { if (t.hp <= 0 || s.team === t.team) continue; let dist = abs(s.x - t.x); if (dist < 30) { t.hp -= 0.03; } } } } function drawSoldiers() { for (let s of soldiers) { if (s.hp <= 0) continue; if (s.team === "our") fill(33, 110, 216); else fill(198, 40, 40); rect(s.x, s.y, 16, 24); } }