-
-
Save MauMaGau/4218804 to your computer and use it in GitHub Desktop.
Application Error
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var enemyWallbot = false; | |
var Robot = function(robot) { | |
robot.clone() | |
if(robot.parentId==null){ | |
robot.turn(180); | |
robot.rotateCannon(180); | |
} | |
}; | |
Robot.prototype.onIdle = function(ev) { | |
var robot = ev.robot; | |
robot.listen('onHitByBullet'); | |
robot.listen('onRobotCollision'); | |
robot.listen('onWallCollision'); | |
robot.listen('onScannedRobot'); | |
robot.ahead(1); | |
robot.rotateCannon(1); | |
}; | |
Robot.prototype.onScannedRobot = function(ev) { | |
var robot = ev.robot; | |
if(isEnemy(robot, ev.scannedRobot)){ | |
if(isEnemyWallbot(robot, ev.scannedRobot)){ | |
} | |
robot.ignore('onScannedRobot'); | |
robot.fire(); | |
var angle = 10; | |
for(var i=0;i<angle;i++){ | |
robot.turn(-1); | |
robot.ahead(1); | |
} | |
robot.listen('onScannedRobot'); | |
robot.rotateCannon(-5); | |
robot.rotateCannon(30); | |
robot.rotateCannon(-15); | |
robot.ahead(20); | |
} | |
}; | |
Robot.prototype.onHitByBullet = function(ev) { | |
var robot = ev.robot; | |
robot.ignore('onScannedRobot'); | |
robot.turn(10); | |
robot.ahead(40); | |
robot.listen('onScannedRobot'); | |
engage(ev, ev.bearing); | |
}; | |
Robot.prototype.onRobotCollision = function(ev) { | |
var robot = ev.robot; | |
if(isEnemy(robot, ev.collidedRobot)){ | |
engage(ev, ev.bearing); | |
}else{ | |
var angle = 90; | |
for(var i=0;i<angle;i++){ | |
robot.back(1); | |
robot.turn(1); | |
} | |
} | |
}; | |
Robot.prototype.onWallCollision = function(ev) { | |
var robot = ev.robot; | |
if(enemyWallbot){ | |
// Become the enemy - stick to the wall | |
var x = (90+ev.bearing); | |
for(i=0;i<x;i++){ | |
robot.turn(1); | |
robot.rotateCannon(-1); | |
} | |
}else{ | |
var angle = 100; | |
robot.turn(angle); | |
for(var i=0;i<angle;i++){ | |
robot.ahead(2); | |
robot.rotateCannon(-1); | |
} | |
} | |
}; | |
function engage(ev, bearing){ | |
var robot = ev.robot; | |
// Ignore other events | |
robot.ignore('onHitByBullet'); | |
robot.ignore('onRobotCollision'); | |
//robot.ignore('onWallCollision'); | |
// Bring cannon to bear and keep moving | |
var cannonBearing = (-robot.cannonRelativeAngle + bearing); | |
for(var i=0; i < cannonBearing; i++){ | |
robot.rotateCannon(1); | |
robot.ahead(1); | |
} | |
// Scan area of bearing | |
robot.rotateCannon(-15); | |
robot.rotateCannon(15); | |
} | |
function isEnemy(my, their){ | |
if(their.id === my.parentId || their.parentId === my.id){ | |
return false; | |
} | |
return true; | |
}; | |
function isEnemyWallbot(my, their){ | |
if(their.position.x < 30 || their.position.x > (my.arenaWidth - 30) || their.position.y < 30 || their.position.y > (my.arenaHeight - 30)){ | |
enemyWallbot = true; | |
return true; | |
}else{ | |
enemyWallbot = false; | |
return false; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment