function decide(playerMass, nearestFoodAngle, nearestPlayerAngle, playerToPlayerDist, playerToVirusDist) if (playerMass < 150) return nearestFoodAngle; // just eat if (playerMass > 800) if (playerToVirusDist < 100 && playerToPlayerDist < 200) // aim virus towards enemy return angleToNearestEnemy; if (playerToPlayerDist < 80 && playerMass / otherPlayerMass > 1.3) // split and eat split(); return angleToNearestEnemy; if (playerToPlayerDist < 100 && playerMass / otherPlayerMass < 0.8) // run away return angleAwayFromEnemy; return nearestFoodAngle;

function update() const player = findPlayerCell(); const target = findNearestFood(player.x, player.y); moveTowards(target.angle); requestAnimationFrame(update);

function findNearestFood(playerX, playerY) // Scan grid around player for small light-gray dots. // Simplified: just return direction to nearest pellet. // Real implementation uses quadtree or spiral scan. return angle: Math.random() * 2 * Math.PI ;