Skip to content

Instantly share code, notes, and snippets.

@HugoLnx
Created December 8, 2012 02:09
Show Gist options
  • Select an option

  • Save HugoLnx/4238185 to your computer and use it in GitHub Desktop.

Select an option

Save HugoLnx/4238185 to your computer and use it in GitHub Desktop.
DoublePersonality(CrazyGiroscope+Megatron)
var CrazyGiroscope = function() {
var becameDistant = true;
var Robot = function(robot) {
robot.rotateCannon(-20);
};
Robot.prototype.onIdle = function(ev) {
var robot = ev.robot;
robot.clone();
if(robot.position.y > 40) {
if(robot.parentId) {
robot.turn(90-robot.angle);
robot.ahead(300);
becameDistant = false;
}
robot.turn(-robot.angle);
robot.ahead(robot.position.y-40);
robot.turn(90);
} else {
if(robot.position.x < 40) {
robot.ahead(50);
}
if(robot.position.x > (robot.arenaWidth-40)) {
robot.back(50);
}
}
robot.rotateCannon(110);
robot.ahead(50);
robot.rotateCannon(110);
robot.ahead(50);
robot.rotateCannon(-110);
robot.ahead(50);
robot.rotateCannon(-110);
robot.ahead(50);
robot.back(200);
//robot.ahead(100);
//robot.rotateCannon(360);
//robot.back(100);
//robot.rotateCannon(360);
};
Robot.prototype.onScannedRobot = function(ev) {
var robot = ev.robot;
var scanned = ev.scannedRobot;
if(scanned.id !== robot.parentId && scanned.parentId !== robot.id) {
robot.fire();
robot.rotateCannon(30);
robot.rotateCannon(-30);
}
};
return Robot;
};
var SexMachine = function() {
//FightCode can only understand your robot
//if its class is called Robot
var Robot = function(robot) {
//robot.rotateCannon(90);
};
var state = 0;
var lastFound = 0;
Robot.prototype.onIdle = function(ev) {
var robot = ev.robot;
robot.stop();
if(state === 0 || lastFound > 40)
robot.turn(1);
if(state === 2) {
robot.turn(3);
state = 3;
}
lastFound += 1;
};
Robot.prototype.onScannedRobot = function(ev) {
var robot = ev.robot;
var scanned = ev.scannedRobot;
if(scanned.id !== robot.parentId && scanned.parentId !== robot.id) {
if(state !== 3)
state = 2;
robot.stop();
robot.ahead(10);
robot.fire();
robot.back(10);
//robot.turn(-20);
lastFound = 0;
};
};
return Robot;
};
var Megatron = function() {
var Robot = function(robot) {
};
Robot.prototype.onIdle = function(ev) {
var robot = ev.robot;
robot.clone();
robot.ahead(100);
robot.rotateCannon(360);
robot.back(100);
robot.rotateCannon(360);
};
Robot.prototype.onScannedRobot = function(ev) {
var robot = ev.robot;
var scanned =ev.scannedRobot;
if(scanned.id !== robot.parentId && scanned.parentId !== robot.id) {
robot.fire();
robot.rotateCannon(-3);
robot.rotateCannon(-30);
}else{
robot.ahead(30);
}
};
Robot.prototype.onHitByBullet = function(ev) {
var robot;
robot = ev.robot;
robot.turn(90 - ev.bulletBearing);
robot.ahead(-60);
robot.turn(60 - ev.bulletBearing);
robot.back(100);
};
Robot.prototype.onRobotCollision = function(ev) {
var robot = ev.robot;
robot.ahead(robot.position+5);
robot.ahead(robot.position-15);
// trying to run away
};
return Robot;
};
function DoublePersonality(main, clone){
var Robot = function(robot) {
if(robot.parentId) {
clone(robot);
} else {
main(robot);
}
};
(function(){
var events = [
"onIdle",
"onScannedRobot",
"onRobotCollision",
"onHitByBullet"
];
for (var i = 0; i <= events.length; i++) {
(function(){
var event = events[i];
Robot.prototype[event] = function(ev) {
var robot = ev.robot;
robot.clone();
if(robot.parentId) {
clone.prototype[event](ev);
} else {
main.prototype[event](ev);
}
};
}());
}
}());
return Robot;
}
var Robot = DoublePersonality(CrazyGiroscope(), Megatron());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment