Spaces:
Running
Running
File size: 3,401 Bytes
87b3b3a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# threeKeys.js
## Key-Eater
Oh, a robot "eats" the keys. It first grabs the red key and suicides, re-spawning in the second cell. When the last key gets eaten, teleporters are placed.
```javascript
// You might find this useful.
map.placeObject(8, 6, 'phone');
// ----- PHASE ONE -- A robot gets the keys and self-destructs. ----- \\
// The anti-robot device.
map.defineObject('anti-robot', {
symbol: 'q',
color: '#9f3',
type: 'dynamic',
projectile: true,
interval: 200,
behavior: function(me) { me.move('down'); }
});
// The robot.
map.defineObject("robot", {
symbol: "R",
color: "#897",
type: "dynamic",
interval: 300,
//projectile: true,
behavior: function(me) {
me.t = me.t || 1;
me.move('down');
me.t++;
if (me.t === 9) {
// self-destruct
map.placeObject(me.getX(), me.getY()-2, 'anti-robot');
}
},
onDestroy: function(me) {
// ---- PHASE TWO -- Oh, place keys. ---- \\
if (me.getY() < 24)
map.placeObject(me.getX(), me.getY()+2, 'robot');
else {
map.placeObject(8, 9, 'computer');
map.placeObject(8, 12, 'redKey');
map.placeObject(8, 15, 'greenKey');
map.placeObject(8, 18, 'blueKey');
// because I feel like it
map.placeObject(8, 21, 'yellowKey');
}
}
});
// ----- PHASE THREE -- The player places teleports. ----- \\
map.getPlayer().setPhoneCallback(function() {
if (map.countObjects('robot') > 0) {
map.writeStatus("Wait! There are still dynamic objects.");
} else {
map.placeObject(8, 15, 'teleporter');
map.placeObject(42, 15, 'teleporter');
var d = map.getDynamicObjects();
d[0].setTarget(d[1]);
}
});
// Gets the reaction going.
map.placeObject(24, 1, 'robot');
```
##Teleport
1. Place teleporter (q)
2. enter room
3. Get Key
4. Leave room
5. Remove teleporter (q)
6. Repeat.
```javascript
map.defineObject('killBox',{
'type':'dynamic',
'symbol':'X',
'interval':100,
'behavior':function(me){me.move('up')},
'projectile': true
});
var teleport1X = 0;
var teleport1Y = 0;
var teleport2X = [20,20,20,40];
var teleport2Y = [0,10,20,20];
var teleport1;
var teleport2;
var i_ = 0;
map.placeObject(8, 6, 'phone');
map.placeObject(teleport1X, teleport1Y, 'teleporter');
map.getPlayer().setPhoneCallback(function(){
if((i_ % 2) == 1){
map.placeObject(teleport2.getX(),(teleport2.getY() + 1),'killBox');
}else{
map.placeObject(teleport2X[i_/2], teleport2Y[i_/2], 'teleporter');
var dynamicObjects = map.getDynamicObjects();
for (i = 0; i < dynamicObjects.length; i++) {
var t = dynamicObjects[i];
if ((t.getX() == teleport1X) && (t.getY() == teleport1Y)) {
teleport1 = t;
}
if ((t.getX() == teleport2X[i_/2])&&(t.getY() == teleport2Y[i_/2])){
teleport2 = t;
}
}
teleport1.setTarget(teleport2);
teleport2.setTarget(teleport1);
}
i_=i_+1;
});
```
|