Skip to content

Instantly share code, notes, and snippets.

@MauMaGau
Forked from Shipow/robot.js
Created December 5, 2012 19:37
Show Gist options
  • Save MauMaGau/4218804 to your computer and use it in GitHub Desktop.
Save MauMaGau/4218804 to your computer and use it in GitHub Desktop.
Application Error
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