• Inicio
  • Introducción a Karel
  • Mundo de Karel
  • Barra de mensajes
  • Editor de Karel
  • Editor de Karel

    Editor de Karel

    Es el código donde irán las instrucciones que seguirá Karel, en este caso, explicaré las instrucciones utilizando la sintaxis java.

    Las instrucciones se escribe dentro de "program" y generalmente siguen el siguiente patrón: Instrucción();

    Expresiones

    move();

    class program { program () { move(); turnoff(); } }

    Karel se moverá una vez por cada move.

    putbeeper();

    class program { program () { putbeeper(); turnoff(); } }

    Karel, si tiene beepers en su mochila, pondrá un beeper en la casilla donde está parado.

    pickbeeper();

    Karel, si está sobre un beeper, lo va a agarrar y lo va a guarder en su mochila.

    class program { program () { pickbeeper(); turnoff(); } }

    turnleft();

    Karel girará a la izquierda una vez, y lastimosamente, no existe un turnright, por lo cual, se tendría que girar 3 veces a la izquierda.

    class program { program () { turnleft(); turnoff(); } }

    turnoff();

    Será la última instrucción que seguirá Karel, donde se apagará y no podrá hacer otra instrucción luego de apagarse.

    Función Iterate(#)

    Sirve para repetir más de una vez una opción.

    Por ejemplo, en vez de tener que escribir tres veces turnleft, para que Karel gire a la derecha, se puede poner de la siguiente forma para que repita la instrucción de girar a la izquierda tres veces seguidas:

    class program { program () { iterate(3) turnleft(); turnoff(); } }

    También puede usarse para que se repita un bloque de instrucciones, utilizando {}, poniendo dentro el bloque de instrucciones que se desea que se repita:

    class program { program () { iterate(5) { pickbeeper(); move(); } turnoff(); } }

    Así, Karel tomará un beeper del mundo y se moverá una casilla 5 veces.

    If/Else y While

    Funciones booleanas

    En general, son funciones que sirven para hacer más complejo el código de Karel, ya que con estas se pueden hacer infinidad de cosas, ya que permitirán que el código no tenga que modificarse siempre cuando la posición y orientación inicial de Karel se modifique.

    Es decir, que utilizando estas funciones, un mismo código servirá para que Karel cumpla un mismo propósito sin importar donde inicie, estas funciones son:

    frontIsClear

    Significa que, si el frente de Karel está libre, realizará siempre o dejará de hacer alguna expresión o instrucción.

    frontIsBlocked

    Significa que, si el frente de Karel está bloqueado, es decir, hay algún muro en frente de él, realizará siempre o dejará de hacer alguna expresión o instrucción.

    leftIsClear

    Significa que, si la izquierda de Karel está libre, realizará siempre o dejará de hacer alguna expresión o instrucción.

    leftIsBlocked

    Significa que, si la izquierda de Karel está bloqueada, es decir, hay algún muro a la izquierda de él, realizará siempre o dejará de hacer alguna expresión o instrucción.

    rightIsClear

    Significa que, si la derecha de Karel está libre, realizará siempre o dejará de hacer alguna expresión o instrucción.

    rightIsBlocked

    Significa que, si la derecha de Karel está bloqueada, es decir, hay algún muro a la derecha de él, realizará siempre o dejará de hacer alguna expresión o instrucción.

    nextToABeeper

    Significa que, si Karel está cerca (parado) de un conjunto de beepers, incluso que sea solamente uno, realizará o dejará de hacer una instrucción.

    notNextToABeeper

    Significa que, si Karel no está cerca (parado) de un conjunto de beepers, realizará o dejará de hacer una instrucción.

    anyBeepersInBeeperBag

    Significa que, si Karel tiene uno o más beepers en su mochila, realizará o dejará de hacer una instrucción.

    noBeepersInBeeperBag

    Significa que, si Karel no tiene ningún beeper en su mochila, realizará o dejará de hacer una instrucción.

    facingNorth

    Significa que, si Karel está mirando hacia el norte del mundo, realizará o dejará de hacer alguna instrucción.

    facingSouth

    Significa que, si Karel está mirando hacia el sur del mundo, realizará o dejará de hacer alguna instrucción.

    facingEast

    Significa que, si Karel está mirando hacia el este del mundo, realizará o dejará de hacer alguna instrucción.

    facingWest

    Significa que, si Karel está mirando hacia el oeste del mundo, realizará o dejará de hacer alguna instrucción.

    notFacingNorth

    Significa que, si Karel no está mirando hacia el norte del mundo, realizará o dejará de hacer alguna instrucción.

    notFacingSouth

    Significa que, si Karel no está mirando hacia el sur del mundo, realizará o dejará de hacer alguna instrucción.

    notFacingEast

    Significa que, si Karel no está mirando hacia el este del mundo, realizará o dejará de hacer alguna instrucción.

    notFacingWest

    Significa que, si Karel no está mirando hacia el oeste del mundo, realizará o dejará de hacer alguna instrucción.

    If y Else

    El If indica que, si la función boleana resulta ser verdadera dentro de las condiciones de Karel dentro del mundo, realizará una instrucción o varias instrucciones una vez. En caso de ser falsa, no se realizarán las instrucciones, pero si se agrega Else, realizará otra serie de instrucciones en caso de ser falsa la función boleana

    class program { program () { if(frontIsClear) { move(); turnleft(); } else { turnleft(); move(); } turnoff(); } }

    Por ejemplo, si en el frente de Karel no hay ningún muro, se moverá y girará a la izquierda, pero si en el frente de Karel hay un muro, girará a la izquierda y se moverá.

    While

    El While, hace lo mismo que el if, pero mientras la función boleana sea verdadera, la serie de instrucciones se realizará infinitamente.

    class program { program () { while(frontIsClear) { move(); turnleft(); } turnoff(); } }

    Por ejemplo, en este caso, Karel se moverá y girará a la izquierda infinitamente hasta que la función boleana sea falsa, es decir, hasta que su frente esté bloqueada por un muro.

    Hay que tener cuidado con el While, ya que en algunas ocasiones, puede que Karel termine en un ciclo infinito.

    && y ||

    El &&, sirve para juntar varias funciones boleanas, y, en caso de utilizar un if o un while, todas las funciones boleanas tienen que ser verdaderas, porque en caso de que una sea falsa, todas serán falsas.

    El ||, sirve para indicar un “o”, es decir, con que una función boleana sea verdadera, todas las funciones serán verdaderas, incluso, si una es verdadera y todas las demás son falsas, se harán las instrucciones.

    Define o Void

    El define se escribe siempre antes del program y después del class program, y sirve para crear nuevas instrucciones, por ejemplo, el turnright no existente.

    class program { define turnright() { iterate(3) turnleft(); } program () { turnright(); turnoff(); } }

    Gracias a esto, se pueden crear nuevas instrucciones no existentes dentro del programa de Karel, que podrán ser de gran ayuda