swarm-0.4: data/scenarios/Testing/201-require/533-reprogram-simple.yaml
version: 1
name: Equip devices while reprogramming
description: |
While executing 'reprogram', we should equip any required devices which
the target robot doesn't have.
https://github.com/swarm-game/swarm/pulls/533
objectives:
- condition: |
try {
base_boats <- as base {count "boat"};
base_solar <- as base {count "solar panel"};
base_treads <- as base {count "treads"};
base_drills <- as base {count "metal drill"};
fred <- robotNamed "fred";
p <- as fred {whereami};
boatEquipped <- as fred {equipped "boat"};
drillEquipped <- as fred {equipped "metal drill"};
solarEquipped <- as fred {equipped "solar panel"};
treadsEquipped <- as fred {equipped "treads"};
return (p == (2,0)
&& boatEquipped && drillEquipped && solarEquipped && treadsEquipped
&& base_boats == 1 && base_solar == 1
&& base_treads == 1 && base_drills == 1
);
} { return false }
solution: |
fred <- build {require "boat"; setname "fred"};
wait 5;
reprogram fred {require "boat"; require "metal drill"; move; move}
robots:
- name: base
loc: [0,0]
dir: [1,0]
devices:
- 3D printer
- logger
- flash memory
- clock
inventory:
- [2, boat]
- [2, solar panel]
- [2, treads]
- [2, metal drill]
- [50, rock]
known: [water]
world:
palette:
'.': [grass]
'~': [dirt, water]
'┌': [stone, upper left corner]
'┐': [stone, upper right corner]
'└': [stone, lower left corner]
'┘': [stone, lower right corner]
'─': [stone, horizontal wall]
'│': [stone, vertical wall]
upperleft: [-1, 1]
map: |
┌───┐
│.~.│
└───┘