swarm-0.4: 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"};
return (p == (2,0) && boatEquipped && drillEquipped
&& base_boats == 1 && base_solar == 1
&& base_treads == 1 && base_drills == 1
&& base_rocks == 42 && fred_rocks == 8
);
} { return false }
solution: |
fred <- build {require "boat"; require 5 "rock"; setname "fred"};
wait 5;
reprogram fred {require "boat"; require "metal drill"; move; require 3 "rock"; move; require 5 "rock"}
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: |
┌───┐
│.~.│
└───┘