swarm-0.7.0.0: data/scenarios/Testing/201-require/533-reprogram.yaml
version: 1
name: Equip devices + entities while reprogramming
description: |
While executing 'reprogram', we should equip any required devices and
give required entities 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"};
base_rocks <- as base {count "rock"};
fred <- robotNamed "fred";
p <- as fred {whereami};
boatEquipped <- as fred {equipped "boat"};
drillEquipped <- as fred {equipped "metal drill"};
fred_rocks <- as fred {count "rock"};
pure (p == (2,0) && boatEquipped && drillEquipped
&& base_boats == 1 && base_solar == 1
&& base_treads == 1 && base_drills == 1
&& base_rocks == 42 && fred_rocks == 8
);
} { pure false }
solution: |
fred <- build {require "boat"; stock 5 "rock"; setname "fred"};
wait 5;
reprogram fred {require "boat"; require "metal drill"; move; stock 3 "rock"; move; stock 5 "rock"}
robots:
- name: base
loc: [0, 0]
dir: east
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, wall]
upperleft: [-1, 1]
map: |
+++++
+.~.+
+++++