pax_global_header00006660000000000000000000000064136567532750014535gustar00rootroot0000000000000052 comment=47f9560eb827790d26900bb553719afb4b0554ea laby-laby-0.7.0/000077500000000000000000000000001365675327500134155ustar00rootroot00000000000000laby-laby-0.7.0/.gitignore000066400000000000000000000000361365675327500154040ustar00rootroot00000000000000_build-* laby* src/config.ml laby-laby-0.7.0/AUTHORS000066400000000000000000000020771365675327500144730ustar00rootroot00000000000000The laby team: (authors and contributors) Stéphane Gimenez Pierre-Malo Dénielou Stéphane Glondu Grégoire Henry Vincent Balat Barry Arthur (mods) Scheme: Jan Nieuwenhuizen (janneke) Vala: Jens Mühlenhoff (antichorus) Javascript: suxiaojack Pascal: Sergey Roganov PHP and Go: Hammed Oyedele (devhammed) (translations) Albanian: Dashamir Hoxha Catalan: "aripm" Czech: Matus Danish: Jacob Bundgaard Dutch: "jorritlin" English: Stéphane Gimenez, Barry Arthur French: Stéphane Gimenez Galician: Miguel Anxo Bouzada German: "Hikaru755" Hungarian: "DarkLight" Italian: Alessio Cecchin, Luca Incarbone Polish: Mateusz Mikos, Karol Sieńkowski, Piotr Szymański Portuguese: Vicente Machado Russian: Dmitry Antonyuk, Sergey Roganov, Alexey Loginov Spanish: Alexandro Colorado, "ultrarregistro", "aripm" Swedish: "diggan", "135" Turkish: Furkan Er Ukrainian: Grygorij Gromko laby-laby-0.7.0/COPYRIGHT000066400000000000000000000013461365675327500147140ustar00rootroot00000000000000 laby : learn programming, playing with ants and spider webs ;-) Copyright (C) 2007-2014 The laby team laby is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. laby is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with laby. If not, see . laby-laby-0.7.0/INSTALL000066400000000000000000000017001365675327500144440ustar00rootroot00000000000000Linux or Unix-like: To compile laby, you need ocaml >= 4.10.0, lablgtk3 >= 3.1.0 and lablgtk3-sourceview3 >= 3.1.0). Execute the following commands in the archive's main directory: make ln -s ${PWD}/data ${HOME}/.config/laby If you want the program to produce some kind of absurd sounds, make sure the alsa "aplay" command is present on your system. Now to run laby type: ./laby Windows: The best advice is to use pre-compiled binaries available on the web: http://cl-informatik.uibk.ac.at/users/sgimenez/data/fdls/windows/ Those binaries are cross-compiled using mingw-ocaml. If you plan to compile them by yourself on windows, you will probably need patience and a lot of good luck and the following software: - ocaml: http://caml.inria.fr/download.en.html - lablgtk: http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/lablgtk.html - gtksourceview: http://projects.gnome.org/gtksourceview/download.html laby-laby-0.7.0/Makefile000066400000000000000000000016441365675327500150620ustar00rootroot00000000000000.PHONY: default all clean include project.conf PROJECT_ARCHIVE=$(PROJECT_NAME)-$(PROJECT_VERSION) DESTDIR ?= PREFIX ?= /usr BINDIR ?= $(PREFIX)/bin DATADIR ?= $(PREFIX)/share default: all all: @./build --all clean: @./build --clean byte native byte-debug native-profile: @./build --$@ install: install -Dp --mode=0755 laby \ "$(DESTDIR)$(BINDIR)/laby" install -d "$(DESTDIR)$(DATADIR)/laby/" cp -pr data/* "$(DESTDIR)$(DATADIR)/laby/" install -Dp --mode=0644 data/tiles/ant-e.svg \ "$(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps/laby.svg" desktop-file-install packaging/laby.desktop \ --dir="$(DESTDIR)$(DATADIR)/applications" install -Dp --mode=0644 packaging/laby.appdata.xml \ "$(DESTDIR)$(DATADIR)/appdata/laby.appdata.xml" dist: @mkdir _dist @git archive --prefix="$(PROJECT_ARCHIVE)/" HEAD \ | gzip >"_dist/$(PROJECT_ARCHIVE).tar.gz" @echo archive stored in "_dist/$(PROJECT_ARCHIVE).tar.gz" laby-laby-0.7.0/TRANSLATION000066400000000000000000000015521365675327500151410ustar00rootroot00000000000000Location: Translation data is stored in the file "data/texts". Its format is human-friendly, it consists of a bunch of entries of this kind: text option requires an argument en_US.UTF-8 option requires an argument fr_FR.UTF-8 l'option nécessite un argument The first line gives the text as written in the program source code. Following lines are translations of this text in various locales. You may use a modified version of this file, laby will look for it at the following locations (in this order): ~/.config/laby/texts /usr/share/laby/texts Levels stored in data/levels also contain translatable strings using the same format. Contributions: If you wish to contribute new translations or improve existing ones, please post them on github: https://github.com/sgimenez/laby/issues laby-laby-0.7.0/build000077500000000000000000000061471365675327500144520ustar00rootroot00000000000000#!/bin/bash cd $(dirname $0) [ -f project.conf ] && source project.conf source build.conf || exit 1 export PREFIX=${PREFIX-/usr} export DATADIR=${DATADIR-${PREFIX}/share} export TMPDIR=${TMPDIR-/tmp} export PROJECT_NAME=${PROJECT_NAME-unknown} export PROJECT_VERSION=${PROJECT_VERSION-unknown} export OCAMLFIND=${OCAMLFIND-ocamlfind} export OCAMLBUILD=${OCAMLBUID-ocamlbuild} export OCAML_VERSION=$($OCAMLFIND ocamlc -version) ocaml_config () { ${OCAMLFIND} ocamlc -config | sed -n 's/^'"$1"': //p' | tr -c -d '[:alnum:]' } export OCAML_SYSTEM=$(ocaml_config system) export OCAML_ARCH=$(ocaml_config architecture) SYSARCH="${OCAML_SYSTEM}-${OCAML_ARCH}" BUILDDIR="_build-${SYSARCH}" [ -n "${OCAML_VERSION}" -a -n "${SYSARCH}" ] || \ { echo "Error: compilation requires OCaml compilers and ocamlfind"; exit 1; } export PKG_VERSION="${OCAMLFIND} query -format %v" [ -n "${THREADS}" ] && OCBF="${OCBF} -tag thread" [ -n "${TAGS}" ] && OCBF="${OCBF} -tags ${TAGS}" [ -n "${TAGLINE}" ] && OCBF="${OCBF} -tag-line ${TAGLINE}" [ -n "${JOBS}" ] && OCBF="${OCBF} -j ${JOBS}" OCBF="${OCBF} -use-ocamlfind -pkgs $PACKAGES -libs $LIBRARIES -Is $SRCDIRS" OCBI="${OCAMLBUILD} -no-sanitize -no-hygiene -build-dir ${BUILDDIR} ${OCBF}" ACT="${1---all}" shift [ $# == 0 ] && set ${BINS} ${LIBS} BINTARGETS="" LIBTARGETS="" for i in "$@"; do for k in ${BINS}; do [ "$k" == "$i" ] && BINTARGETS="${BINTARGETS} $i"; done for k in ${LIBS}; do [ "$k" == "$i" ] && LIBTARGETS="${LIBTARGETS} $i"; done done tclean () { for i in ${AUXTARGETS}; do rm -rf "$i"; done for i in ${BINTARGETS}; do rm -rf "$(basename $i)"; done for i in ${LIBTARGETS}; do for j in cma cmxa d.cma p.cmxa; do rm -rf "$(basename $i).$j"; done done } case ${ACT} in --help|-h) echo "usage: $0 action [targets]" echo "options:" echo " --all (-a)" echo " --byte (-b)" echo " --native (-n)" echo " --byte-debug (-bd)" echo " --native-profile (-np)" echo " --clean (-c)" exit 0;; --clean|-c) ${OCBI} -clean [ -f "${CONF}.sh" ] && rm -rf "${CONF}.ml" tclean exit 0;; --target|-t) ${OCBI} "$@" exit 0;; --all|-a) LNK="native"; BINEXT="native byte"; LIBEXT="cmxa cma";; --byte|-b) LNK="byte"; BINEXT="byte"; LIBEXT="cma";; --byte-debug|-bd) LNK="d.byte"; BINEXT="d.byte"; LIBEXT="d.cma";; --native|-n) LNK="native"; BINEXT="native"; LIBEXT="cmxa";; --native-profile|-np) LNK="p.native"; BINEXT="p.native"; LIBEXT="p.cmxa";; *) echo "unknown action"; exit 1;; esac TARGETS="" for i in ${BINTARGETS}; do for j in ${BINEXT}; do TARGETS="${TARGETS} $i.$j"; done done for i in ${LIBTARGETS}; do for j in ${LIBEXT}; do TARGETS="${TARGETS} $i.$j"; done done echo Building "${PROJECT_NAME}-${PROJECT_VERSION} for ${SYSARCH}" export THREADS [ -f "${CONF}.sh" ] && sh "${CONF}.sh" > "${CONF}.ml" tclean ${OCBI} ${TARGETS} ${AUXTARGETS} || exit 1 # linking [ -n "${LNK}" ] && for i in ${BINTARGETS}; do cp "${BUILDDIR}/${i}.${LNK}" "$(basename $i)"; done for i in ${LIBTARGETS}; do for j in ${LIBEXT}; do cp "${BUILDDIR}/$i.$j" "$(basename $i.$j)"; done done exit 0 laby-laby-0.7.0/build.conf000066400000000000000000000003061365675327500153620ustar00rootroot00000000000000PACKAGES="lablgtk3,lablgtk3-sourceview3" LIBRARIES="str,lablgtk3,lablgtk3_sourceview3" TAGS="debug" OCBF="-cflag -thread -lflag -thread" SRCDIRS="src,src/dtools" CONF="src/config" BINS="src/laby" laby-laby-0.7.0/data/000077500000000000000000000000001365675327500143265ustar00rootroot00000000000000laby-laby-0.7.0/data/conf000066400000000000000000000006011365675327500151730ustar00rootroot00000000000000#int gfx.tile-size :40 #int gfx.window.width :640 #int gfx.window.height :480 #string gfx.source-style :classic #string mod.selected :ocaml #bool mod.exclusive :false #bool mod.translation :true #bool sound.enabled :true #int log.level :0 laby-laby-0.7.0/data/levels/000077500000000000000000000000001365675327500156205ustar00rootroot00000000000000laby-laby-0.7.0/data/levels/0.laby000066400000000000000000000133311365675327500166310ustar00rootroot00000000000000map: o o o o o o o w . . . x o . . . . o o . . . . o o . ↑ . r o o o o o o o title: text Demo ca_ES.UTF-8 Demostració cs_CZ.UTF-8 Demo da_DK.UTF-8 Demo de_DE.UTF-8 Demo en_US.UTF-8 Demo es_MX.UTF-8 Demo fr_FR.UTF-8 Démo gl_ES.UTF-8 Demostración hu_HU.UTF-8 Demó it_IT.UTF-8 Demo nl_NL.UTF-8 Demo pl_PL.UTF-8 Demonstacja pt_BR.UTF-8 Demo ru_RU.UTF-8 Демо sq_AL.UTF-8 Demo sv_SV.UTF-8 Demo tr_TR.UTF-8 Demo comment: text This labyrinth is a demo. The initial program allows the ant robot to get out of this labyrinth. It will tease up a bit with the rock and avoid being caught in the spider web. Click the button to load the program into the robot, and use the arrows to perform individual steps. ca_ES.UTF-8 Aquest laberint és una demostració. El programa inicial permet que la formiga robot surti del laberint. Manipularà la pedra i evitarà ser capturada per la teranyina. Clica el botó per a carregar el programa al robot i utilitza les fletxes per a donar-li les ordres pas a pas. cs_CZ.UTF-8 Toto bludiště je příklad. Připravený program umožní mravency vyjít z bludiště. Trochu si pohraje s kamenem a vyhne se pavučině. Zmáčkni tlačítko, abys nahrál program do robota, a použij šipky k provedení jednotlivých kroků. da_DK.UTF-8 Denne labyrint er en demo. Det nuværende program gør det muligt for myren at slippe ud af labyrinten. Det viser hvordan man tager og slipper en sten, og hvordan man undgår at gå ind i spindelvæv. Klik på knappen for at indlæse programmet i robotten og brug pilene for at tage individuelle trin. de_DE.UTF-8 Dieses Labyrinth ist eine Demonstration. Das vorgegebene Programm sagt dem Ameisenroboter, wie er aus dem Labyrinth kommt. Er wird sich kurz mit dem Stein beschäftigen und vermeiden, im Spinnennetz gefangen zu werden. Klick auf den Button um das Programm auf den Roboter zu übertragen, und benutze die Pfeile, um einzelne Schritte auszuführen. en_US.UTF-8 This labyrinth is a demo. The initial program allows the ant robot to get out of this labyrinth. It will tease up a bit with the rock and avoid being caught in the spider web. Click the button to load the program into the robot, and use the arrows to perform individual steps. es_MX.UTF-8 Este laberito es una demo. El programa inicial permite que la hormiga robot salga del laberito. Manipulará un poco la piedra y evitará ser capturado por la telaraña. Haz clic en el botón para cargar el programa dentro del robot y usa las flechas para dar pasos individuales. fr_FR.UTF-8 Ce labyrinthe sert de démonstration. Le programme initial permet au robot fourmi de sortir de ce labyrinthe. Il va s'amuser un peu avec le caillou et éviter la toile d'araignée. Appuie sur le bouton qui permet de charger le programme dans le robot, et fait défiler le temps avec les flèches. gl_ES.UTF-8 Este labirinto é unha demostración. O programa inicial permite que o robot formiga saia deste labirinto. Entreterase un chisco coas rochas e evitando ser atrapado na arañeira. Prema no botón «Reproducir» para cargar o programa no robot, e empregue as frechas para un control individual dos pasos. hu_HU.UTF-8 Ez egy demó labirintus. Az inícializáló program kivezeti a hangya-robotot a labirintusból. Egy kis nehézség benne a szikla és a pókháló kikerülése. Kattints a gombra a program robotba töltéséhez, és használd a nyilakat a lépésenkénti végrehajtáshoz. it_IT.UTF-8 Questo labirinto serve come prima dimostrazione. Il primo programma programma permette al robot formica di uscire da questo labirinto. Bisogna evitare la ragnatela, e divertirsi con la roccia. Una volta scritto il programma clicka su “esegui” e se non hai fatto errori ciccka su “Avanti” per vedere se il tuo programma funziona. nl_NL.UTF-8 Dit doolhof is een demo. Het huidige programma maakt het mogelijk voor de mier om dit doolhof te verlaten. Het speelt een beetje met de steen en het ontlopen van het spinneweb. Klik op de knop om het programma in de robot te laden, en gebruik de pijlen om afzonderlijke stappen uit te voeren. pl_PL.UTF-8 Ten labirynt ma ci przybliżyć cel gry. Wpisane komendy pozwalają robakowi (mrówce) uciec z labiryntu. Musisz tak kierować robakiem, by unikać zasadzki-pajęczyny. Kliknij przycisk 'Wykonaj', aby załadować program. Następnie użyj strzałek 'Dalej' lub 'Wstecz', by wykonać kolejne komendy. Możesz też odtworzyć cały zaprogramowany ruch robaka klikając 'Odtwarzaj'. pt_BR.UTF-8 Esse labirinto é uma demonstração. O programa inicial permite a formiga robô sair do labirinto. Ficará mais interessante com a pedra e evite ser pego pela teia de aranha. Pressione o botão para carregar o programa no robô e use as setas para executar passo a passo. ru_RU.UTF-8 Этот лабиринт - демонстрация. Исходная программа позволяет роботу-муравью выбраться из этого лабиринта. Он поиграет с камнем и постарается избежать паутины. Нажмите кнопку, чтобы загрузить программу в робота, и используйте кнопки, чтобы выполнить отдельные шаги. sq_AL.UTF-8 Ky labirint është një demo. Programi fillestar i mundëson robotit milingonë që të dalë jashtë nga ky labirint. Ai do të luaj pak me gurin dhe do ti shmanget rrjetës së merimangës. Kliko butonin për ta ngarkuar programin në robot dhe përdor shigjetat për të kryer hapat e veçantë. tr_TR.UTF-8 Bu labirent bir alıştırmadır. Program robot karıncanın labirentten çıkması üzerine kurulu. Kayalardan ve örümcek ağlarına yakalanmaktan sakınmalısınız. Programı robota yüklemek için çalıştır tuşuna basın, ve okları kullanarak adımları yönetin. laby-laby-0.7.0/data/levels/1a.laby000066400000000000000000000060051365675327500167730ustar00rootroot00000000000000map: o o o o o x o o . . . . . o o . . . . . o o . ↑ . . . o o o o o o o o help: basic title: text First challenge ca_ES.UTF-8 Primera prova cs_CZ.UTF-8 První výzva da_DK.UTF-8 Første udfordring de_DE.UTF-8 Erste Herausforderung en_US.UTF-8 First challenge es_MX.UTF-8 Primeros obstaculos fr_FR.UTF-8 Premier défi gl_ES.UTF-8 Primeiro reto hu_HU.UTF-8 Első próba it_IT.UTF-8 Prima sfida nl_NL.UTF-8 Eerste uitdaging pl_PL.UTF-8 Pierwsze wyzwanie pt_BR.UTF-8 Primeiro desafio ru_RU.UTF-8 Первое задание sq_AL.UTF-8 Sfida e parë sv_SV.UTF-8 Första utmaningen tr_TR.UTF-8 İlk mücadele comment: text This is the first challenge. We start smoothly, no obstacles. You shall write a program to drive the robot toward the exit. ca_ES.UTF-8 Aquesta és la primera prova. Començarem suaument, sense obstàcles. Escriuràs un programa que porti el robot cap a la sortida. cs_CZ.UTF-8 Toto je první výzva. Začneme pomalu, bez překážek. Napiš program, který vyvede robota z bludiště. da_DK.UTF-8 Dette er den første udfordring. Vi starter let ud, uden forhindringer. Du skal skrive et program som kan køre robotten mod udgangen. de_DE.UTF-8 Dies ist die erste Herausforderung. Wir starten einfach, keine Hindernisse. Schreibe ein Programm um den Roboter aus dem Labyrinth zu führen. en_US.UTF-8 This is the first challenge. We start smoothly, no obstacles. You shall write a program to drive the robot toward the exit. es_MX.UTF-8 Este es el primer reto. Empezaremos suavemente, sin obstáculos. Escribirás un programa que lleve al robot a la salida. fr_FR.UTF-8 Ceci est le premier défi. On commence doucement, pas d'obstacles. Il faut écrire un programme qui dirige le robot vers la sortie. gl_ES.UTF-8 Este é o primeiro reto. Comeza amodo, non hai obstáculos. Ten que escribir un programa para dirixir o robot cara a saída. hu_HU.UTF-8 Ez az első próbád. Kezdjünk akadályok nélkül. Írj egy programot, ami elvezeti a robotot a kijárathoz. it_IT.UTF-8 Questa è la prima sfida. Cominciamo poco alla volta, senza ostacoli. Bisogna scrivere un programma che porti la formica robot verso l'uscita. nl_NL.UTF-8 Dit is de eerste uitdaging. We beginnen makkelijk, geen hindernissen. Je moet een programma schrijven wat de robot naar de uitgang leidt. pl_PL.UTF-8 To jest pierwsze twoje wyzwanie. Na początek nie ma żadnych przeszkód. Napisz program pozwalający robakowi dojść do drzwi i uciec z labiryntu. pt_BR.UTF-8 Esse é o primeiro desafio. Vamos começar com calma, sem obstáculos. Escreva um programa para guiar o robô até a saída. ru_RU.UTF-8 Это первое задание. Мы начнём спокойно, без препятствий. Напишите программу, подводящую робота к выходу. sq_AL.UTF-8 Kjo është sfida e parë. Po e fillojmë butësisht, pa pengesa. Ju duhet të shkruani një program që ta çoj robotin drejt daljes. tr_TR.UTF-8 Bu ilk mücedeleniz. Basit bir şekilde başlayacağız. Robot karıncayı çıkışa götürecek programı yazmalısınız. laby-laby-0.7.0/data/levels/1b.laby000066400000000000000000000046741365675327500170060ustar00rootroot00000000000000map: o o o o o o o o . . o . . x o . . r . . o o ↑ . o . . o o o o o o o o help: rocks title: text Oh a rock ca_ES.UTF-8 Oh, una pedra cs_CZ.UTF-8 Pozor kámen da_DK.UTF-8 Åh, en sten de_DE.UTF-8 Oha, ein Stein en_US.UTF-8 Oh a rock es_MX.UTF-8 Oh, una piedra fr_FR.UTF-8 Oh le caillou gl_ES.UTF-8 Vaites! unha rocha hu_HU.UTF-8 Óóó, egy szikla it_IT.UTF-8 Oh, una Roccia nl_NL.UTF-8 Hee, een steen pl_PL.UTF-8 Oj, kamyk! pt_BR.UTF-8 Oh, uma pedra ru_RU.UTF-8 О, камень sq_AL.UTF-8 Oh, një gur sv_SV.UTF-8 Å, en sten tr_TR.UTF-8 Eyvah bir kaya comment: text A rock is in the way. Use specific instructions to take and drop rocks. ca_ES.UTF-8 Hi ha una pedra al mig del camí. Utilitza instruccions específiques per a agafar i deixar anar pedres. cs_CZ.UTF-8 V cestě stojí kámen. Použij přikazy abys vzal a položil kámen. da_DK.UTF-8 En sten er i vejen. Brug specifikke instruktioner til at samle sten op og lægge dem igen. de_DE.UTF-8 Ein Stein ist im Weg. Benutze genaue Anleitungen um den Stein aufzuheben und abzulegen. en_US.UTF-8 A rock is in the way. Use specific instructions to take and drop rocks. es_MX.UTF-8 Una piedra en el camino. Usa instrucciones específicas para coger y dejar piedras. fr_FR.UTF-8 Un caillou te barre la route. Il faut utiliser les instructions qui permettent de prendre et de poser les cailloux. gl_ES.UTF-8 Unha rocha no medio do camiño. Ten que empregar as instrucción que permitan coller e soltar as rochas. hu_HU.UTF-8 Egy szikla van az utadban. Használd a különleges utasításokat, hogy felemeld és letedd a sziklát. it_IT.UTF-8 Una roccia ti sbarra la strada. Devi utilizzare le funzioni che ti permettono di prendere et lasciare la roccia. nl_NL.UTF-8 Een steen zit in de weg. Gebruik specifieke instructies om stenen op te tillen en te laten vallen. pl_PL.UTF-8 Na drodze robaka znajduje się kamyk. Użyj specjalnych instrukcji, by go podnieść i upuścić. Gdy przemieścisz kamyk, to robak będzie mógł się wydostać. pt_BR.UTF-8 Tem uma pedra no caminho. Use instruções específicas para pegar e largar pedras. ru_RU.UTF-8 На пути камень. Используйте специальные команды, чтобы поднимать и выбрасывать камни. sq_AL.UTF-8 Një gur është në mes të rrugës. Përdor udhëzimet e veçanta për të marrë dhe për të lënë gurët. tr_TR.UTF-8 Yolumuzun üzerinde bir kaya var. Talimatları kullanarak kayayı yolunuzdan çekin. laby-laby-0.7.0/data/levels/1c.laby000066400000000000000000000036611365675327500170020ustar00rootroot00000000000000map: o o o o o o o o o → . . r . . x o o o o o o o o title: text Still one ca_ES.UTF-8 Encara n'hi ha un cs_CZ.UTF-8 Ještě jeden da_DK.UTF-8 Stadig en de_DE.UTF-8 Noch einer en_US.UTF-8 Still one es_MX.UTF-8 Aún hay uno fr_FR.UTF-8 Encore un gl_ES.UTF-8 Aínda outro hu_HU.UTF-8 Első kihívás it_IT.UTF-8 Ancora uno nl_NL.UTF-8 Nog één pl_PL.UTF-8 Jeszcze raz kamyk pt_BR.UTF-8 Ainda tem um ru_RU.UTF-8 Ещё раз sq_AL.UTF-8 Prapë një tjetër sv_SV.UTF-8 Fortfarande en tr_TR.UTF-8 Hala bir tane var comment: text Again, there is a rock. It's inside a corridor. How do you get through? ca_ES.UTF-8 De nou, hi ha una pedra. És al mig d'un passadís. Com el travessaràs? cs_CZ.UTF-8 Je tu ještě jeden kámen. Je uprostřed chodby. Jak se přes něj dostaneš? da_DK.UTF-8 Der er en sten igen. Den er i en korridor. Hvordan kommer du igennem? de_DE.UTF-8 Da ist noch ein Stein. Er ist in einem Gang. Wie kommst du durch? en_US.UTF-8 Again, there is a rock. It's inside a corridor. How do you get through? es_MX.UTF-8 De nuevo hay una piedra. Esta en un pasillo. ¿Como lo atravesarás? fr_FR.UTF-8 Un caillou au milieu d'un couloir. Comment passer ? gl_ES.UTF-8 De novo, hai unha rocha. Está no interior dun corredor. Como pasar a través del? hu_HU.UTF-8 Megint egy szikla! És pont a folyosó előtt! Na, hogy jutsz keresztül? it_IT.UTF-8 Una pietre in mezzo al corridoio. Come riuscire a passare? nl_NL.UTF-8 Weer een steen. Deze ligt in een gang. Hoe kom je er doorheen? pl_PL.UTF-8 Tym razem kamyk jest w wąskim korytarzu. Jak robak może uciec? pt_BR.UTF-8 Denovo, uma pedra. Dentro de um corredor, como passar por ela? ru_RU.UTF-8 И снова камень! Он внутри коридора. Как же пройти через него? sq_AL.UTF-8 Prapë ka një gur. Në mes të koridorit. Si do tia bëni për ta kaluar? tr_TR.UTF-8 Yolumuzda tekrar taş var. Ama bu sefer bir koridordasınız. Çıkışa nasıl ulaşacaksınız? laby-laby-0.7.0/data/levels/2a.laby000066400000000000000000000075471365675327500170100ustar00rootroot00000000000000map: o o o o o o o o o o o o o o o → . . . . . . . . . . . x o o o o o o o o o o o o o o help: loop title: text So far ca_ES.UTF-8 Fins ara cs_CZ.UTF-8 Tak daleko da_DK.UTF-8 Så langt de_DE.UTF-8 So weit en_US.UTF-8 So far es_MX.UTF-8 Hasta ahora fr_FR.UTF-8 Que c'est loin gl_ES.UTF-8 Ata aquí hu_HU.UTF-8 Messze van még it_IT.UTF-8 Molto lontano nl_NL.UTF-8 Zo ver pl_PL.UTF-8 Daleko… pt_BR.UTF-8 Até agora ru_RU.UTF-8 Далеко… sq_AL.UTF-8 Sa larg sv_SV.UTF-8 Så långt… tr_TR.UTF-8 Çok uzak… comment: text Easy isn't it? The goal here is to write a short program using a “while” loop which tells the robot to go forward as long as the tile in front of it is free. ca_ES.UTF-8 Fàcil, oi? L'objectiu aquí és escriure un petit programa utilitzant un bucle “while” que digui al robot que avanci mentre la casella de davant seu estigui lliure. cs_CZ.UTF-8 Vypadá to jednoduše? Cílem je napsat krátký program s využitím smyčky “while”, která říká robotovi, aby šel vpřed dokud je pole před ním prázdné. da_DK.UTF-8 Det er let, er det ikke? Målet her er et skrive et kort program med et “while”-loop, som fortæller robotten at den skal gå frem, så længe flisen foran den er ledig. de_DE.UTF-8 Einfach, oder? Hier ist das Ziel, ein kurzes Programm zu schreiben, dass eine “while”-Schleife benutzt, welche dem Roboter sagt, dass er so alnge vorwärts gehen soll, solange das Feld vor ihm frei ist. en_US.UTF-8 Easy isn't it? The goal here is to write a short program using a “while” loop which tells the robot to go forward as long as the tile in front of it is free. es_MX.UTF-8 Fácil, ¿verdad? El objetivo aquí es escribir un breve programa empleando un bucle “while” que le diga al robot que avance mientras la casilla delante de él esté vacía. fr_FR.UTF-8 Simple pas vrai ? Le but du jeu ici c'est d'écrire un programme court en utilisant une boucle “while” qui dit au robot d'avancer tant que la case devant lui est vide. gl_ES.UTF-8 Doado non? O obxectivo aquí é escribir un programa curto cun un bucle «while» que dille ao robot que siga adiante, sempre e cando a baldosa ao fronte estea baleira. hu_HU.UTF-8 Egyszerű, mi? A cél, hogy írj egy rövidke programot a “while” ciklus használatával, amely megmondja a robotnak, hogy menjen előre, amíg nincs előtte akadály. it_IT.UTF-8 Facile no? Lo scopo di questo livello è di scrivere un programma molto corto utilizzando il ciclo “while” che dice al robot di avanzare finchè davanti a lui c'è del Vuoto. nl_NL.UTF-8 Makkelijk, nietwaar? Het doel hier is om een kort programma te schrijven wat gebruik maakt van een “while” lus die de robot opdracht geeft om net zo lang vooruit te gaan zolang de plaats ervoor leeg is. pl_PL.UTF-8 Twoim celem jest napisanie krótkiego programu z użyciem pętli “while” (pol. dopóki). Instrukcje, które są w pętli wykonują się w kółko dopóki warunek pętli jest prawdziwy. Pętla będzie posuwać robaka do przodu dotąd, aż dotrze do drzwi. pt_BR.UTF-8 Fácil, não é? O objetivo aqui é escrever um pequeno programa usando o laço de repetição “while” que diz ao robô para ir em frente enquanto o caminho adiante estiver livre. ru_RU.UTF-8 Нетрудно, правда? Теперь наша цель - написать короткую программу используя цикл “while”, которая позволит роботу двигаться вперёд до тех пор, пока ячейка перед ним свободна. sq_AL.UTF-8 E lehtë apo jo? Qëllimi këtu është që të shkruhet një program i shkurtër duke përdorur lakun “while”, i cili i thotë robotit të shkojë përpara, përderisa pllaka që ka përpara është bosh. tr_TR.UTF-8 Kolay, değil mi? “while” bağlacını kullanarak önü boş oldukça karıncaya ilerlemesini söyleyen bir program yazın. laby-laby-0.7.0/data/levels/2b.laby000066400000000000000000000033541365675327500170010ustar00rootroot00000000000000map: o o o o o o o o o o o o o o o → . r r r r r r r r r . x o o o o o o o o o o o o o o title: text Corridor of rocks ca_ES.UTF-8 El passadís de pedres cs_CZ.UTF-8 Chodba plná kamenů da_DK.UTF-8 Stenkorridoren de_DE.UTF-8 Gang voller Steine en_US.UTF-8 Corridor of rocks es_MX.UTF-8 El pasillo con piedras fr_FR.UTF-8 Le couloir des cailloux gl_ES.UTF-8 Corredor de rochas hu_HU.UTF-8 Sziklák folyosója it_IT.UTF-8 Corridoio roccioso nl_NL.UTF-8 Gang met stenen pl_PL.UTF-8 Korytarz kamieni pt_BR.UTF-8 O corredor de pedras ru_RU.UTF-8 Коридор камней sq_AL.UTF-8 Koridor me gurë sv_SV.UTF-8 Stenkorridoren tr_TR.UTF-8 Taşlarla dolu koridor comment: text Once again a “while” loop will be useful! ca_ES.UTF-8 De nou, el bucle “while” et serà útil! cs_CZ.UTF-8 Jeětě jednou se bude hodit smyčka “while”! da_DK.UTF-8 Endnu engang vil et “while”-loop være brugbart! de_DE.UTF-8 Auch hier ist eine “while”-Schleife nützlich! en_US.UTF-8 Once again a “while” loop will be useful! es_MX.UTF-8 ¡Una vez más el bucle “while” será útil! fr_FR.UTF-8 Une fois de plus la boucle “while” va être utile ! gl_ES.UTF-8 Outra vez mais, un bucle «while» será moi útil! hu_HU.UTF-8 Egy “while” ciklus megkönnyíti az életed! it_IT.UTF-8 Ancora una volta il ciclo “while” ti sarà molto utile. nl_NL.UTF-8 Ook hier zal een “while” lus handig blijken! pl_PL.UTF-8 Po raz kolejny przyda ci się instrukcja pętli “while”! pt_BR.UTF-8 Novamente o laço de repetição “while” será útil! ru_RU.UTF-8 И снова нам поможет цикл “while”! sq_AL.UTF-8 Edhe një herë një lak “while” do të jetë i dobishëm! tr_TR.UTF-8 “while” bağlacı bu sefer de işe yarayabilir! laby-laby-0.7.0/data/levels/2c.laby000066400000000000000000000117371365675327500170060ustar00rootroot00000000000000map: o o o o o o o o o o o o o o o . . . . . . . . . . . . x o . o o o o o o o o o o o o o . o . . . . . . . . . . . o . o o o o o o o o o o o o o . . . . . . . . . . . . o o o o o o o o o o o o o . o . . . . . . . . . . . o . o o o o o o o o o o o o o . o o → . . . . . . . . . . . o o o o o o o o o o o o o o o help: function title: text Zig Zag ca_ES.UTF-8 Ziga-zaga cs_CZ.UTF-8 Cikcak da_DK.UTF-8 Siksak de_DE.UTF-8 Zick Zack en_US.UTF-8 Zig Zag es_MX.UTF-8 Zig Zag fr_FR.UTF-8 Zig Zag gl_ES.UTF-8 Zigue Zague hu_HU.UTF-8 Cikk-cakk it_IT.UTF-8 Zig Zag nl_NL.UTF-8 Zig zag pl_PL.UTF-8 Kręty szklak pt_BR.UTF-8 Zig zag ru_RU.UTF-8 Зиг Заг sq_AL.UTF-8 Zik-Zak sv_SV.UTF-8 Sick-sack tr_TR.UTF-8 Zik zak comment: text Five long runs! To avoid writing the same loop five times, we shall use a shortcut! Let's write a procedure which makes the robot race strait forward as far as possible. Then we'll be able to call it several times. ca_ES.UTF-8 Cinc llargs camins! Per a evitar escriure el mateix cinc vegades, utilitzarem una drecera! Escriurem un procediment que faci que el robot avanci tan lluny com sigui possible. Després, el cridarem diverses vegades. cs_CZ.UTF-8 Pět dlouhých chodeb! Vyhneme se psaní stejné smyčky pětkrát a použijeme zkratku. Napiš proceduru, podle které robot poběží tak dlouho rovně jak to bude možné. Potom ji můžeme použít vícekrát. da_DK.UTF-8 Fem lange strækninger! For at slippe for at skrive det samme loop fem gange, bruger vi en genvej. Lad os skrive en procedure som som får robotten til at løbe så langt lige frem som muligt. Så kan vi kalde den flere gange. de_DE.UTF-8 Fünf lange Strecken! Um die gleiche Schleife fünf mal zu schreiben, sollten wir eine Abkürzung benutzen. Lass uns eine Routine schreiben, die den Roboter so weit wie möglich vorwärts gehen lässt. Dann werden wir in der Lage sein diese fünfmal aufzurufen. en_US.UTF-8 Five long runs! To avoid writing the same loop five times, we shall use a shortcut! Let's write a procedure which makes the robot race strait forward as far as possible. Then we'll be able to call it several times. es_MX.UTF-8 ¡Cinco largos caminos! ¡Para evitar escribir lo mismo cinco veces emplearemos un atajo! Vamos a escribir un proceidimiento que haga que el robot avance tan lejos como pueda. Entonces lo podremos llamar varias veces. fr_FR.UTF-8 Cinq longues distances à parcourir ! Pour éviter de recopier cinq fois la même boucle, on peut utiliser un raccourci ! On va écrire une procédure qui fait avancer le robot le plus loin possible en ligne droite. Ensuite on pourra facilement l'appeler plusieurs fois. gl_ES.UTF-8 Cinco longas carreiras! Para evitar escribir o mesmo bucle en cinco ocasións, imos utilizar un atallo! Imos escribir unha función que faga que o robot avance en liña recta tanto como sexa posíbel. Así poderemos chamalo varias veces. hu_HU.UTF-8 Öt hosszú futás. Hogy ne kelljen ugyanazt ötször leírni, használjunk rövidítéseket! Ideje írni egy eljárást, ami addig vezeti előre a robotot, ameddig csak tudja. Ezt az egyszer megírt eljárást bármennyiszer meg tudjuk hívni a nevével. it_IT.UTF-8 Cinque volte un lungo corridoio da percorrere! Per evitare di scrivere cinque volte lo stesso codice, puoi utilizare una scorciatoia! Scrivi un codice che faccia avanzare il robot il più lontano possibile andando dritto. Poi richiamala più volte fino a trovare l'uscita. nl_NL.UTF-8 Vijf lange stukken! Om te voorkomen dat je dezelfde lus vijf keer achter elkaar moet schrijven, schrijven we een procedure die de robot zolang mogelijk recht vooruit laat gaan. Dan kunnen we hem verschillende keren aanroepen. pl_PL.UTF-8 Tym razem robak ma do pokonania 3 długie i 2 krótsze korytarze. Można tu oczywiście zastosować 5 pętli “while”. Ale to dużo pisania. Zdefiniuj funkcję, która będzie przesuwać robaka tak daleko, jak to możliwe. Wtedy będziesz mógł tę funkcję wywołać 5 razy. Spróbuj. To proste! pt_BR.UTF-8 Cinco retas longas! Para evitar escrever o mesmo laço de repetição cinco vezes, devemos usar um atalho. Escreva um procedimento para fazer o robô andar em frente o máximo que puder. Posteriormente, você poderá executar esse procedimento sempre que necessário. ru_RU.UTF-8 Пять длинных проходов! Чтобы не писать один и тот же цикл пять раз мы используем сокращение! Давайте напишем процедуру, которая продвигает робота вперёд пока это возможно. Затем мы сможем вызвать её несколько раз. sq_AL.UTF-8 Pesë rrugë të gjata! Për mos ta shkruar të njëjtin lak pesë herë, do të përdorim një shkurtim! Le të shkruajmë një funksion i cili e bën robotin të ecë përpara sa më shumë të jetë e mundur. Pastaj mund ta thërrasim funksionin disa herë. tr_TR.UTF-8 Beş uzun koridor! Aynı şeyi tekrar tekrar yazmak yerine yeni bir fonksiyon oluşturalım. Ve onu kullanalım. laby-laby-0.7.0/data/levels/3a.laby000066400000000000000000000124231365675327500167760ustar00rootroot00000000000000map: o o x o o o . . . o o W o W o o . ↑ . o o o o o o help: conditional title: text Ahhh webs ca_ES.UTF-8 Ahhh, teranyines! cs_CZ.UTF-8 Pomoc pavučiny! da_DK.UTF-8 Åh, spindelvæv de_DE.UTF-8 Hilfe, Spinnennetze! en_US.UTF-8 Ahhh webs es_MX.UTF-8 ¡¡Ahhh telarañas!! fr_FR.UTF-8 Ahhh des toiles gl_ES.UTF-8 Nooonn, arañeiras hu_HU.UTF-8 Áááá!!! Pókhálók!!! it_IT.UTF-8 Ahhh ragnatele!! nl_NL.UTF-8 Aaahh, spinnewebben! pl_PL.UTF-8 Oj… Pajęczyny! pt_BR.UTF-8 Ahhh! Teias! ru_RU.UTF-8 А-а-а! Паутина! sq_AL.UTF-8 Ahhh rrjetat sv_SV.UTF-8 Spindelnät! tr_TR.UTF-8 Hayır! Ağlar! comment: text Spider webs! The small one won't catch you, but the large one will make you a prisoner. Be warned that the large web is not always on the same side! How can you make sure the robot will reach the exit? Let's use an “if” conditional instruction. ca_ES.UTF-8 Teranyines! Les petites no t'agafaran, però la gran et capturarà. Vigila! Les teranyines grans poden canviar de lloc. Com pots assegurar-te que el robot arribarà a la sortida? Utilitzarem una instrucció condicional “if”. cs_CZ.UTF-8 Pavučiny! Do malé se nechytíš, ale velká tě uvězní. Dávej pozor, protože velká pavučina není vždycky na stejné straně. Jak zajistíš, aby se robot dostal k východu? Zkus použít podmíněnou instrukci “if”. da_DK.UTF-8 Spindelvæv! De små spindelvæv fanger dig ikke, men de store gør. Vær opmærksom på at det store spindelvæv ikke altid er på den samme side. Hvordan kan du sikre dig at robotten kommer frem til udgangen? Lad os bruge en betingende “if”-instruktion. de_DE.UTF-8 Spinnennetze! Das Kleine kann dich nicht fangen, aber das Große wird dich zum Gefangenen machen. Achtung! Das große Netz ist nicht immer auf der gleichen Seite! Wie kannst du sicherstellen, dass der Roboter den Ausgang erreicht? Lass uns eine “if”-Bedingung benutzen. en_US.UTF-8 Spider webs! The small one won't catch you, but the large one will make you a prisoner. Be warned that the large web is not always on the same side! How can you make sure the robot will reach the exit? Let's use an “if” conditional instruction. es_MX.UTF-8 ¡Telarañas! Las pequeñas no te atraparán, pero en las grandes te quedarás atrapado. ¡Ten cuidado porque las telarañas grandes pueden cambiar de lugar! ¿Cómo puedes asegurarte de que el robot llegará a la salida? Vamos a usar una instrucción condicional “if”. fr_FR.UTF-8 Des toiles d'araignées ! La petite ne t'empêchera pas de passer, mais la grande te retiendra prisonnier. Attention la grande toile n'est pas toujours du même côté ! Comment être sûr que le robot arrive toujours à la sortie ? On va utiliser une conditionnelle “if”. gl_ES.UTF-8 Arañeiras! A pequena non te impedirá pasar, máis a grande reterache prisioneiro. Fixate que a arañeira grande non está sempre no mesmo lado! Cómo podemos facer para estar seguros de que o robot chegará á saída? Imos usar unha sentencia cun «si» condicional. hu_HU.UTF-8 Pókhálók! A kicsin át tudsz haladni, de a nagyba belegabalyodsz! Előre szólok, hogy a nagy háló nem mindig ugyanazon az oldalon van! Tudsz olyan programot írni, amelyik mindig elvezeti a robotot a kijárathoz? Használd az “if” feltételes elágazást. it_IT.UTF-8 Ragnatele! La piccola non è un problema, ci puoi passare attraverso, ma la grande ti imprigiona! Attenzione la ragnatela più grande non è sempre dallo stesso lato! Come essere sicuro che la formica arrivi sempre all'uscita? Basta utilizzare la condizione “if” (se). nl_NL.UTF-8 Spinnewebben! De kleine kan je niet vangen, maar de grote neemt je gevangen. Pas op, het grote web zit niet altijd aan dezelfde kant! Hoe kan je er zeker van zijn dat de robot de uitgang bereikt? Laten we een conditionele “if” instructie gebruiken. pl_PL.UTF-8 Pajęcze sieci! W małą robak się nie złapie, ale uważaj! Duża nie zawsze jest po tej samej stronie! Wykorzystaj instrukcję warunkową “if” (pol. jeżeli), by sprawdzić czy robak widzi zasadzkę-pajęczynę. Pozwoli ci to doprowadzić go do wyjścia. pt_BR.UTF-8 Teias de aranha! A teia pequena não irá te pegar, porém a grande lhe deixará prisioneiro. Tenha cuidado, pois a teia grande não estará sempre no mesmo lado! Como ter certeza que o robô sempre chegará à saída? Vamos usar uma instrução condicional “if”. ru_RU.UTF-8 Паутина! Маленькая не сможет нас поймать, но большая захватит нас в плен. Помните, что большая паутина не всегда на той же стороне! Как быть увереным, что робот добрался до выхода? Используйте условную инструкцию “if”. sq_AL.UTF-8 Rrjeta merimangash! Të voglat nuk mund tju kapin, por të mëdhajat ama ju kthejnë në një të burgosur. Ta dini që rrjeta e madhe nuk është gjithmonë në të njëjtën anë! Si mund të siguroheni që roboti do të arrijë daljen? Let të përdorim udhëzimin kushtëzues “if”. tr_TR.UTF-8 Örümcek ağları! Küçük olanlar sana zarar vermez ancak, büyük olan seni mahkum eder. Ayrıca büyük ağın her zaman aynı yerde olmadığını da bil! Robotun çıkışa gittiğinden nası emin olacaksın? Burada “if” komutunu kullanabilirsin! laby-laby-0.7.0/data/levels/3b.laby000066400000000000000000000030161365675327500167750ustar00rootroot00000000000000map: o o x o o o . . . o o R o R o o . o . o o . o . o o W o W o o . ↑ . o o o o o o title: text Webs and rocks ca_ES.UTF-8 Teranyines i pedres cs_CZ.UTF-8 Pavučiny a kameny da_DK.UTF-8 Spindelvæv og sten de_DE.UTF-8 Netze und Steine en_US.UTF-8 Webs and rocks es_MX.UTF-8 Telarañas y piedras fr_FR.UTF-8 Toiles et cailloux gl_ES.UTF-8 Arañeiras e rochas hu_HU.UTF-8 Pókhálók és kövek it_IT.UTF-8 Ragnatele e Roccie nl_NL.UTF-8 Webben en stenen pl_PL.UTF-8 Pajęczyny i kamienie pt_BR.UTF-8 Teias e pedras ru_RU.UTF-8 Паутина и камни sv_SV.UTF-8 Nät och stenar tr_TR.UTF-8 Ağlar ve taşlar comment: text Woh it becomes increasingly complicated! ca_ES.UTF-8 Vaja! Això s'ha complicat en un moment! cs_CZ.UTF-8 A teď se to komplikuje! da_DK.UTF-8 Wow, det bliver mere og mere komplikeret! de_DE.UTF-8 Oha, es wird kompliziert! en_US.UTF-8 Woh it becomes increasingly complicated! es_MX.UTF-8 ¡Buf, esto se ha complicado rápidamente! fr_FR.UTF-8 Oula ça devient de plus en plus compliqué ! gl_ES.UTF-8 Vaites! Isto cada volta complicase máis! hu_HU.UTF-8 Váó! Egy kicsit komplikáltabb a feladatod! it_IT.UTF-8 Whoao diventa sempre più difficile! nl_NL.UTF-8 Woeps, het wordt steeds moeilijker! pl_PL.UTF-8 To jest coraz trudniejsze!!! I pajęczyny i kamyki mogą się zamienić stronami! pt_BR.UTF-8 Oh ow, ficou complicado bem rápido! ru_RU.UTF-8 Ох, становится гораздо сложнее! sq_AL.UTF-8 Uh, kjo po bëhet gjithmonë e më e ngatërruar! tr_TR.UTF-8 Giderek daha da zorlaşıyor! laby-laby-0.7.0/data/levels/4a.laby000066400000000000000000000024571365675327500170050ustar00rootroot00000000000000map: o o o o o o o o o o o o o o o . . . . . . . . . . . . o o . o o o o o o o o o o . o o . o . . . . . . . . o . o o . o . o o o o o o . o . o o . o . o . . . . o . o . o o . o . o . o o . o . o . o o . o . o . x o . o . o . o o . o . o o o o . o . o . o o . o . . . . . . o . o . o o . o o o o o o o o . o . o o . . . . . . . . . . o ↑ o o o o o o o o o o o o o o o title: text Spiral ca_ES.UTF-8 Espiral cs_CZ.UTF-8 Spirála da_DK.UTF-8 Spiral de_DE.UTF-8 Spirale en_US.UTF-8 Spiral es_MX.UTF-8 Espiral fr_FR.UTF-8 Spirale gl_ES.UTF-8 Espiral hu_HU.UTF-8 Spirál it_IT.UTF-8 Spirale nl_NL.UTF-8 Spiraal pl_PL.UTF-8 Spirala pt_BR.UTF-8 Espiral ru_RU.UTF-8 Спираль sq_AL.UTF-8 Spirale sv_SV.UTF-8 Spiral tr_TR.UTF-8 Spiral comment: text The spiral of hell! ca_ES.UTF-8 L'espiral infernal! cs_CZ.UTF-8 Pekelná spirála! da_DK.UTF-8 Helvedesspiralen! de_DE.UTF-8 Die höllische Spirale! en_US.UTF-8 The spiral of hell! es_MX.UTF-8 La espiral infernal! fr_FR.UTF-8 La spirale infernale ! gl_ES.UTF-8 A espiral do inferno! hu_HU.UTF-8 A Pokol Spirálja! it_IT.UTF-8 La spirale infernale!! nl_NL.UTF-8 De helse spiraal! pl_PL.UTF-8 Piekielna spirala! pt_BR.UTF-8 A espiral do inferno! ru_RU.UTF-8 Спираль ада! sq_AL.UTF-8 Spiralja e ferrit! sv_SV.UTF-8 Helvetesspiralen! tr_TR.UTF-8 Cehennemin Spirali!!! laby-laby-0.7.0/data/levels/4b.laby000066400000000000000000000024201365675327500167740ustar00rootroot00000000000000map: . o o o o o o o o o o o o . o . . . . . . . . . . x . o . o . o . o . o . o o . o . o . o . o . o . o . . o W o W o W o W o W o . . o . o . o . o . o . o . o o . o . o . o . o . o . o → . . . . . . . . . o . o o o o o o o o o o o o . title: text Which way? ca_ES.UTF-8 Per quin camí? cs_CZ.UTF-8 Kudy? da_DK.UTF-8 Hvilken vej? de_DE.UTF-8 Welcher Weg? en_US.UTF-8 Which way? es_MX.UTF-8 ¿A dónde? fr_FR.UTF-8 Par où passer ? gl_ES.UTF-8 Que camiño? hu_HU.UTF-8 Melyik út? it_IT.UTF-8 Da dove passare? nl_NL.UTF-8 Welke route? pl_PL.UTF-8 W jaki sposób? pt_BR.UTF-8 Qual caminho? ru_RU.UTF-8 Куда пойти? sq_AL.UTF-8 Nga të kalosh? sv_SV.UTF-8 Vilken väg? tr_TR.UTF-8 Hangi yoldan? comment: text The last challenge! ca_ES.UTF-8 L'última prova! cs_CZ.UTF-8 Poslední výzva! da_DK.UTF-8 Den sidste udfordring! de_US.UTF-8 Die letzte Herausforderung! en_US.UTF-8 The last challenge! fr_FR.UTF-8 Le dernier défi ! gl_ES.UTF-8 O úlltimo reto! hu_HU.UTF-8 Az utolsó kihívás! it_IT.UTF-8 L'ultima sfida! es_MX.UTF-8 ¡El último reto! ru_RU.UTF-8 Последнее задание! sv_SV.UTF-8 Den sista utmaningen! nl_NL.UTF-8 De laatste uitdaging! pl_PL.UTF-8 Ostatnie wyzwanie! pt_BR.UTF-8 O último desafio! sq_AL.UTF-8 Sfida e fundit! tr_TR.UTF-8 Son mücadele! laby-laby-0.7.0/data/levels/counting-the-rocks.laby000066400000000000000000000037501365675327500222210ustar00rootroot00000000000000map: . . . . . . o o o . . . o x o . . . . . . o r o . . . o . o . . . . . . o r o o o o o . o . . . . . . o r . r r r r r o . . . . . . o r o o o o o o o . . . . . . o r o . . . . . . . . . . . . o r o o o . . . . . . . . . . o . . . o . . . . o o o o o o o o o . o o o o . o → . r r r r r r r r r w o . o o o o o o o o o o o o o o . title: text Counting the rocks ca_ES.UTF-8 Comptant les pedres cs_CZ.UTF-8 Počítání kamenů da_DK.UTF-8 Tæl stenene en_US.UTF-8 Counting the rocks es_MX.UTF-8 Contando las piedras fr_FR.UTF-8 Compter les cailloux it_IT.UTF-8 Contare le roccie nl_NL.UTF-8 Stenen tellen pl_PL.UTF-8 Policz kamyki ru_RU.UTF-8 Подсчёт камней tr_TR.UTF-8 Taşları saymak comment: text This level is easily solved when you can count… The “for” loop is there for you! ca_ES.UTF-8 Aquest nivell és fàcil de resoldre si saps comptar… el bucle “for” està aquí per a tu! cs_CZ.UTF-8 Tahle úroveň je lehká, když umíš počíta. Smyčka “for” je tu pro tebe. da_DK.UTF-8 Denne bane er let at klare når du kan tælle… “for”-loop'et er der for dig! en_US.UTF-8 This level is easily solved when you can count… The “for” loop is there for you! es_MX.UTF-8 Este nivel es fácil de resolver si sabes contar… ¡El bucle “for” está ahí para tí! fr_FR.UTF-8 Ce niveau se résout facilement quand on peut compter… La boucle “for” est là pour vous ! it_IT.UTF-8 Questo livello è facile da passare contando… Il ciflo “for” è un buon strumento. nl_NL.UTF-8 Dit niveau is makkelijk op te lossen, als je kan tellen… Hier heb je de “for” lus! pl_PL.UTF-8 Poziom ten możesz łatwo rozwiązać, gdy użyjesz pętli “for”, która pozwala powtórzyć instrukcje kilka razy. ru_RU.UTF-8 Вы легко пройдёте этот уровень, если умеете считать… Для этого и нужен цикл “for”! tr_TR.UTF-8 Sayabilirsen bu seviyeyi kolaylıkla geçersin… “for” döngüsü senin için burada! laby-laby-0.7.0/data/levels/this-is-crazy.laby000066400000000000000000000025561365675327500212070ustar00rootroot00000000000000map: o o o o o o o o o o o o o o o x . . . w . r . w . w . W . o o o o o o o o o o o o o o . o . . o . r . W . r . W . w . o . . o . o o o o o o o o o o o . . o . r . W . w . r . W . o . . o o o o o o o o o o o r o . . o R o R o R o R o R o . o o o o . o . o . o . o . o . o o → . . . . . . . . . . w . o o o o o o o o o o o o o o o o title: text This is crazy! ca_ES.UTF-8 Això és una bogeria! cs_CZ.UTF-8 To je šílený! da_DK.UTF-8 Det er vanvittigt! en_US.UTF-8 This is crazy! es_ES.UTF-8 Esto es una locura! fr_FR.UTF-8 C'est fou ! it_IT.UTF-8 Pazzesco! nl_NL.UTF-8 Dit is waanzin! pl_PL.UTF-8 To jest szalooone! ru_RU.UTF-8 Это безумие! tr_TR.UTF-8 Bu çılgınlık! comment: text Multiple difficulties for yet another challenge! ca_ES.UTF-8 Els obstàcles es multipliquen! cs_CZ.UTF-8 Spousta překážek jako poslední výzva! da_DK.UTF-8 Mange problemer i den sidste udfordring. en_US.UTF-8 Multiple difficulties for yet another challenge! es_ES.UTF-8 Los obstáculos se multiplican! fr_FR.UTF-8 Les obstacles se multiplient pour un défi de plus ! it_IT.UTF-8 Sempre più ostacoli. Una sfida senza limiti! nl_NL.UTF-8 Meerdere problemen voor wederom een nieuwe uitdaging! pl_PL.UTF-8 Wiele problemów w kolejnym wyzwaniu! ru_RU.UTF-8 Многочисленные препятствия в ещё одной задаче! tr_TR.UTF-8 Yine birden fazla zorluk! laby-laby-0.7.0/data/mods/000077500000000000000000000000001365675327500152705ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/c/000077500000000000000000000000001365675327500155125ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/c/help000066400000000000000000000004511365675327500163650ustar00rootroot00000000000000basic: laby_name_forward(); laby_name_left(); laby_name_right(); laby_name_escape(); rocks: laby_name_take(); laby_name_drop(); loop: while (laby_name_look() == laby_name_Void) { ... } function: void f() { ... } conditional: if (laby_name_look() == laby_name_Web) { ... } else { ... } laby-laby-0.7.0/data/mods/c/lib/000077500000000000000000000000001365675327500162605ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/c/lib/robot.c000066400000000000000000000025651365675327500175610ustar00rootroot00000000000000#define _GNU_SOURCE #include #include #include enum tile { laby_name_Void, laby_name_Wall, laby_name_Rock, laby_name_Web, laby_name_Exit, laby_name_Unknown }; void output(char *s) { printf("%s\n", s); fflush(stdout); } char *input() { char *line = NULL; size_t len = 0; getline(&line, &len, stdin); if (strcmp(line, "quit\n") == 0) exit(0); return line; } void laby_name_left() { output("left"); free(input()); } void laby_name_right() { output("right"); free(input()); } void laby_name_forward() { output("forward"); free(input()); } void laby_name_take() { output("take"); free(input()); } void laby_name_drop() { output("drop"); free(input()); } void laby_name_escape() { output("escape"); free(input()); } enum tile laby_name_look() { output("look"); char *s = input(); enum tile answer = laby_name_Unknown; if (strcmp(s, "void\n") == 0) answer = laby_name_Void; if (strcmp(s, "wall\n") == 0) answer = laby_name_Wall; if (strcmp(s, "rock\n") == 0) answer = laby_name_Rock; if (strcmp(s, "web\n") == 0) answer = laby_name_Web; if (strcmp(s, "exit\n") == 0) answer = laby_name_Exit; free(s); return answer; } void laby_name_say(char *s) { printf("say %s\n", s); fflush(stdout); free(input()); } void laby_name_ant(); int main() { output("start"); free(input()); laby_name_ant(); return 0; } laby-laby-0.7.0/data/mods/c/lib/robot.h000066400000000000000000000005761365675327500175660ustar00rootroot00000000000000enum tile { laby_name_Void, laby_name_Wall, laby_name_Rock, laby_name_Web, laby_name_Exit, laby_name_Unknown }; extern void laby_name_left(); extern void laby_name_right(); extern void laby_name_forward(); extern void laby_name_escape(); extern void laby_name_take(); extern void laby_name_drop(); extern enum tile laby_name_look(); extern void laby_name_say(char *s); laby-laby-0.7.0/data/mods/c/rules000066400000000000000000000001731365675327500165700ustar00rootroot00000000000000info: need gcc run: fetch robot.c fetch robot.h dump program.c exec gcc -Wall robot.c program.c -o program spawnl program laby-laby-0.7.0/data/mods/c/skel000066400000000000000000000005041365675327500163720ustar00rootroot00000000000000#include "robot.h" void laby_name_ant() { laby_name_right(); laby_name_forward(); laby_name_take(); laby_name_left(); laby_name_forward(); laby_name_drop(); laby_name_right(); laby_name_forward(); laby_name_left(); laby_name_forward(); laby_name_forward(); laby_name_right(); laby_name_escape(); }laby-laby-0.7.0/data/mods/cpp/000077500000000000000000000000001365675327500160525ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/cpp/help000066400000000000000000000004511365675327500167250ustar00rootroot00000000000000basic: laby_name_forward(); laby_name_left(); laby_name_right(); laby_name_escape(); rocks: laby_name_take(); laby_name_drop(); loop: while (laby_name_look() == laby_name_Void) { ... } function: void f() { ... } conditional: if (laby_name_look() == laby_name_Web) { ... } else { ... } laby-laby-0.7.0/data/mods/cpp/lib/000077500000000000000000000000001365675327500166205ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/cpp/lib/robot.cpp000066400000000000000000000027301365675327500204530ustar00rootroot00000000000000 #include #include #include enum tile { laby_name_Void, laby_name_Wall, laby_name_Rock, laby_name_Web, laby_name_Exit, laby_name_Unknown }; void output(char *s) { printf("%s\n", s); fflush(stdout); } char *input() { char *line = NULL; size_t len = 0; getline(&line, &len, stdin); if (strcmp(line, "quit\n") == 0) exit(0); return line; } void laby_name_left() { char m[]="left"; output(m); free(input()); } void laby_name_right() { char m[]="right"; output(m); free(input()); } void laby_name_forward() { char m[]="forward"; output(m); free(input()); } void laby_name_take() { char m[]="take"; output(m); free(input()); } void laby_name_drop() { char m[]="drop"; output(m); free(input()); } void laby_name_escape() { char m[]="escape"; output(m); free(input()); } enum tile laby_name_look() { char m[]="look"; output(m); char *s = input(); enum tile answer = laby_name_Unknown; if (strcmp(s, "void\n") == 0) answer = laby_name_Void; if (strcmp(s, "wall\n") == 0) answer = laby_name_Wall; if (strcmp(s, "rock\n") == 0) answer = laby_name_Rock; if (strcmp(s, "web\n") == 0) answer = laby_name_Web; if (strcmp(s, "exit\n") == 0) answer = laby_name_Exit; free(s); return answer; } void laby_name_say(char *s) { printf("say %s\n", s); fflush(stdout); free(input()); } void laby_name_ant(); int main() { char m[]="start"; output(m); free(input()); laby_name_ant(); return 0; } laby-laby-0.7.0/data/mods/cpp/lib/robot.h000066400000000000000000000005761365675327500201260ustar00rootroot00000000000000enum tile { laby_name_Void, laby_name_Wall, laby_name_Rock, laby_name_Web, laby_name_Exit, laby_name_Unknown }; extern void laby_name_left(); extern void laby_name_right(); extern void laby_name_forward(); extern void laby_name_escape(); extern void laby_name_take(); extern void laby_name_drop(); extern enum tile laby_name_look(); extern void laby_name_say(char *s); laby-laby-0.7.0/data/mods/cpp/rules000066400000000000000000000002031365675327500171220ustar00rootroot00000000000000info: need g++ run: fetch robot.cpp fetch robot.h dump program.cpp exec g++ -Wall robot.cpp program.cpp -o program spawnl program laby-laby-0.7.0/data/mods/cpp/skel000066400000000000000000000005041365675327500167320ustar00rootroot00000000000000#include "robot.h" void laby_name_ant() { laby_name_right(); laby_name_forward(); laby_name_take(); laby_name_left(); laby_name_forward(); laby_name_drop(); laby_name_right(); laby_name_forward(); laby_name_left(); laby_name_forward(); laby_name_forward(); laby_name_right(); laby_name_escape(); }laby-laby-0.7.0/data/mods/go/000077500000000000000000000000001365675327500156755ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/go/help000066400000000000000000000004431365675327500165510ustar00rootroot00000000000000basic: laby_name_forward() laby_name_left() laby_name_right() laby_name_escape() rocks: laby_name_take() laby_name_drop() loop: for laby_name_look() == laby_name_Void { ... } function: func fn_name() { ... } conditional: if laby_name_look() == laby_name_Web { ... } else { ... } laby-laby-0.7.0/data/mods/go/lib/000077500000000000000000000000001365675327500164435ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/go/lib/dummy.go000066400000000000000000000001721365675327500201250ustar00rootroot00000000000000package main // this is needed to remove 'main function not declared in package main' error in `robot.go` func main() {} laby-laby-0.7.0/data/mods/go/lib/robot.go000066400000000000000000000022721365675327500201220ustar00rootroot00000000000000package main import ( "bufio" "fmt" "os" "strings" ) const ( laby_name_Void = "Void" laby_name_Wall = "Wall" laby_name_Rock = "Rock" laby_name_Web = "Web" laby_name_Exit = "Exit" laby_name_Unknown = "Unknown" ) func input() string { reader := bufio.NewReader(os.Stdin) text, _ := reader.ReadString('\n') input := strings.TrimSpace(text) if input == "quit" { os.Exit(0) } return input } func laby_name_left() { fmt.Println("left") input() } func laby_name_right() { fmt.Println("right") input() } func laby_name_forward() { fmt.Println("forward") input() } func laby_name_take() { fmt.Println("take") input() } func laby_name_drop() { fmt.Println("drop") input() } func laby_name_escape() { fmt.Println("escape") input() } func laby_name_say(s string) { fmt.Println("say " + s) input() } func laby_name_look() string { fmt.Println("look") ans := input() switch ans { case "void": return laby_name_Void case "wall": return laby_name_Wall case "rock": return laby_name_Rock case "web": return laby_name_Web case "exit": return laby_name_Exit default: return laby_name_Unknown } } func init() { fmt.Println("start") input() } laby-laby-0.7.0/data/mods/go/rules000066400000000000000000000001241365675327500167470ustar00rootroot00000000000000info: need go run: fetch robot.go dump program.go spawn go run program.go robot.go laby-laby-0.7.0/data/mods/go/skel000066400000000000000000000004511365675327500165560ustar00rootroot00000000000000package main func main() { laby_name_right() laby_name_forward() laby_name_take() laby_name_left() laby_name_forward() laby_name_drop() laby_name_right() laby_name_forward() laby_name_left() laby_name_forward() laby_name_forward() laby_name_right() laby_name_escape() } laby-laby-0.7.0/data/mods/java/000077500000000000000000000000001365675327500162115ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/java/help000066400000000000000000000004521365675327500170650ustar00rootroot00000000000000basic: laby_name_forward(); laby_name_left(); laby_name_right(); laby_name_escape(); rocks: laby_name_take(); laby_name_drop(); loop: while (laby_name_look() == laby_name_Void) { ... } function: void f() { ... } conditional: if (laby_name_look() == laby_name_Web) { ... } else { ... } laby-laby-0.7.0/data/mods/java/lib/000077500000000000000000000000001365675327500167575ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/java/lib/Main.java000066400000000000000000000002141365675327500205030ustar00rootroot00000000000000public class Main { public static void main(String[] args) { laby_name_Ant f = new laby_name_Ant(); f.laby_name_ant(); } }laby-laby-0.7.0/data/mods/java/lib/Robot.java000066400000000000000000000035211365675327500207100ustar00rootroot00000000000000import java.io.InputStreamReader; import java.io.BufferedReader; public class Robot { BufferedReader r; public enum Tile { laby_name_Void, laby_name_Wall, laby_name_Rock, laby_name_Web, laby_name_Exit, laby_name_Unknown } public Tile laby_name_Void = Tile.laby_name_Void; public Tile laby_name_Wall = Tile.laby_name_Wall; public Tile laby_name_Rock = Tile.laby_name_Rock; public Tile laby_name_Web = Tile.laby_name_Web; public Tile laby_name_Exit = Tile.laby_name_Exit; public Tile laby_name_Unknown = Tile.laby_name_Unknown; Robot() { r = new BufferedReader(new InputStreamReader(System.in)); output("start"); input(); } public void output(String s) { System.out.format("%s%n", s); } String input() { try { String s = r.readLine(); if (s.equals("quit")) System.exit(0); return s; } catch (java.io.IOException e) { System.exit(1); return null; } } public void laby_name_left() { output("left"); input(); } public void laby_name_right() { output("right"); input(); } public void laby_name_forward() { output("forward"); input(); } public void laby_name_take() { output("take"); input(); } public void laby_name_drop() { output("drop"); input(); } public void laby_name_escape() { output("escape"); input(); } public Tile laby_name_look() { output("look"); String ans = input (); if (ans.equals("void")) return Tile.laby_name_Void; if (ans.equals("wall")) return Tile.laby_name_Wall; if (ans.equals("rock")) return Tile.laby_name_Rock; if (ans.equals("web")) return Tile.laby_name_Web; if (ans.equals("exit")) return Tile.laby_name_Exit; return Tile.laby_name_Unknown; } public void laby_name_say(String s) { System.out.format("say %s%n", s); input(); } } laby-laby-0.7.0/data/mods/java/rules000066400000000000000000000001771365675327500172730ustar00rootroot00000000000000info: need javac need java run: fetch Robot.java fetch Main.java dump laby_name_Ant.java exec javac Main.java spawn java Main laby-laby-0.7.0/data/mods/java/skel000066400000000000000000000006071365675327500170750ustar00rootroot00000000000000public class laby_name_Ant extends Robot { public void laby_name_ant() { laby_name_right(); laby_name_forward(); laby_name_take(); laby_name_left(); laby_name_forward(); laby_name_drop(); laby_name_right(); laby_name_forward(); laby_name_left(); laby_name_forward(); laby_name_forward(); laby_name_right(); laby_name_escape(); } } laby-laby-0.7.0/data/mods/js/000077500000000000000000000000001365675327500157045ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/js/help000066400000000000000000000004571365675327500165650ustar00rootroot00000000000000basic: laby_name_forward (); laby_name_left (); laby_name_right (); laby_name_escape (); rocks: laby_name_take (); laby_name_drop (); loop: while (laby_name_look () = laby_name_Void) { ... } function: function f () = ... conditional: if (laby_name_look () = laby_name_Web) { ... } else { ... } laby-laby-0.7.0/data/mods/js/lib/000077500000000000000000000000001365675327500164525ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/js/lib/robot.js000066400000000000000000000023421365675327500201360ustar00rootroot00000000000000importPackage(java.io); importPackage(java.lang); const stdin = new BufferedReader( new InputStreamReader(System['in']) ) function output(s) { print(s); } function input() { var s = stdin.readLine(); return s; } function laby_name_left() { output("left"); var s = input(); } function laby_name_right() { output("right"); var s = input(); } function laby_name_forward() { output("forward"); var s = input(); } function laby_name_take() { output("take"); var s = input(); } function laby_name_drop() { output("drop"); var s = input(); } function laby_name_escape() { output("escape"); var s = input(); } function laby_name_say(s) { output("say "+s); var s = input(); } const laby_name_Void = 0; const laby_name_Wall = 1; const laby_name_Rock = 2; const laby_name_Web = 3; const laby_name_Exit = 4; const laby_name_Unknown = 5; function laby_name_look() { output("look"); var ans = input(); if (ans.match("void")) { return laby_name_Void;} if (ans.match("wall")) { return laby_name_Wall;} if (ans.match("rock")) { return laby_name_Rock;} if (ans.match("web")) { return laby_name_Web;} if (ans.match("exit")) { return laby_name_Exit;} return laby_name_Unknown; } output("start"); var s = input(); laby-laby-0.7.0/data/mods/js/rules000066400000000000000000000001171365675327500167600ustar00rootroot00000000000000info: need rhino run: fetch robot.js dump program.js spawn rhino program.js laby-laby-0.7.0/data/mods/js/skel000066400000000000000000000005471365675327500165730ustar00rootroot00000000000000load("robot.js"); function laby_name_ant() { laby_name_right (); laby_name_forward (); laby_name_take (); laby_name_left (); laby_name_forward (); laby_name_drop (); laby_name_right (); laby_name_forward (); laby_name_left (); laby_name_forward (); laby_name_forward (); laby_name_right (); laby_name_escape (); } laby_name_ant(); laby-laby-0.7.0/data/mods/lua/000077500000000000000000000000001365675327500160515ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/lua/help000066400000000000000000000004551365675327500167300ustar00rootroot00000000000000basic: laby_name_forward(); laby_name_left(); laby_name_right(); laby_name_escape(); rocks: laby_name_take(); laby_name_drop(); loop: while laby_name_look() == laby_name_Void do ... end function: function f() ... end conditional: if laby_name_look() == laby_name_Web then ... else ... end laby-laby-0.7.0/data/mods/lua/lib/000077500000000000000000000000001365675327500166175ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/lua/lib/robot.lua000066400000000000000000000020771365675327500204550ustar00rootroot00000000000000function output(s) io.write(s, "\n"); io.flush(); end function input() r = io.read(); if (r == "quit") then exit(0) end; return r; end function laby_name_left() output("left"); input(); end function laby_name_right() output("right"); input(); end function laby_name_forward() output("forward"); input(); end function laby_name_take() output("take"); input(); end function laby_name_drop() output("drop"); input(); end function laby_name_escape() output("escape"); input(); end function laby_name_say(s) output("say " .. s); input(); end laby_name_Void = 0; laby_name_Wall = 1; laby_name_Rock = 2; laby_name_Web = 3; laby_name_Exit = 4; laby_name_Unknown = 5; function laby_name_look() output("look"); local ans = input(); if (ans == "void") then return laby_name_Void end; if (ans == "wall") then return laby_name_Wall end; if (ans == "rock") then return laby_name_Rock end; if (ans == "web") then return laby_name_Web end; if (ans == "exit") then return laby_name_Exit end; return laby_name_Unknown; end output("start"); input() laby-laby-0.7.0/data/mods/lua/rules000066400000000000000000000001141365675327500171220ustar00rootroot00000000000000info: need lua run: fetch robot.lua dump program.lua spawn lua program.lua laby-laby-0.7.0/data/mods/lua/skel000066400000000000000000000004021365675327500167260ustar00rootroot00000000000000require 'robot' laby_name_right() laby_name_forward() laby_name_take() laby_name_left() laby_name_forward() laby_name_drop() laby_name_right() laby_name_forward() laby_name_left() laby_name_forward() laby_name_forward() laby_name_right() laby_name_escape() laby-laby-0.7.0/data/mods/ocaml/000077500000000000000000000000001365675327500163635ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/ocaml/help000066400000000000000000000004601365675327500172360ustar00rootroot00000000000000basic: laby_name_forward (); laby_name_left (); laby_name_right (); laby_name_escape (); rocks: laby_name_take (); laby_name_drop (); loop: while laby_name_look () = laby_name_Void do ... done; function: let f () = ... conditional: if laby_name_look () = laby_name_Web then ( ... ) else ( ... ); laby-laby-0.7.0/data/mods/ocaml/lib/000077500000000000000000000000001365675327500171315ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/ocaml/lib/robot.ml000066400000000000000000000016221365675327500206110ustar00rootroot00000000000000type tile = | laby_name_Void | laby_name_Wall | laby_name_Rock | laby_name_Web | laby_name_Exit | laby_name_Unknown let act s f = Printf.fprintf stdout "%s\n%!" s; begin try begin match input_line stdin with | "quit" -> exit 0 | x -> f x end with | End_of_file -> exit 1 end let laby_name_left () = act "left" ignore let laby_name_right () = act "right" ignore let laby_name_forward () = act "forward" ignore let laby_name_take () = act "take" ignore let laby_name_drop () = act "drop" ignore let laby_name_escape () = act "escape" ignore let laby_name_look () = act "look" begin function | "void" -> laby_name_Void | "wall" -> laby_name_Wall | "rock" -> laby_name_Rock | "web" -> laby_name_Web | "exit" -> laby_name_Exit | _ -> laby_name_Unknown end let laby_name_say s = act ("say " ^ s) ignore let _ = act "start" ignore laby-laby-0.7.0/data/mods/ocaml/rules000066400000000000000000000001611365675327500174360ustar00rootroot00000000000000info: need ocamlc run: fetch robot.ml dump program.ml exec ocamlc robot.ml program.ml -o program spawnl program laby-laby-0.7.0/data/mods/ocaml/skel000066400000000000000000000005041365675327500172430ustar00rootroot00000000000000open Robot let laby_name_ant = laby_name_right (); laby_name_forward (); laby_name_take (); laby_name_left (); laby_name_forward (); laby_name_drop (); laby_name_right (); laby_name_forward (); laby_name_left (); laby_name_forward (); laby_name_forward (); laby_name_right (); laby_name_escape () laby-laby-0.7.0/data/mods/pascal/000077500000000000000000000000001365675327500165335ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/pascal/help000066400000000000000000000005201365675327500174030ustar00rootroot00000000000000basic: laby_name_forward(); laby_name_left(); laby_name_right(); laby_name_escape(); rocks: laby_name_take(); laby_name_drop(); loop: while (laby_name_look() = laby_name_Void) do begin ... end; function: procedure f(); begin ... end; conditional: if (laby_name_look() = laby_name_Web) then begin ... end else begin ... end; laby-laby-0.7.0/data/mods/pascal/lib/000077500000000000000000000000001365675327500173015ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/pascal/lib/robot.pas000066400000000000000000000032101365675327500211270ustar00rootroot00000000000000unit robot; interface type tile = ( laby_name_Void, laby_name_Wall, laby_name_Rock, laby_name_Web, laby_name_Exit, laby_name_Unknown ); procedure laby_name_left(); procedure laby_name_right(); procedure laby_name_forward(); procedure laby_name_escape(); procedure laby_name_take(); procedure laby_name_drop(); function laby_name_look(): tile; procedure laby_name_say(s: string); implementation procedure output_s(s: string); begin writeln(s); flush(Output); end; function input_s(): string; var line: string; begin readln(Input, line); if(line = 'quit') then halt(0); input_s := line; end; procedure laby_name_left(); begin output_s('left'); input_s; end; procedure laby_name_right(); begin output_s('right'); input_s; end; procedure laby_name_forward(); begin output_s('forward'); input_s; end; procedure laby_name_take(); begin output_s('take'); input_s; end; procedure laby_name_drop(); begin output_s('drop'); input_s; end; procedure laby_name_escape(); begin output_s('escape'); input_s; end; function laby_name_look(): tile; var s: string; answer: tile; begin output_s('look'); s := input_s(); answer := laby_name_Unknown; if (s = 'void') then answer := laby_name_Void; if (s = 'wall') then answer := laby_name_Wall; if (s = 'rock') then answer := laby_name_Rock; if (s = 'web') then answer := laby_name_Web; if (s = 'exit') then answer := laby_name_Exit; laby_name_look := answer; end; procedure laby_name_say(s: string); begin writeln('say ', s); flush(Output); input_s; end; procedure laby_name_ant(); begin end; begin output_s('start'); input_s; laby_name_ant(); end.laby-laby-0.7.0/data/mods/pascal/rules000066400000000000000000000001321365675327500176040ustar00rootroot00000000000000info: need fpc run: fetch robot.pas dump program.pas exec fpc program.pas spawnl program laby-laby-0.7.0/data/mods/pascal/skel000066400000000000000000000004741365675327500174210ustar00rootroot00000000000000program ant; uses robot; begin laby_name_right(); laby_name_forward(); laby_name_take(); laby_name_left(); laby_name_forward(); laby_name_drop(); laby_name_right(); laby_name_forward(); laby_name_left(); laby_name_forward(); laby_name_forward(); laby_name_right(); laby_name_escape(); end.laby-laby-0.7.0/data/mods/perl/000077500000000000000000000000001365675327500162325ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/perl/help000066400000000000000000000004461365675327500171110ustar00rootroot00000000000000basic: laby_name_forward(); laby_name_left(); laby_name_right(); laby_name_escape(); rocks: laby_name_take(); laby_name_drop(); loop: while (laby_name_look() == laby_name_Void) { ... } function: sub f { ... } conditional: if (laby_name_look() == laby_name_Web) { ... } else { ... } laby-laby-0.7.0/data/mods/perl/lib/000077500000000000000000000000001365675327500170005ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/perl/lib/robot.pl000066400000000000000000000021631365675327500204640ustar00rootroot00000000000000use strict; use warnings; sub output { print "$_[0]\n"; $|++; } sub input { my $line = ; if ($line eq "quit\n") { exit(0);} return $line; } sub laby_name_left { output("left"); input(); } sub laby_name_right { output("right"); input(); } sub laby_name_forward { output("forward"); input(); } sub laby_name_take { output("take"); input(); } sub laby_name_drop { output("drop"); input(); } sub laby_name_escape { output("escape"); input(); } sub laby_name_say { output("say $_[0]"); input(); } use constant laby_name_Void => 0; use constant laby_name_Wall => 1; use constant laby_name_Rock => 2; use constant laby_name_Web => 3; use constant laby_name_Exit => 4; use constant laby_name_Unknown => 5; sub laby_name_look { output("look"); my $ans = input(); if ($ans eq "void\n"){ return laby_name_Void;} if ($ans eq "wall\n"){ return laby_name_Wall;} if ($ans eq "rock\n"){ return laby_name_Rock;} if ($ans eq "web\n"){ return laby_name_Web;} if ($ans eq "exit\n"){ return laby_name_Exit;} return laby_name_Unknown; } output("start"); input(); laby-laby-0.7.0/data/mods/perl/rules000066400000000000000000000001131365675327500173020ustar00rootroot00000000000000info: need perl run: fetch robot.pl dump program.pl spawn perl program.pl laby-laby-0.7.0/data/mods/perl/skel000066400000000000000000000004231365675327500171120ustar00rootroot00000000000000require "robot.pl"; laby_name_right(); laby_name_forward(); laby_name_take(); laby_name_left(); laby_name_forward(); laby_name_drop(); laby_name_right(); laby_name_forward(); laby_name_left(); laby_name_forward(); laby_name_forward(); laby_name_right(); laby_name_escape(); laby-laby-0.7.0/data/mods/php/000077500000000000000000000000001365675327500160575ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/php/help000066400000000000000000000004701365675327500167330ustar00rootroot00000000000000basic: laby_name_forward(); laby_name_left(); laby_name_right(); laby_name_escape(); rocks: laby_name_take(); laby_name_drop(); loop: while ( laby_name_look() == laby_name_Void ) { ... } function: function fn_name() { ... } conditional: if ( laby_name_look() == laby_name_Web ) { ... } else { ... } laby-laby-0.7.0/data/mods/php/lib/000077500000000000000000000000001365675327500166255ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/php/lib/robot.php000066400000000000000000000026531365675327500204710ustar00rootroot00000000000000 (...), go; true. function: f(X) :- (...). conditional: look(rock) -> (...); (...). laby-laby-0.7.0/data/mods/prolog/lib/000077500000000000000000000000001365675327500173405ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/prolog/lib/robot.pl000066400000000000000000000010251365675327500210200ustar00rootroot00000000000000input(X) :- read_atom(X), \+ (X == 'quit'); halt(1). laby_name_left :- write('left\n'), input(_). laby_name_right :- write('right\n'), input(_). laby_name_forward :- write('forward\n'), input(_). laby_name_take :- write('take\n'), input(_). laby_name_drop :- write('drop\n'), input(_). laby_name_escape :- write('escape\n'), input(_). laby_name_look(X) :- write('look\n'), input(X). laby_name_say(X) :- write('say '), write(X), write('\n'), input(_). start :- write('start\n'), input(_), laby_name_ant. :- initialization(start). laby-laby-0.7.0/data/mods/prolog/rules000066400000000000000000000001741365675327500176510ustar00rootroot00000000000000info: need gplc run: fetch robot.pl dump program.pl exec gplc --no-top-level robot.pl program.pl -o program spawnl program laby-laby-0.7.0/data/mods/prolog/skel000066400000000000000000000004211365675327500174500ustar00rootroot00000000000000 laby_name_ant :- laby_name_right, laby_name_forward, laby_name_take, laby_name_left, laby_name_forward, laby_name_drop, laby_name_right, laby_name_forward, laby_name_left, laby_name_forward, laby_name_forward, laby_name_right, laby_name_escape. laby-laby-0.7.0/data/mods/python/000077500000000000000000000000001365675327500166115ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/python/help000066400000000000000000000004221365675327500174620ustar00rootroot00000000000000basic: laby_name_forward() laby_name_left() laby_name_right() laby_name_escape() rocks: laby_name_take() laby_name_drop() loop: while laby_name_look() == laby_name_Void: ... function: def f(): ... conditional: if laby_name_look() == laby_name_Web: ... else: ... laby-laby-0.7.0/data/mods/python/lib/000077500000000000000000000000001365675327500173575ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/python/lib/robot.py000066400000000000000000000017471365675327500210670ustar00rootroot00000000000000import sys; def output(s): sys.stdout.write(s + "\n"); sys.stdout.flush(); def input(): l = sys.stdin.readline(); if l == "quit\n": exit(0); return l; def laby_name_left(): output("left"); input(); def laby_name_right(): output("right"); input(); def laby_name_forward(): output("forward"); input(); def laby_name_take(): output("take"); input(); def laby_name_drop(): output("drop"); input(); def laby_name_escape(): output("escape"); input(); def laby_name_say(s): output("say " + s); input(); laby_name_Void = 0; laby_name_Wall = 1; laby_name_Rock = 2; laby_name_Web = 3; laby_name_Exit = 4; laby_name_Unknown = 5; def laby_name_look(): output("look"); ans = input(); if (ans == "void\n"): return laby_name_Void; if (ans == "wall\n"): return laby_name_Wall; if (ans == "rock\n"): return laby_name_Rock; if (ans == "web\n"): return laby_name_Web; if (ans == "exit\n"): return laby_name_Exit; return laby_name_Unknown; output("start"); input() laby-laby-0.7.0/data/mods/python/rules000066400000000000000000000001171365675327500176650ustar00rootroot00000000000000info: need python run: fetch robot.py dump program.py spawn python program.py laby-laby-0.7.0/data/mods/python/skel000066400000000000000000000004101365675327500174650ustar00rootroot00000000000000from robot import *; laby_name_right() laby_name_forward() laby_name_take() laby_name_left() laby_name_forward() laby_name_drop() laby_name_right() laby_name_forward() laby_name_left() laby_name_forward() laby_name_forward() laby_name_right() laby_name_escape() laby-laby-0.7.0/data/mods/ruby/000077500000000000000000000000001365675327500162515ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/ruby/help000066400000000000000000000004141365675327500171230ustar00rootroot00000000000000basic: laby_name_forward laby_name_left laby_name_right laby_name_escape rocks: laby_name_take laby_name_drop loop: while laby_name_look() == laby_name_Void ... end function: def f ... end conditional: if laby_name_look() == laby_name_Web ... else ... end laby-laby-0.7.0/data/mods/ruby/lib/000077500000000000000000000000001365675327500170175ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/ruby/lib/robot.rb000066400000000000000000000017511365675327500204750ustar00rootroot00000000000000class Robot laby_name_Void = 0 laby_name_Wall = 1 laby_name_Rock = 2 laby_name_Web = 3 laby_name_Exit = 4 laby_name_Unknown = 5 def initialize perform "start" laby_name_ant end def output s puts s $stdout.flush end def input l = gets rescue "" if l == "quit\n" then exit(1) end; l end def perform action output action input end def laby_name_look case perform('look') when "void\n" laby_name_Void when "wall\n" laby_name_Wall when "rock\n" laby_name_Rock when "web\n" laby_name_Web when "exit\n" laby_name_Exit else laby_name_Unknown end end def laby_name_left; perform 'left'; end def laby_name_right; perform 'right'; end def laby_name_forward; perform 'forward'; end def laby_name_take; perform 'take'; end def laby_name_drop; perform 'drop'; end def laby_name_escape; perform 'escape'; end def laby_name_say s; perform ('say ' + s) end end laby-laby-0.7.0/data/mods/ruby/rules000066400000000000000000000001141365675327500173220ustar00rootroot00000000000000info: need ruby run: fetch robot.rb dump program.rb spawn ruby program.rb laby-laby-0.7.0/data/mods/ruby/skel000066400000000000000000000005531365675327500171350ustar00rootroot00000000000000require "./robot" class laby_name_Ant < Robot def laby_name_ant laby_name_right laby_name_forward laby_name_take laby_name_left laby_name_forward laby_name_drop laby_name_right laby_name_forward laby_name_left laby_name_forward laby_name_forward laby_name_right laby_name_escape end end laby_name_Ant.new laby-laby-0.7.0/data/mods/scheme/000077500000000000000000000000001365675327500165345ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/scheme/help000066400000000000000000000004531365675327500174110ustar00rootroot00000000000000basic: (laby_name_forward) (laby_name_left) (laby_name_right) (laby_name_escape) rocks: (laby_name_take) (laby_name_drop) loop: (while (= (laby_name_look) laby_name_Void) ...) function: (define (f) ...) conditional: (if (= (laby_name_look) laby_name_Web) (begin ...) (begin ...)) laby-laby-0.7.0/data/mods/scheme/lib/000077500000000000000000000000001365675327500173025ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/scheme/lib/robot.scm000066400000000000000000000022331365675327500211330ustar00rootroot00000000000000(define-module (robot) :use-module (ice-9 rdelim)) (define (input) (let ((line (read-line))) (if (equal? line "quit") (exit 0)) line)) (define (output s) (format #t "~a\n" s) (force-output (current-output-port))) (define-public (laby_name_left) (output "left") (input)) (define-public (laby_name_right) (output "right") (input)) (define-public (laby_name_forward) (output "forward") (input)) (define-public (laby_name_take) (output "take") (input)) (define-public (laby_name_drop) (output "drop") (input)) (define-public (laby_name_escape) (output "escape") (input)) (define-public (laby_name_say s) (output (string-append "say " s)) (input)) (define-public laby_name_Void 0) (define-public laby_name_Wall 1) (define-public laby_name_Rock 2) (define-public laby_name_Web 3) (define-public laby_name_Exit 4) (define-public laby_name_Unknown 5) (define-public (laby_name_look) (output "look") (let ((answer (string->symbol (input)))) (case answer ((void) laby_name_Void) ((wall) laby_name_Wall) ((rock) laby_name_Rock) ((web) laby_name_Web) ((exit) laby_name_Exit) (else laby_name_Unknown)))) (output "start") (input) laby-laby-0.7.0/data/mods/scheme/rules000066400000000000000000000001251365675327500176070ustar00rootroot00000000000000info: need guile run: fetch robot.scm dump program.scm spawn guile -L . program.scm laby-laby-0.7.0/data/mods/scheme/skel000066400000000000000000000004101365675327500174100ustar00rootroot00000000000000(use-modules (robot)) (laby_name_right) (laby_name_forward) (laby_name_take) (laby_name_left) (laby_name_forward) (laby_name_drop) (laby_name_right) (laby_name_forward) (laby_name_left) (laby_name_forward) (laby_name_forward) (laby_name_right) (laby_name_escape) laby-laby-0.7.0/data/mods/vala/000077500000000000000000000000001365675327500162135ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/vala/help000066400000000000000000000004731365675327500170720ustar00rootroot00000000000000basic: laby_name_forward (); laby_name_left (); laby_name_right (); laby_name_escape (); rocks: laby_name_take (); laby_name_drop (); loop: while (laby_name_look () == Tile.laby_name_Void) { ... } function: void f() { ... } conditional: if (laby_name_look () == Tile.laby_name_Web) { ... } else { ... } laby-laby-0.7.0/data/mods/vala/lib/000077500000000000000000000000001365675327500167615ustar00rootroot00000000000000laby-laby-0.7.0/data/mods/vala/lib/Robot.vala000066400000000000000000000022031365675327500207100ustar00rootroot00000000000000enum Tile { laby_name_Void, laby_name_Wall, laby_name_Rock, laby_name_Web, laby_name_Exit, laby_name_Unknown } string outin (string s) { stdout.printf ("%s\n", s); stdout.flush (); string line = stdin.read_line (); if (line == "quit") { Process.exit (0); } return line; } void laby_name_left () { outin ("left"); } void laby_name_right () { outin ("right"); } void laby_name_forward () { outin ("forward"); } void laby_name_take () { outin ("take"); } void laby_name_drop () { outin ("drop"); } void laby_name_escape () { outin ("escape"); } Tile laby_name_look() { Tile answer; switch (outin ("look")) { case "void": answer = Tile.laby_name_Void; break; case "wall": answer = Tile.laby_name_Wall; break; case "rock": answer = Tile.laby_name_Rock; break; case "web" : answer = Tile.laby_name_Web; break; case "exit": answer = Tile.laby_name_Exit; break; default : answer = Tile.laby_name_Unknown; break; } return answer; } void laby_name_say (string s) { outin (@"say $s\n"); } int main () { outin ("start"); laby_name_ant (); return 0; } laby-laby-0.7.0/data/mods/vala/rules000066400000000000000000000001671365675327500172740ustar00rootroot00000000000000info: need valac run: fetch Robot.vala dump Program.vala exec valac Robot.vala Program.vala -o program spawnl program laby-laby-0.7.0/data/mods/vala/skel000066400000000000000000000004611365675327500170750ustar00rootroot00000000000000void laby_name_ant() { laby_name_right(); laby_name_forward(); laby_name_take(); laby_name_left(); laby_name_forward(); laby_name_drop(); laby_name_right(); laby_name_forward(); laby_name_left(); laby_name_forward(); laby_name_forward(); laby_name_right(); laby_name_escape(); } laby-laby-0.7.0/data/scripts/000077500000000000000000000000001365675327500160155ustar00rootroot00000000000000laby-laby-0.7.0/data/scripts/sound000077500000000000000000000000461365675327500170730ustar00rootroot00000000000000#!/bin/sh [ -f "$1" ] && aplay "$1" & laby-laby-0.7.0/data/sound/000077500000000000000000000000001365675327500154565ustar00rootroot00000000000000laby-laby-0.7.0/data/sound/bad.wav000066400000000000000000000202101365675327500167160ustar00rootroot00000000000000RIFF WAVEfmt DXdata\ *% { nQS~/GPJ  2 ]g8mW5I3H&  qL })}vB (rU1 m:R a E qu/i?s48 ,_5Qc - F9%kP?fXPzo R   * @R# ,f=,0+~D#)/#YSEAd>bQ1]8Gc n"L  7g  "*{5I9Z ~O Dt8R*ugo^; 8?+e "h , { (  Z.7s  n OB!J-\.L>,MwfIhkaKHt5uI]l#Q?(c0o "JHEDq{(|D FGw.x  j f  ^*( = 4  U <  JL>6y&+Q1D ;W4IKsft`  /  C  % (R >42 ZjkZfZI? K- u &`) c79mEhU4x A)wH=1\If*6C%A>Sxr jT] u zI3e1T=^+]HN^r J=  W /I - , O R vD3(%s)Q> \& j:"~T,g f N i   lMwp'9mT[%P[Uvn_7  *^a_\[VG;eG*,73%&=~.JV! qjhaq+SnM0VMJV_4U\5 g  z : < C!    R [ 6 k _ \ ^ e v 9!B"x/n"9\1l5XLa#XDGn C^7hqs,6 b d` h  X9 25t7U  /t lDJ'S%VR^Roo`n(k43YuYF ]QYTj=*8a&j/ PD7p#;]cl|$5'4( %+)^j"meGv#r NB$w8 bs8x_$RbBg5%m4G35-=tayLA[=&6`~Sxtr^ 0O4 d#-aj/eD=KFF8tNBncUB \ Ciq*Du'p`Q# ~4 c NE"CLaE rSe'ys7"MKfj4WJd ;-{>pk.hh."c W,,4Y`8->f{i,hj]EK?dZTwX"l+O( (C ;JGc"GjZi*'bbFzR!+B jE]jE[oY#1RZn- HI|@_`s"%#&J`?<i6PJ[ddzS8Dut~~WsX4BN'?0IT,4lH|Jof:xGCBRcH\-S&joC&jjl:1 C#qASaB.lE01 }tkou9?Q]YUr<6uuGuCIZ3t OeCulo"l:kj7 O{yd"" [L;\&#":Gznu2w&\[HbN[c\UfqC^_i[Hr_^;E_*M$cQbWWUD8?>FUL[p_pGv2P(3^|9h(C;l3>tn~pM7~xT4vOUdBp(/A,,$4h|,1EfU^_EGJLc_kylGHetcc6u<QGUD6;\l59~nK=(Bk.SYy12qc#K)t"^7c:WT@kOI&T7? qz[YG3L<Y:]@Y^V|bHW ,1(=ERZo~HJS=P(  &   $ fhksihfzER**8Wje6Kwh #J\[t=c4&+<Oeimumbwgmvy]{KA,*#jfeT^mXobO>4gg:G0eUrqp[Y^:( gBRI&W`(0   $5,28(=,2385I=XBhFv=`J@>:7HGUh[kredY!,+#$/(2@7NELCJ58.22+IkQmx|#&6+VNZrbzgrlor~y{fstu]ZSVSg_iocfXQ6F4"36@HRSKK'/ 2E04C638B\Hh[aegj}|  "-?MPcgpt~|cbQ8K%-/)-=';-&# }}}||}wsfjPRGB9A(4,   !%$2#4(5/A;SJ^\efoivjqihg^aY[OPPKPJNGQDDG6=8(8)(. '        w|vuxounig`\XTLTCN=@>>:B>>7/,"') +'-#%  #*,&#+0/7,:0582;79B9G?@?JEXQdaak^ebdpst| !##  *Vklaby-laby-0.7.0/data/sound/carry-exit.wav000066400000000000000000000000001365675327500202520ustar00rootroot00000000000000laby-laby-0.7.0/data/sound/drop-no-space.wav000066400000000000000000000000001365675327500206320ustar00rootroot00000000000000laby-laby-0.7.0/data/sound/drop-nothing.wav000066400000000000000000000000001365675327500205730ustar00rootroot00000000000000laby-laby-0.7.0/data/sound/exit-in.wav000066400000000000000000000000001365675327500175400ustar00rootroot00000000000000laby-laby-0.7.0/data/sound/exit.wav000066400000000000000000000366271365675327500171640ustar00rootroot00000000000000RIFF=WAVEfmt @@datak=x~~~x|~||zv~~z~xz~|x~~~|~z~~|~zt|~|~~|~||z|||~zzltlpvbvrx~~~pnb||njfVp|vjrh^`|zpvttnzv|vpZpnp|zbxn~xjf\n^|n|zd|v~x\z~|htzp~lhjhzn`xvptz|vbxrx|zz~dx|Vnr|vb|zdxpzdzxz~|`z|xjx~dnn~vlzj~rvxv~n|~dzx|xz~jrzx||xn~pz~x|~t|pt\zxr~pt~l||txpvhxv~vVx|vrnzljr~tzjv~jxtbr~xp|btnnprnjjzx~x~vZztz|vtp~fnxz|vbrz~dbztzx|zbvbvp|jlnv|t~lh~pxt|xjp~vpv|rxjdjr~z`vxzlpx~f~t~pxjzzpzh|prrvrttpp|~zzv~xvrdzt|p~jntfp~rzx~z~lxv~vvxxv~jzv~zjv~x|ld~lvthzplzp||txvrzxv~p~jr|~rhlv|z||ztr|ht||r|pvzr~zxt|zvvtv|~xxxzpztz|vz~~v|vp~zp~v~tvr|txr~v|vv~~~vlxlxn~||~xvx|t||tz~vzr~pxz~xp~|rrxx~xnztltp||~zr~~zv~xn|~|x~txz~n|xxr~r|zrxlzlhltxlvxxn~n|rvlxxx~n~~ph|zx~nzb~jld|jx|n^^|LT|x~jhhrvp|rt|r~t~rvtp\vrn~~ndtrp~x||rdr|h|xbht~vpd~zf|~djznxhvfzzxrpxxjrztxxnzvlnvrzt|z~|~tvlxv~~xxp~v|^ztfh~ppz|t|tprvtzrrnztp|lpt|j~vjn~j~h|tt|rn|hpnhpnlvn|bfxzfz^t|lxd`|t`zpl~X~rjhzvdltrdjlzbjjblplvnl`r~h\z|n|vd`|h`|th|rl|Zlh`npjvtdrn^bl|hrfhlr~\`vxf|jfzhvh^vt|prtx~rlx~zt~z||zrt||~vvv~przvt~vplztrvvv|xrh~ph~xr~fxxrxdttvnrjhvpxzrv~rvvp|z~z|~|zvrbtzZjnrz~t|vxpzzp|r|thrrfhltvx|d|ltzn|rzvjzt~~pr~~jxvzzz||x|~~~n|pzxxzxzv~n|p|z|z~||xr~p|zx||zxv|xz~~xx~~~~|z|v|xv|vvv|zv|zx|~v~x|br||xlvzv~z|blb||||~tv|xjz~~|~v~|zx|z~txx|z~n|x~~xxp||rx|vnzzzvv|z|zz~tzxt~zzxrzv~v|~xxl~r~x~~|vzz|rvzzz|zv||~zxz|~~x|vxtrz|~vvz|z~x|vp~~p||pz|~tztx~ppxxr~zt|vr~||x~pxz~pv~vv~~xt~~~lzxpvrxl~~phttztvp~xv|n|tppzxx|xxz~tz~vp|zxt|lvzx|z~pt|tvz~|xn~xzt~zrz|rzvzt~zxtzx|rl|~|z~|t~tv~r||v~|tz~~~r|~|xzv~v~|~rxv|zn|z|p~lxz|ttvnzx~tt|~xp|n|lzt|~n~xzxv||~x~|ptv~~rp~~|rt|vn|~|rpvxz||ttrzxjr|xxfrv~~|zLrlXn|l8v~x~Nntf|fxPzj|^rznhfvjhhh~`nzpr~TXvhr^jpptfh~llbr`|tjZpjdxfl~~hzFdt|pxjhfxv^~x~~znvpx^hzxxjpr|v~f`|b|vfxntj`~txhnvvn|vff|^zvr`|hrpdjpjhfzt|pp|xhptvpp~ltvtt|r~j|vzpx~z~rvzvzzx|~~~x~ztxxz~tv~|v|||~xvxzrzxz|vzvx~xznvxz|xxtxzt|vxt|zrvt|z~nxpxxr|vrpx~txtp~znzzvpzvtzzx~|v~pxpzrtnzrzj|pzr|lt|vxzlrzzptv|vxzz|v|pl~vtzv~xv~~tpt~~tpx~~zvx|x~z|~|rtz|~v~z~vt~t|tz|tzx|vt||~x|tt|lvvzxlv~z|z~|~xx~~|ztz~|tvzzxxrn~hlp|pnv~vzz|~t|rrtptxvnn^|dpxzpt|fvJvprjzvz~xtxzrtzxzzptx~hv|pt~vlx~~jjp|zx|v~tznnxrxpvztv|z~v||ltzn~~xf|xxpxx|xvnv~rtz~rlvz|xzz|t|n~|~rv~xxvx|pjv|~rpx~r~|zz~n~|||~jtz|z|xxxrr~xxrvvrxx~tf~xrtvtvr||x|~z|~||pzxxxzxj|x|~xzttx`~~|~vr~r~|~txxxvvzz~znz|zp|pz~|nhz|xpxxv~rh~~~przp~rp|zztx|~|vpz|x|t~vtz~z~tx||~||~zxv|~|p|xt~vrxzlv~~x|~n~~vz~|n~z~xt|vt~x|v~|zxxx~xv|vvlxxv|xx|r|t||rxrzzt~~vxzrrzt|~tvxzzzxh|vztzxzrz||vvvv~~|trv|~|x|~zxr|~pv~~|zzzz~|x||z|vt~||~~ppzvzzv||z|x|v~~xx~||~|t~vz~|~~v|~~xrzvlzr||nrdzl~p|t|vtrtpv|v|zzlzpxr|zlrvxvz|xrrrzvzt|r~~rvzvv|v\t|rz~tv~vx~~~fFdtzv`^t~|z^ldzttdzxx~tvz^|vvtTj`h|nz|vf~~|~ftxr~|~zz|zv~n~|v~bbdpvvrntpnfj|ttlzp~xt^hvf|vrxvn~~xrv|htdvztvfzl|njvjzrrX|pZ|zz~^Zpppl^vzzxv`^~f|~pdlzZ|d|l|tvthx`tl|\Zj~lhdtv^\hvXxfrjfXtfdlvrxjphl~dTzn~lbtr~RVl|hfnh~~vdPb~fvnpjdP^z|vnXxn|\Xxhj~lxz~|ftl|prZ^rtrblz|vPZhZZnzlrf~^Z|~l\|^|zndhtvzdr~r|~brhz~rz|v|x|Pzfnvhxrzt~`|t|ptd\nn^^|~j|nr|r|xzr~~x|hn~~xznTn~|tdld~rzf~zdnj|~|tfXrd|jtjpvhvt|xxlfzzrthhxjhxfvzbrjzp~jz\prvh\xtdxn||dtpppj|rvnzvxnxvxjtxtxrn|pvhphvrvh~pfrr~p|zlr~vzntdrr|llh^hf~bt~vpftldxlzllvZ~ntlndrh~px|nr~pxvvbz|l|rnhr|\pzb||txjlvp|plvx`j~rpz^~tZl|n~vrr|v~~xnfn|pl~~hxnxntdtr~tx~xrpp~p~~pfppt\xhxxtlzrvvntt~rx~jxx|tx|r~r~~vzvr||txxhxtpz~xx~pnv~xt~zr~|~||zp~hvzpv|z~~~vxlp|vr|~t|plzv|xxz|z~pp|nxv|vzv~ztp|~p~zv|~|~||v|r||t~rv|xpv|zx~~~~xtnz|z|z~v|~|zvz|~z|xtpvrplz|v~n|vj|~|t|x|xrp||p~nhv~vpxzn||vv~rz~vl~x~~~zxv~||p|~|~v|n|n~|tj|l~xp|hrv~~pztlpv~|n~~lxr~t~zlvprztv|zpn~|lzxztv~~lzzp~p~ttxv~z~~n~||nzntr~z~zjz~t~l|v~|z|xrlxpzx~tt~rpzzx||~z~rxz~xzzz|~xpz~x|~|~|p|z~|~tx~z|||xttxxxt~xx~~||~rzx~tx|~z~~|~x|xzx~~xzx~vxt|~v|~~||xz~v||zx~~||x~x~~~z~z~zz~~ztz~x~zx~|~|z|~~pz~r|x~~zv|zv~~~|z||ztv|t|z~zrz|x|~r|x~|x~~z~~vz|~z~v|t~xzx~zzx|vz~zzzv|xp|~||t|~|zx~|z~z|~|v~zz~~z~v~x||~|z~v~~|~||||v~nt|z~tx|~tx|tzzz~tp|prlpRXdnpznrpfd~tvzltZ~Nvlf~j^xp~ztrnxt|~xJlXvnvtVxvtzzj~xZ|pxxzt|r~vh|tZ|xz|jrr|xxzttvvrzjv|zjlVjllh~prlz~ttnpltt|lnppxzjldzpzpn|h~thtrvj|n|pllvZ~h~|hxlp~n|rnl|hbhhx^tfdtpllnprnpxnjl\~pvz\tddx~fzflrhtdz^xlfx|hnj~jzbbp|rll|tdl|\frn~nj~lv`drbjnn`nvlv``pllhfxvjfr^~jvbtnrjzzhtxdzr~`tpnvnvxlvjhxxnzprh~~pb~tnp~fztvzjrpl~|`pj|`hvhrpnnzvnxffdj~hj~nrZrntzfvp|tzb|zpn|^vxf~j|b||pxzrxtlxrrll|t~rzpfznrrl~~pxtnn~drrl~|z~~~nrv|njvnlxrzlldvtvlrt|hfzlzr~~pl~p|tb~~n~tzzzv~|vpvz|lvjnl~nlx|p~~t|hxzznjdztxrpz|pd|jlhvjznrvltdr|hv~rvz|zhr`pvxtdf~txnlxzhz|z^~hzptvntpxfrv~ptrrv~nzlh`lpxpdlxhjrtzzfvrl|tvljpvv|~xnpj^^z|zp|fvd|zxfxxp~pr~pnbzx|xtvl||vtpnhzvlztrrptntl|v~x|~z|l|rzzv~rl|zvz|tlvzrxrzplzntzvfjp~lzrrx~~vvjrvh~dtxbtbpxvnjltjx|z~Zbzbxh|~~htvpt|tv|jpvvzzrnzxjl|vvtp|h|xj|p|pp|nzt|xz~ntz|pxzz~|n|z~vz~~zptzxxvv~zxx||~|zv~zz~x~|~z~vxxz~|~|~v|vxxzx~pxz|tzxv~z~vx~~x~tvxxxrbpplrrnZz`xrN\~jZ~Z~^~rtnrxJhbxvlz~^xdlTƆdxlhx~~txzdhnzt~t~b|x~rjrr|r|t|||Xt~tr~dvt|h|xjhzrxnp~ttv|trt|tnx|nl~~|r~rr~vt|pvhzrltvxxnzztt|j~ztx|t|vl~|z~~~vxxxpx~|vp~|txp|n~xpxvplzvxzrxxrvvz~||v|x~t^Zjfrrjrdjpj~~lz|zppn|zj|xlz~v~ptxd\rvvxx|^thfp|zln||Z|f~brzxv~dv~lz~jv|xlzv|nt|t~x|~v~~~v~xtz|r~txrtrxrt~~ppvvtzz~r|vv|xx|||x|~l~||~z|zxzzzxxx||~xn|r|trjr~~jpx~x|~hhhz~|tfrz~x~x~lt|||~xvzx~tz~~~vt~~|~pzvvzzvjjzprdz|nv~vzzlxztvrxpz|~tv||z||v|z~|nxz~vtvp~~zxnrtxd|nlr~z~jtxvvt|~lt|rx|vx~z~zx|x~z|~xt|n||tfzrzpx|rvvtlrrrvt|x|v|~~vt|~z~||~~xxxv|xtzvrz~|~lj~vvzjzztzzzv~~rzptpppvt~xptvz~ztzt||xz~v~xztvz|~pp~xt|lxx~p~~pzpzhl||v|nxx~vjvn~zxznp|v~zvvzzxxxtxz|n~v||ttjh|~t~tpvv|~pjpz|vxlnx|txrnxpntx|zxxrlztztxlr|p~xxxztjtxhvpz|z|nht|tlf~xrr~vzxrvxvx~hrxrx~tnz|zrvnt||xln~zzxxnrxzp~||||rt|~zxt~v~t~t||zvr~rnz~|z|tvx|n|~||~zvvx~~~|~x~|vx~||xzz~|x~~z~v|z~|~~x|x~tz~x~xz~|t~x~~~z~|~zzz~~|~~~z~~||z~~~~x|~~vx|~||z|z~|zt~x~|zz|zx~x||~z||~~z~|z~z~vzz~x|rz|x|~zztpv~z|z~~xv|zxx|z|zpzz~r|z|zztxxxz|~zz|~z|~|~x|~~|z~z|~|z|||||z~~~x~z|z||zx~|zz~zzr|xz||zvzx~|~vx|~|v|zz~~|~|~|~|zxx||zrz~zxxzzz|z||~~x|z~~|tz~|~~x~~xz~|zz|z|zz~~~|||zz|~rz|xzx~~~z~vt||xz|rvz|xrzx|xv|tzvz|~xt|~~tt|~~z~x|~vx|zxvz|v~|~zxz|vvx|x|x|~~zxxzx|xv~x~|x|nvz~~~v~~~tzt~zz|zz||~x||xzx~||z~||~|~~z~|~~zz~||~xz||z~~||~xxv|||xz|||z~|z|~|xxz~v|x||zz||~~|zxz~xzz|z~~zz~~|~|~|~~~|z~~x~~|~~~z~~x~~x|~~|vz|~|~||~~zzx|~~|x|z~~x|~~~rzz|x|r|~||z|t~z|vvzz~~zx|xzz~ztz~x||z~t~v|t|v|~~|v~vx~||v|xz~~vzp~vzv~xxx~z~zx~zt|zxzx~zt|zx||tz|tx|~zv~|v~v|||z|xx~v|~~|||zx~zzz~~~~zv~~~x|||~x~zz~~z~z~~~~|zx~~xx~zz~~|z~zz~|~x||~~|~~z|~|~zz|~|z~~~|v~zz~|zz~z|~~|x|z||z~~v~x~xz~||~|~~x~~~~~zz~~||~~~|z~~~z~||~xz~x|~|v|zvz~zv|~v|~~||||z~z|zx|~z~z|vx~zv~~z~z~~~|~z~|x|zz||v|vz|~|z~|~x|~xxx|~~x~xx~~z~~~~|zx|~~x||~~z||x||xxzvzz~zx~z|~txz~x|~||~xzz~|~~||z|z|~z~z~rz~z~x~tx|~|zzv~v|v|~t|~~z~~|~z|~|~||zzz||~vz~~~v|~|vz|||z~z~~~~~z~~~~||tz|~|z|x|xx|~|x~v|~|z~~~~~~~|~xzx|z~~z|xvx~z|xx~zxv~z|~v~|z||x~~~|~~~||z~~z|~|zz|||z|~tz~~|x~z~|~z||z~~~~~~|~z~~~~z|||~~~x~|~vz~z~||~|x~|||xz~z|z~|~||~~~~~~|~|~~|~|~zzt~~~~~||~|||~x||~x||~||~|~~|z|z~xz~~~|x|x|z|||~~z|z|z|v~zz||~||~|~|~~~~~~~||~|~x|~~~~~z|~zzxz~|~~~~~~|||~||||~|~|~|~~||||zzzz|~x~~||z|~|~|z~~~|~|~~|~~~z||x~z|~z~|~||~||~z~~|~~||~|||~z|z~~~~~z~|~||~~v~~~|~~~|~~|||zz~z|~~~~~~|~~~~~~||z|~~|~zxz||v~x|~|~|~~~||~xz|||~z~|z~~|~~~~~~x~|x~x~~~xz||~|~|~z|~|x|~~|||~|~|zxzz~||ttz~|~zv~x~|z~t|||~vz~|~z|z~~||zzz~~|~~~||~x|~~|xz~~~|x~|~~|xz~|~z|~x|~|~~~xz~|zz|~x|~||~|~~~~~~~|~|~|~|~~~~|~~~~|||z~~z||~laby-laby-0.7.0/data/sound/no-exit.wav000066400000000000000000000000001365675327500175460ustar00rootroot00000000000000laby-laby-0.7.0/data/sound/rock-drop.wav000066400000000000000000000202101365675327500200700ustar00rootroot00000000000000RIFF WAVEfmt DXdata\ *% { nQS~/GPJ  2 ]g8mW5I3H&  qL })}vB (rU1 m:R a E qu/i?s48 ,_5Qc - F9%kP?fXPzo R   * @R# ,f=,0+~D#)/#YSEAd>bQ1]8Gc n"L  7g  "*{5I9Z ~O Dt8R*ugo^; 8?+e "h , { (  Z.7s  n OB!J-\.L>,MwfIhkaKHt5uI]l#Q?(c0o "JHEDq{(|D FGw.x  j f  ^*( = 4  U <  JL>6y&+Q1D ;W4IKsft`  /  C  % (R >42 ZjkZfZI? K- u &`) c79mEhU4x A)wH=1\If*6C%A>Sxr jT] u zI3e1T=^+]HN^r J=  W /I - , O R vD3(%s)Q> \& j:"~T,g f N i   lMwp'9mT[%P[Uvn_7  *^a_\[VG;eG*,73%&=~.JV! qjhaq+SnM0VMJV_4U\5 g  z : < C!    R [ 6 k _ \ ^ e v 9!B"x/n"9\1l5XLa#XDGn C^7hqs,6 b d` h  X9 25t7U  /t lDJ'S%VR^Roo`n(k43YuYF ]QYTj=*8a&j/ PD7p#;]cl|$5'4( %+)^j"meGv#r NB$w8 bs8x_$RbBg5%m4G35-=tayLA[=&6`~Sxtr^ 0O4 d#-aj/eD=KFF8tNBncUB \ Ciq*Du'p`Q# ~4 c NE"CLaE rSe'ys7"MKfj4WJd ;-{>pk.hh."c W,,4Y`8->f{i,hj]EK?dZTwX"l+O( (C ;JGc"GjZi*'bbFzR!+B jE]jE[oY#1RZn- HI|@_`s"%#&J`?<i6PJ[ddzS8Dut~~WsX4BN'?0IT,4lH|Jof:xGCBRcH\-S&joC&jjl:1 C#qASaB.lE01 }tkou9?Q]YUr<6uuGuCIZ3t OeCulo"l:kj7 O{yd"" [L;\&#":Gznu2w&\[HbN[c\UfqC^_i[Hr_^;E_*M$cQbWWUD8?>FUL[p_pGv2P(3^|9h(C;l3>tn~pM7~xT4vOUdBp(/A,,$4h|,1EfU^_EGJLc_kylGHetcc6u<QGUD6;\l59~nK=(Bk.SYy12qc#K)t"^7c:WT@kOI&T7? qz[YG3L<Y:]@Y^V|bHW ,1(=ERZo~HJS=P(  &   $ fhksihfzER**8Wje6Kwh #J\[t=c4&+<Oeimumbwgmvy]{KA,*#jfeT^mXobO>4gg:G0eUrqp[Y^:( gBRI&W`(0   $5,28(=,2385I=XBhFv=`J@>:7HGUh[kredY!,+#$/(2@7NELCJ58.22+IkQmx|#&6+VNZrbzgrlor~y{fstu]ZSVSg_iocfXQ6F4"36@HRSKK'/ 2E04C638B\Hh[aegj}|  "-?MPcgpt~|cbQ8K%-/)-=';-&# }}}||}wsfjPRGB9A(4,   !%$2#4(5/A;SJ^\efoivjqihg^aY[OPPKPJNGQDDG6=8(8)(. '        w|vuxounig`\XTLTCN=@>>:B>>7/,"') +'-#%  #*,&#+0/7,:0582;79B9G?@?JEXQdaak^ebdpst| !##  *Vklaby-laby-0.7.0/data/sound/rock-in.wav000066400000000000000000000000001365675327500175250ustar00rootroot00000000000000laby-laby-0.7.0/data/sound/rock-take.wav000066400000000000000000000000001365675327500200430ustar00rootroot00000000000000laby-laby-0.7.0/data/sound/start.wav000066400000000000000000000000001365675327500173200ustar00rootroot00000000000000laby-laby-0.7.0/data/sound/take-no-space.wav000066400000000000000000000000001365675327500206120ustar00rootroot00000000000000laby-laby-0.7.0/data/sound/take-nothing.wav000066400000000000000000000000001365675327500205530ustar00rootroot00000000000000laby-laby-0.7.0/data/sound/wall-in.wav000066400000000000000000000000001365675327500175260ustar00rootroot00000000000000laby-laby-0.7.0/data/sound/web-in.wav000066400000000000000000000000001365675327500173440ustar00rootroot00000000000000laby-laby-0.7.0/data/sound/web-out.wav000066400000000000000000000000001365675327500175450ustar00rootroot00000000000000laby-laby-0.7.0/data/syntax/000077500000000000000000000000001365675327500156545ustar00rootroot00000000000000laby-laby-0.7.0/data/syntax/ocaml.lang000066400000000000000000000177761365675327500176340ustar00rootroot00000000000000 text/x-ocaml *.ml;*.mli;*.mll;*.mly (* *)