"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]; Cylon.robot({ name: name, connections: { sphero: { adaptor: "sphero", port: port } }, devices: { sphero: { driver: "sphero" } }, work: function(my) { my.born(); my.sphero.on("collision", function() { my.contacts += 1; }); every((3).seconds(), function() { if (my.alive) { my.move(); } }); every((10).seconds(), function() { my.birthday(); }); }, move: function() { this.sphero.roll(60, Math.floor(Math.random() * 360)); }, born: function() { this.contacts = 0; this.age = 0; this.life(); this.move(); }, life: function() { this.alive = true; this.sphero.setRGB(Green); }, death: function() { this.alive = false; this.sphero.setRGB(Red); this.sphero.stop(); }, enoughContacts: function() { return this.contacts >= 2 && this.contacts < 7; }, birthday: function() { this.age += 1; if (this.alive) { var str = "Happy birthday, "; str += this.name; str += ". You are "; str += this.age; str += " and had "; str += this.contacts; str += " contacts."; console.log(str); } if (this.enoughContacts()) { if (!this.alive) { this.born(); } } else { this.death(); } this.contacts = 0; } }); }); Cylon.start();