Você está na página 1de 8

Lightbot

Presentamos el juego Lightbot. En cada nivel el objetivo es lograr que el robot prenda todas las
luces (cuadrados azules en el piso). Nos brindan una serie de acciones en forma de conos
(similar a los bloques en Scratch) y una grilla en donde ubicarlas. Adems nos dan espacio para
definir dos procedimientos (en el juego los llama funciones), aunque en los primeros niveles no
necesitamoshacerusodeesto.

Es fcil avanzar hasta el nivel 5 inclusive, pero en el nivel 6 ya necesitamos usar las funciones
queproveeeljuego,porfaltadeespacio.

As, llegamos a este punto sin usar funciones, y podemos ver que no alcanzan los espacios de
laseccinMainmethod:

Aquintroducimoselconceptodeprocedimiento,ofuncin,comolollamaneneljuego.

Los grupos de casilleros llamados Funct. 1 y Funct. 2, forman un espacio que nos da el
juego para extender las acciones que puede realizar el robot. As como en Scratch nos
permitan crear nuevos bloques, en este juego nos permiten definir dos acciones nuevas,
aunque para esto nos dan un espacio limitado, ya que es parte del juego pensar la forma de
ahorrarnoscasilleros.

Entonces, podemos usar el espacio f1, por ejemplo. Al usarla le decimos al robot que realice
todoloquehayamosdefinidoenf1:

Enestecasoelrobotsemovertrespasosadelante,yaquef1,significaavanzartresveces.

Sitenemosentonces

Elrobotsevaamoverseisveceshaciadelante,yaquedecimosquehagadosf1.

Ahoraquesabemosesto,podemosvolveralproblemaenelquenosquedamossinceldas:

Una opcin para seguir indicando cosas al robot, resulta de continuar lo que har el robot
diciendof1:

Apartirdeestopodemosseguirhastacompletartodof1:

Comonosquedamossinespacioseguimosenf2loquerestara:

En esta solucin en realidad no se pens en dividir inteligentemente el problema. Si bien


llegamos a prender todas las luces, con esta forma de utilizar las funciones no vamos a llegar
muy lejos con los niveles ms complejos, dado que en algunos casos ni siquiera alcanzan las
celdasusandolasfunciones1y2.

Enelsiguientenivelnosvamosaencontrarconlosiguiente:

Siintentamosrepetirloquehicimosenelnivelanterior,vaasucederloesto:

Esto es exactamente a lo que nos referimos en prrafos anteriores. Intentamos usar las
funciones para extender lo que podamos escribir, pero eso no fue suficiente. Por el contrario,
debemos pensar mejor para qu usamos las funciones. Cada funcin en realidad tiene que
cumplir con un propsito bien definido, y se usada en secuencias de acciones que se repiten
muchas veces dentro del programa. En este caso podemos ver algo que se repite demasiado:

avanzaryprenderluz.

Teniendo en cuenta esto vamos a armar otras funciones. Primero vamos a borrar todo lo que
hicimoshastaahora,yarmarunafuncinqueseaexactamenteavanzaryprenderluz:

Contando con esta funcin, cada vez que necesitemos avanzar y prender luz, vamos a decir
simplementef1:

Lo que podemos notar rpidamente, es que podemos repetir lo que hicimos para la primera fila
deluces,ahoraparalasegunda.Peroparaeso,podemosutilizarf2:

Entonces,simplementehacemoslosiguienteparacompletartodoelnivel:

Losprximosnivelesrequierendeestahabilidadpararesolverse.

Elmtododepartirunproblemagrandeenpartesmspequeasseconoceenprogramacin
comodivisinensubtareas.Estoconsisteen:
Identificarpequeastareasfcilmenteexplicablesalacomputadorayasignarlesun
buennombreparaqueseentiendaqurepresentan
Combinarestaspequeastareasparalograrresolverelproblema

Você também pode gostar