"use strict"; var Cylon = require("cylon"); var Green = 0x0000FF, Red = 0xFF0000; var bots = { Thelma: "/dev/rfcomm0", Louise: "/dev/rfcomm1", Grace: "/dev/rfcomm2", Ada: "/dev/rfcomm3" }; Object.keys(bots).forEach(function(name) { var port = bots[name]; var robot = Cylon.robot({ name: name }); robot.connection("sphero", { adaptor: "sphero", port: port }); robot.device("sphero", { driver: "sphero" }); robot.move = function() { robot.sphero.roll(60, Math.floor(Math.random() * 360)); }; robot.born = function() { robot.contacts = 0; robot.age = 0; robot.life(); robot.move(); }; robot.life = function() { robot.alive = true; robot.sphero.setRGB(Green); }; robot.death = function() { robot.alive = false; robot.sphero.setRGB(Red); robot.sphero.stop(); }; robot.enoughContacts = function() { return robot.contacts >= 2 && robot.contacts < 7; }; robot.birthday = function() { robot.age += 1; if (robot.alive) { var str = "Happy birthday, "; str += robot.name; str += ". You are "; str += robot.age; str += " and had "; str += robot.contacts; str += " contacts."; console.log(str); } if (robot.enoughContacts()) { if (!robot.alive) { robot.born(); } } else { robot.death(); } robot.contacts = 0; }; robot.on("ready", function() { robot.born(); robot.sphero.on("collision", function() { robot.contacts += 1; }); every((3).seconds(), function() { if (robot.alive) { robot.move(); } }); every((10).seconds(), function() { robot.birthday(); }); }); }); Cylon.start();