packages feed

swarm-0.7.0.0: data/scenarios/Challenges/teleport.yaml

version: 1
name: Portal room
author: Ondřej Šebek
description: An impossible challenge - can you magically jump across the water?
objectives:
  - goal:
      - Get to the other room and grab the `lambda`{=entity}.
      - Oh wait.
      - The tunnel is flooded.
      - Just give up then. It is impossible to get there.
    condition: |
      try {
        as base {has "lambda"}
      } { pure false }
solution: |
  def w2 = turn back; turn back end;
  def w10 = w2; w2; w2; w2; w2 end;
  turn back; move;move;move; w10; move;move;move; grab
robots:
  - name: base
    loc: [3, 0]
    dir: east
    devices:
      - treads
      - logger
      - grabber
      - dictionary
    inventory:
      - [0, lambda]
  - name: portkey1
    system: true
    loc: [0, 0]
    dir: [0, 0]
    program: |
      def forever = \prog. wait 10; prog; forever prog; end;
      destRob <- robotNamed "portkey2";
      destPos <- as destRob {whereami};
      myPos <- whereami;
      forever (
        basePos <- as base {whereami};
        if (myPos == basePos) {teleport base destPos} {};
      );
  - name: portkey2
    system: true
    loc: [16, 0]
    dir: [0, 0]
    program: |
      def forever = \prog. wait 10; prog; forever prog; end;
      wait 5;
      destRob <- robotNamed "portkey1";
      destPos <- as destRob {whereami};
      myPos <- whereami;
      forever (
        basePos <- as base {whereami};
        if (myPos == basePos) {teleport base destPos} {};
      );
entities:
  - name: wall
    display:
      char: '#'
    description:
      - Unmovable barrier
    properties: [known, unwalkable, boundary]
known: [water, wavy water, flower, tree]
world:
  dsl: |
    {ice, water}
  palette:
    ',': [ice, water]
    ' ': [ice, water]
    '~': [ice, wavy water]
    '*': [grass, flower]
    'T': [grass, tree]
    '.': [grass, erase]
    '_': [stone, erase]
    'λ': [grass, lambda]
    'x': [stone, wall]
  upperleft: [-1, 3]
  map: |
    ~~   ~         ~    ~
    ~xxxxxxx~  xxxxxxx~ ,
    xx.....xxxxxT...*xx ~
    x_....._   _..λ.._x ,
    xx.....xxxxx*...Txx ~
    ~xxxxxxx ~~xxxxxxx~ ,
    ~~~   ~        ~    ~