swarm-0.3.0.0: data/scenarios/Testing/394-build-drill.yaml
version: 1
name: Test build with drill
description: |
Inner build does not correctly require Drill.
https://github.com/swarm-game/swarm/issues/394
creative: True
objectives:
- condition: |
try {
as base {l <- has "detonator"; return (not l)}
} { return false }
# When testing, add `s <- build {...}; n <- as s {whoami}; log n`
solution: |
def forever = \c. c ; forever c end;
def unblock = try {drill forward} {} end;
def push = unblock; move end;
log "Hi, I am base";
r <- build {
wait 2;
log "Hi, I am builder";
forever (
build {
log "Hi, I am pusher";
forever push
};
log "- robot built"
)
};
wait 10;
place "detonator";
robots:
- name: base
loc: [0,0]
dir: [1,0]
devices:
- treads
- logger
- 3D printer
- dictionary
- grabber
inventory:
- [1, detonator] # used to mark win
world:
default: [blank]
palette:
'.': [grass]
'M': [stone, mountain]
'┌': [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: |
┌───┐
│..M│
└───┘