laby-0.6.3/0000755000175000017500000000000011575175611010572 5ustar gimgimlaby-0.6.3/AUTHORS0000644000175000017500000000134611575175611011646 0ustar gimgimThe laby team: (authors and contributors) Stéphane Gimenez Pierre-Malo Dénielou Stéphane Glondu Grégoire Henry Vincent Balat Barry Arthur (translations) Albanian: Dashamir Hoxha Czech: Matus Danish: Jacob Bundgaard Dutch: "jorritlin" English: Stéphane Gimenez, Barry Arthur French: Stéphane Gimenez German: "Hikaru755" Hungarian: "DarkLight" Italian: Alessio Cecchin Portuguese: Vicente Machado Russian: Dmitry Antonyuk Spanish: Alexandro Colorado, "ultrarregistro" Swedish: "diggan", "135" Turkish: Furkan Er Ukrainian: Grygorij Gromko laby-0.6.3/COPYRIGHT0000644000175000017500000000134611575175611012071 0ustar gimgim laby : learn programming, playing with ants and spider webs ;-) Copyright (C) 2007-2010 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-0.6.3/INSTALL0000644000175000017500000000172711575175611011632 0ustar gimgimlinux: to compile laby, you need ocaml >= 3.10.0 and lablgtk >= 2.14.0 (with support for gtksourceview >= 2.10) execute the following commands in the archive 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://www.pps.jussieu.fr/~gimenez/laby 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 >= 3.10.0 : http://caml.inria.fr/download.en.html - lablgtk >= 2.14.0 : http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/lablgtk.html - gtksourceview >= 2.10 : http://projects.gnome.org/gtksourceview/download.html laby-0.6.3/Makefile0000644000175000017500000000104411575175611012231 0ustar gimgim.PHONY: default all clean include project.conf PROJECT_ARCHIVE=$(PROJECT_NAME)-$(PROJECT_VERSION) default: all all: @./build --all clean: @./build --clean byte native byte-debug native-profile: @./build --$@ dist: @rm -rf "_dist/$(PROJECT_ARCHIVE)" @mkdir -p "_dist/$(PROJECT_ARCHIVE)" @mtn list known | while read i; do \ [ -f "$$i" ] && \ cp -f --parents "$$i" "_dist/$(PROJECT_ARCHIVE)/"; \ done @cd _dist; tar czf "$(PROJECT_ARCHIVE).tar.gz" "$(PROJECT_ARCHIVE)" @echo archive stored in "_dist/$(PROJECT_ARCHIVE).tar.gz" laby-0.6.3/TRANSLATION0000644000175000017500000000157511575175611012323 0ustar gimgimlocation: 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 contains translatable strings using the same format contributions: if you wish to contribute new translations or improve existing ones, you are welcome to send them by email to: Stéphane Gimenez laby-0.6.3/build0000755000175000017500000000727111575175611011626 0ustar gimgim#!/bin/bash cd $(dirname $0) [ -f project.conf ] && source project.conf source build.conf || exit 1 export PREFIX=${PREFIX-/usr} export SYSDATADIR=${SYSDATADIR-${PREFIX}/share} export SYSTMPDIR=${SYSTMPDIR-/tmp} export PROJECT_NAME=${PROJECT_NAME-unknown} export PROJECT_VERSION=${PROJECT_VERSION-unknown} export OCAMLFIND=${OCAMLFIND-ocamlfind} export OCAMLC=${OCAMLC-ocamlc} export OCAMLOPT=${OCAMLOPT-ocamlopt} export OCAMLBUILD=${OCAMLBUILD-ocamlbuild} export OCAML_VERSION=$(${OCAMLC} -version) [ -n "${OCAML_VERSION}" ] || \ { echo "compilation requires ocaml compilers"; exit 1; } ocaml_config () { ${OCAMLC} -config | sed -n 's/^'"$1"': //p' | tr -c -d '[:alnum:]' } export OCAML_SYSTEM=$(ocaml_config system) export OCAML_ARCH=$(ocaml_config architecture) export PKG_VERSION="${OCAMLFIND} query -format %v" SYSARCH="${OCAML_SYSTEM}-${OCAML_ARCH}" BUILDDIR="_build-${SYSARCH}" OCB="${OCAMLBUILD} -no-links -no-sanitize -no-hygiene -ocamlc ${OCAMLC} -ocamlopt ${OCAMLOPT} -build-dir ${BUILDDIR}" OFQ="${OCAMLFIND} query -r -format -I,%d" [ "${THREADS}" = "yes" ] && OCBF="${OCBF} -lflags -thread -cflags -thread" [ "${DEBUG}" = "yes" ] && OCBF="${OCBF} -tag debug" [ -n "${JOBS}" ] && OCBF="${OCBF} -j ${JOBS}" DIRS=$(${OFQ} ${PACKAGES}) for i in ${DIRS}; do OCBF="${OCBF} -cflags $i -lflags $i"; done for i in ${DEPLIBS}; do OCBF="${OCBF} -lib $i"; done for i in ${SRCDIRS}; do OCBF="${OCBF} -I $i"; done OCBI="${OCB} ${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 "$i" for j in byte native d.byte p.native ${BINEXT} do rm -rf "$i-${SYSARCH}.$j"; done done for i in ${LIBTARGETS}; do for j in cma cmxa d.cma p.cmxa do rm -rf "$i-${SYSARCH}.$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} ${DIR}/$i.$j"; done done for i in ${LIBTARGETS}; do for j in ${LIBEXT}; do TARGETS="${TARGETS} ${DIR}/$i.$j"; done done FILES="${BINTARGETS} ${LIBTARGETS}" echo building "${PROJECT_NAME}-${PROJECT_VERSION} for ${SYSARCH}:" ${FILES} export THREADS [ -f "${CONF}.sh" ] && sh "${CONF}.sh" > "${CONF}.ml" tclean ${OCBI} ${TARGETS} ${AUXTARGETS} || exit 1 for i in ${BINTARGETS}; do for j in ${BINEXT} do cp "${BUILDDIR}/${DIR}/$i.$j" "$i-${SYSARCH}.$j"; done done for i in ${LIBTARGETS}; do for j in ${LIBEXT} do cp "${BUILDDIR}/${DIR}/$i.$j" "$i-${SYSARCH}.$j"; done done # linking [ -n ${LNK} ] && for i in ${BINTARGETS}; do ln -sf "$i-${SYSARCH}.${LNK}" "$i"; done for i in ${LIBTARGETS}; do for j in ${LIBEXT}; do ln -sf "$i-${SYSARCH}.$j" "$i.$j"; done done exit 0 laby-0.6.3/build.conf0000644000175000017500000000023111575175611012534 0ustar gimgimPACKAGES="lablgtk2" DEPLIBS="unix str lablgtk lablgtksourceview2" SRCDIRS="src src/dtools" CONF="src/config" DEBUG="yes" DIR="src" BINS="laby" LIBS="" laby-0.6.3/data/0000755000175000017500000000000011575175611011503 5ustar gimgimlaby-0.6.3/data/conf0000644000175000017500000000060211575175611012351 0ustar gimgim#int gfx.tile-size :40 #int gfx.window.width :1000 #int gfx.window.height :750 #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-0.6.3/data/levels/0000755000175000017500000000000011575175611012775 5ustar gimgimlaby-0.6.3/data/levels/0.laby0000644000175000017500000001047011575175611014007 0ustar gimgimmap: 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 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 hu_HU.UTF-8 Demó nl_NL.UTF-8 Demo 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. 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. 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. 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. 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-0.6.3/data/levels/1a.laby0000644000175000017500000000451011575175611014147 0ustar gimgimmap: 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 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 hu_HU.UTF-8 Első próba nl_NL.UTF-8 Eerste uitdaging 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. 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. 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. 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. 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-0.6.3/data/levels/1b.laby0000644000175000017500000000347311575175611014157 0ustar gimgimmap: 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 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 hu_HU.UTF-8 Óóó, egy szikla nl_NL.UTF-8 Hee, een steen 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. 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. 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. nl_NL.UTF-8 Een steen zit in de weg. Gebruik specifieke instructies om stenen op te tillen en te laten vallen. 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-0.6.3/data/levels/1c.laby0000644000175000017500000000277411575175611014163 0ustar gimgimmap: o o o o o o o o o → . . r . . x o o o o o o o o title: text Still one 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 hu_HU.UTF-8 Első kihívás nl_NL.UTF-8 Nog één 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? 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 ? hu_HU.UTF-8 Megint egy szikla! És pont a folyosó előtt! Na, hogy jutsz keresztül? nl_NL.UTF-8 Weer een steen. Deze ligt in een gang. Hoe kom je er doorheen? 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-0.6.3/data/levels/2a.laby0000644000175000017500000000571211575175611014155 0ustar gimgimmap: 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 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 hu_HU.UTF-8 Messze van még nl_NL.UTF-8 Zo ver 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. 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. 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. 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. 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-0.6.3/data/levels/2b.laby0000644000175000017500000000253311575175611014154 0ustar gimgimmap: 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 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 hu_HU.UTF-8 Sziklák folyosója nl_NL.UTF-8 Gang met stenen 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! 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 ! hu_HU.UTF-8 Egy “while” ciklus megkönnyíti az életed! nl_NL.UTF-8 Ook hier zal een "while" lus handig blijken! 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-0.6.3/data/levels/2c.laby0000644000175000017500000000751711575175611014164 0ustar gimgimmap: 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 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 hu_HU.UTF-8 Cikk-cakk nl_NL.UTF-8 Zig zag 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. 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. 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. 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. 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-0.6.3/data/levels/3a.laby0000644000175000017500000001013411575175611014150 0ustar gimgimmap: 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 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 hu_HU.UTF-8 Áááá!!! Pókhálók!!! nl_NL.UTF-8 Aaahh, spinnewebben! 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. 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”. 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. 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. 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-0.6.3/data/levels/3b.laby0000644000175000017500000000222211575175611014150 0ustar gimgimmap: 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 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 hu_HU.UTF-8 Pókhálók és kövek nl_NL.UTF-8 Webben en stenen 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! 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é ! hu_HU.UTF-8 Váó! Egy kicsit komplikáltabb a feladatod! nl_NL.UTF-8 Woeps, het wordt steeds moeilijker! 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-0.6.3/data/levels/4a.laby0000644000175000017500000000222211575175611014150 0ustar gimgimmap: 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 → . . . . . . . . . . . o o o o o o o o o o o o o o o title: text Spiral 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 hu_HU.UTF-8 Spirál nl_NL.UTF-8 Spiraal 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! 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 ! hu_HU.UTF-8 A Pokol Spirálja! nl_NL.UTF-8 De helse spiraal! 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-0.6.3/data/levels/4b.laby0000644000175000017500000000205311575175611014153 0ustar gimgimmap: . 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? 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 ? hu_HU.UTF-8 Melyik út? nl_NL.UTF-8 Welke route? 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! 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 ! hu_HU.UTF-8 Az utolsó kihívás! 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! pt_BR.UTF-8 O último desafio! sq_AL.UTF-8 Sfida e fundit! tr_TR.UTF-8 Son mücadele! laby-0.6.3/data/levels/counting-the-rocks.laby0000644000175000017500000000271711575175611017400 0ustar gimgimmap: . . . . . . 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 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 nl_NL.UTF-8 Stenen tellen 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! 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! fr_FR.UTF-8 Ce niveau se résout facilement quand on peut compter… La boucle “for” est là pour vous ! nl_NL.UTF-8 Dit niveau is makkelijk op te lossen, als je kan tellen... Hier heb je de “for” lus! 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-0.6.3/data/levels/this-is-crazy.laby0000644000175000017500000000217411575175611016360 0ustar gimgimmap: 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! 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 ! nl_NL.UTF-8 Dit is waanzin! ru_RU.UTF-8 Это безумие! tr_TR.UTF-8 Bu çılgınlık! comment: text Multiple difficulties for yet another challenge! 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 ! nl_NL.UTF-8 Meerdere problemen voor wederom een nieuwe uitdaging! ru_RU.UTF-8 Многочисленные препятствия в ещё одной задаче! tr_TR.UTF-8 Yine birden fazla zorluk! laby-0.6.3/data/mods/0000755000175000017500000000000011575175611012445 5ustar gimgimlaby-0.6.3/data/mods/c/0000755000175000017500000000000011575175611012667 5ustar gimgimlaby-0.6.3/data/mods/c/help0000644000175000017500000000045111575175611013542 0ustar gimgimbasic: 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-0.6.3/data/mods/c/lib/0000755000175000017500000000000011575175611013435 5ustar gimgimlaby-0.6.3/data/mods/c/lib/robot.c0000644000175000017500000000256511575175611014736 0ustar gimgim#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-0.6.3/data/mods/c/lib/robot.h0000644000175000017500000000057611575175611014743 0ustar gimgimenum 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-0.6.3/data/mods/c/rules0000644000175000017500000000017311575175611013745 0ustar gimgiminfo: need gcc run: fetch robot.c fetch robot.h dump program.c exec gcc -Wall robot.c program.c -o program spawnl program laby-0.6.3/data/mods/c/skel0000644000175000017500000000050411575175611013547 0ustar gimgim#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-0.6.3/data/mods/java/0000755000175000017500000000000011575175611013366 5ustar gimgimlaby-0.6.3/data/mods/java/help0000644000175000017500000000045211575175611014242 0ustar gimgimbasic: 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-0.6.3/data/mods/java/lib/0000755000175000017500000000000011575175611014134 5ustar gimgimlaby-0.6.3/data/mods/java/lib/Main.java0000644000175000017500000000021411575175611015660 0ustar gimgimpublic class Main { public static void main(String[] args) { laby_name_Ant f = new laby_name_Ant(); f.laby_name_ant(); } }laby-0.6.3/data/mods/java/lib/Robot.java0000644000175000017500000000352111575175611016065 0ustar gimgimimport 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-0.6.3/data/mods/java/rules0000644000175000017500000000017711575175611014450 0ustar gimgiminfo: need javac need java run: fetch Robot.java fetch Main.java dump laby_name_Ant.java exec javac Main.java spawn java Main laby-0.6.3/data/mods/java/skel0000644000175000017500000000060711575175611014252 0ustar gimgimpublic 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-0.6.3/data/mods/lua/0000755000175000017500000000000011575175611013226 5ustar gimgimlaby-0.6.3/data/mods/lua/help0000644000175000017500000000045511575175611014105 0ustar gimgimbasic: 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-0.6.3/data/mods/lua/lib/0000755000175000017500000000000011575175611013774 5ustar gimgimlaby-0.6.3/data/mods/lua/lib/robot.lua0000644000175000017500000000207711575175611015632 0ustar gimgimfunction 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-0.6.3/data/mods/lua/rules0000644000175000017500000000011411575175611014277 0ustar gimgiminfo: need lua run: fetch robot.lua dump program.lua spawn lua program.lua laby-0.6.3/data/mods/lua/skel0000644000175000017500000000040211575175611014103 0ustar gimgimrequire '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-0.6.3/data/mods/ocaml/0000755000175000017500000000000011575175611013540 5ustar gimgimlaby-0.6.3/data/mods/ocaml/help0000644000175000017500000000046011575175611014413 0ustar gimgimbasic: 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-0.6.3/data/mods/ocaml/lib/0000755000175000017500000000000011575175611014306 5ustar gimgimlaby-0.6.3/data/mods/ocaml/lib/robot.ml0000644000175000017500000000162211575175611015766 0ustar gimgimtype 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-0.6.3/data/mods/ocaml/rules0000644000175000017500000000016111575175611014613 0ustar gimgiminfo: need ocamlc run: fetch robot.ml dump program.ml exec ocamlc robot.ml program.ml -o program spawnl program laby-0.6.3/data/mods/ocaml/skel0000644000175000017500000000050411575175611014420 0ustar gimgimopen 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-0.6.3/data/mods/prolog/0000755000175000017500000000000011575175611013747 5ustar gimgimlaby-0.6.3/data/mods/prolog/help0000644000175000017500000000025111575175611014620 0ustar gimgimbasic: forward, left, right, escape. rocks: take, drop. loop: go :- look(void) -> (...), go; true. function: f(X) :- (...). conditional: look(rock) -> (...); (...). laby-0.6.3/data/mods/prolog/lib/0000755000175000017500000000000011575175611014515 5ustar gimgimlaby-0.6.3/data/mods/prolog/lib/robot.pl0000644000175000017500000000102511575175611016175 0ustar gimgiminput(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-0.6.3/data/mods/prolog/rules0000644000175000017500000000017411575175611015026 0ustar gimgiminfo: need gplc run: fetch robot.pl dump program.pl exec gplc --no-top-level robot.pl program.pl -o program spawnl program laby-0.6.3/data/mods/prolog/skel0000644000175000017500000000042111575175611014625 0ustar gimgim 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-0.6.3/data/mods/python/0000755000175000017500000000000011575175611013766 5ustar gimgimlaby-0.6.3/data/mods/python/help0000644000175000017500000000042211575175611014637 0ustar gimgimbasic: 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-0.6.3/data/mods/python/lib/0000755000175000017500000000000011575175611014534 5ustar gimgimlaby-0.6.3/data/mods/python/lib/robot.py0000644000175000017500000000174711575175611016244 0ustar gimgimimport 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-0.6.3/data/mods/python/rules0000644000175000017500000000011711575175611015042 0ustar gimgiminfo: need python run: fetch robot.py dump program.py spawn python program.py laby-0.6.3/data/mods/python/skel0000644000175000017500000000041011575175611014642 0ustar gimgimfrom 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-0.6.3/data/mods/ruby/0000755000175000017500000000000011575175611013426 5ustar gimgimlaby-0.6.3/data/mods/ruby/help0000644000175000017500000000041411575175611014300 0ustar gimgimbasic: 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-0.6.3/data/mods/ruby/lib/0000755000175000017500000000000011575175611014174 5ustar gimgimlaby-0.6.3/data/mods/ruby/lib/robot.rb0000644000175000017500000000147011575175611015650 0ustar gimgimclass 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 tile = perform('look') self.class.const_get tile rescue laby_name_Unknown 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-0.6.3/data/mods/ruby/rules0000644000175000017500000000011411575175611014477 0ustar gimgiminfo: need ruby run: fetch robot.rb dump program.rb spawn ruby program.rb laby-0.6.3/data/mods/ruby/skel0000644000175000017500000000055111575175611014310 0ustar gimgimrequire "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-0.6.3/data/scripts/0000755000175000017500000000000011575175611013172 5ustar gimgimlaby-0.6.3/data/scripts/sound0000755000175000017500000000004611575175611014250 0ustar gimgim#!/bin/sh [ -f "$1" ] && aplay "$1" & laby-0.6.3/data/sound/0000755000175000017500000000000011575175611012633 5ustar gimgimlaby-0.6.3/data/sound/bad.wav0000644000175000017500000002021011575175611014073 0ustar gimgimRIFF 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-0.6.3/data/sound/carry-exit.wav0000644000175000017500000000000011575175611015427 0ustar gimgimlaby-0.6.3/data/sound/drop-no-space.wav0000644000175000017500000000000011575175611016007 0ustar gimgimlaby-0.6.3/data/sound/drop-nothing.wav0000644000175000017500000000000011575175611015750 0ustar gimgimlaby-0.6.3/data/sound/exit-in.wav0000644000175000017500000000000011575175611014715 0ustar gimgimlaby-0.6.3/data/sound/exit.wav0000644000175000017500000003662711575175611014341 0ustar gimgimRIFF=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-0.6.3/data/sound/no-exit.wav0000644000175000017500000000000011575175611014723 0ustar gimgimlaby-0.6.3/data/sound/rock-drop.wav0000644000175000017500000002021011575175611015245 0ustar gimgimRIFF 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-0.6.3/data/sound/rock-in.wav0000644000175000017500000000000011575175611014702 0ustar gimgimlaby-0.6.3/data/sound/rock-take.wav0000644000175000017500000000000011575175611015220 0ustar gimgimlaby-0.6.3/data/sound/start.wav0000644000175000017500000000000011575175611014475 0ustar gimgimlaby-0.6.3/data/sound/take-nothing.wav0000644000175000017500000000000011575175611015730 0ustar gimgimlaby-0.6.3/data/sound/wall-in.wav0000644000175000017500000000000011575175611014703 0ustar gimgimlaby-0.6.3/data/sound/web-in.wav0000644000175000017500000000000011575175611014521 0ustar gimgimlaby-0.6.3/data/sound/web-out.wav0000644000175000017500000000000011575175611014722 0ustar gimgimlaby-0.6.3/data/syntax/0000755000175000017500000000000011575175611013031 5ustar gimgimlaby-0.6.3/data/syntax/ocaml.lang0000644000175000017500000001777611575175611015011 0ustar gimgim text/x-ocaml *.ml;*.mli;*.mll;*.mly (* *)