// player settings let player = x: Math.floor(GRID_W/2), y: Math.floor(GRID_H/2), dir: 'right', // current moving direction trail: [], // list of cells that form the active tail alive: true, cells: new Set(), // owned territory (key "x,y") justCaptured: false ;
player.x = newX; player.y = newY; syncPlayerTerritoryToGrid(); return true; paper.io.gitlab
const newCellKey = getKey(newX, newY); const isTerritory = isOwnedByPlayer(newX, newY); const isOnTrail = player.trail.some(seg => seg.x === newX && seg.y === newY); // player settings let player = x: Math
// ---------- Helper functions ---------- function getKey(x,y) return `$x,$y`; // current moving direction trail: []
// stepping into own territory while having active trail -> CAPTURE & close if(isTerritory && player.trail.length > 0) // close the loop: add current head + all trail cells become territory addCellToTerritory(player.x, player.y); captureTrail(); // after capture, move head to new cell (which is territory) player.x = newX; player.y = newY; syncPlayerTerritoryToGrid(); updateScore(); return true;