Skip to content

Commit

Permalink
robot wave scenario (#1556)
Browse files Browse the repository at this point in the history
![image](https://github.com/swarm-game/swarm/assets/261693/5952ccb9-02fe-47af-9a22-b45b130316e2)

# Demo

    scripts/play.sh -i data/scenarios/Challenges/wave.yaml --autoplay
  • Loading branch information
kostmo authored Oct 1, 2023
1 parent 24ef7c2 commit c1d0fdd
Show file tree
Hide file tree
Showing 4 changed files with 106 additions and 0 deletions.
1 change: 1 addition & 0 deletions data/scenarios/Challenges/00-ORDER.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ hanoi.yaml
hackman.yaml
lights-out.yaml
bucket-brigade.yaml
wave.yaml
wolf-goat-cabbage.yaml
blender.yaml
friend.yaml
Expand Down
15 changes: 15 additions & 0 deletions data/scenarios/Challenges/_wave/solution.sw
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
def go =
move;
go;
end;

def start =
turn right;
wait 5;
try {
go;
} {};
grab;
end;

start;
89 changes: 89 additions & 0 deletions data/scenarios/Challenges/wave.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
version: 1
name: Wave
author: Karl Ostmo
description: |
Ride the wave
creative: false
objectives:
- goal:
- |
Grab the `bitcoin`{=entity} at the east end of the path.
Don't let the patrolling robots catch you!
prerequisite:
not: got_caught
condition: |
as base {has "bitcoin"};
- id: got_caught
teaser: Got caught
optional: true
hidden: true
goal:
- |
The robots caught you!
condition: |
as base {x <- meet; return $ case x (\_. false) (\_. true)};
robots:
- name: base
dir: [0, 1]
devices:
- branch predictor
- comparator
- dictionary
- grabber
- hourglass
- clock
- lambda
- logger
- net
- scanner
- strange loop
- treads
- name: wavebot
system: true
dir: [0, 1]
display:
invisible: false
attr: 'plant'
program: |
def crossPath =
move; move; move; move; move; move;
turn back;
wait 5;
end;
def go =
crossPath;
go;
end;
def start =
pos <- whereami;
wait $ fst pos;
go;
end;
start;
solution: |
run "scenarios/Challenges/_wave/solution.sw"
entities: []
known: [wavy water, water, bitcoin]
world:
dsl: |
overlay
[ {dirt, water}
, if (x + y / 2) % 5 == 0 then {dirt, wavy water} else {blank}
]
upperleft: [-3, 6]
offset: false
palette:
'B': [grass, erase, base]
'w': [grass, erase, wavebot]
'x': [dirt, water]
'z': [grass, bitcoin]
'.': [grass, erase]
map: |
xxxxxx..................................................................................................................................................................................................................................................xxxxxx
xxx........................................................................................................................................................................................................................................................xxx
x............................................................................................................................................................................................................................................................x
B............................................................................................................................................................................................................................................................z
x............................................................................................................................................................................................................................................................x
xxx........................................................................................................................................................................................................................................................xxx
xxxxxxwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxx
1 change: 1 addition & 0 deletions test/integration/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,7 @@ testScenarioSolutions rs ui =
, testSolution (Sec 3) "Challenges/word-search"
, testSolution (Sec 10) "Challenges/bridge-building"
, testSolution (Sec 5) "Challenges/ice-cream"
, testSolution (Sec 15) "Challenges/wave"
, testSolution (Sec 3) "Challenges/arbitrage"
, testSolution (Sec 10) "Challenges/gopher"
, testSolution (Sec 5) "Challenges/hackman"
Expand Down

0 comments on commit c1d0fdd

Please sign in to comment.