Batalla Por Terra < 100% Proven >
// Lógica de selección y ataque function handleCellClick(x, y) if (checkVictory()) return; const cell = grid[x][y]; // Si tenemos unidad seleccionada if (selectedUnit) const sel = selectedUnit; if (cell.side && cell.side !== currentTurn) // Atacar attack(sel.x, sel.y, x, y); selectedUnit = null; updateUI(); const winner = checkVictory(); if (!winner) // Después de atacar no se cambia turno automáticamente (opcional, puedes cambiarlo) // Por diseño: ataque consume turno? En muchos juegos sí. Aquí decidimos que después de atacar termina turno // Descomentar si quieres que atacar termine turno: endTurn(); updateUI(); else // Selección inválida addLog("❌ No puedes atacar ahí"); selectedUnit = null; updateUI(); // Si no hay selección, seleccionar unidad propia si es el turno correcto else if (cell.side === currentTurn && cell.unit !== null) selectedUnit = x, y ; addLog(`✅ Unidad $cell.unit.icon seleccionada en ($x,$y)`); updateUI(); else addLog("⚠️ Selecciona una unidad de tu ejército.");
// Inicializar resetGame(); </script> </body> </html> import random import os class Terrain: PLAIN = "name": "Plain", "dmg_atk": 1.0, "dmg_def": 1.0, "def_bonus": 0 FOREST = "name": "Forest", "dmg_atk": 0.9, "dmg_def": 1.1, "def_bonus": 2 HILL = "name": "Hill", "dmg_atk": 1.15, "dmg_def": 0.95, "def_bonus": 1 batalla por terra
def setup_armies(self): # Attacker left side, Defender right side for i in range(self.size): if i < self.size//2: self.grid[i][0] = Unit(random.choice(["Infantry","Archer","Cavalry"]), "attacker") self.grid[i][1] = Unit(random.choice(["Infantry","Archer"]), "attacker") else: self.grid[i][self.size-1] = Unit(random.choice(["Infantry","Archer","Cavalry"]), "defender") self.grid[i][self.size-2] = Unit(random.choice(["Infantry","Archer"]), "defender") y) if (checkVictory()) return
