-   
- public enum TiposDeCasilla 
-      CASILLA_LIBRE = 0  ' son las casillas por donde se puede mover libremente. 
-      CASILLA_PARED = 1 ' son casillas que impien que se pueda mover en esa dirección y que marcan claramente el laberinto. 
-      CASILLA_OBSTACULO = 2 '  son casilas que se comportan como una pared y que requieren cierta acción conocida para acceder a su interior (por ejemplo recoger un objeto dentro del laberinto 
-      CASILLA_PASADIZO_OCULTO = 3 ' es una pared, pero que en determinada situación se comporta como una casilla libre o como una pared 
-      CASILLA_PUERTA = 4 ' una o varias casilas pueden ser elpunto de salida  del laberinto y la entrada a otro laberinto 
-      CASILLA_TESORO = 5 ' una o más casillas pueden representar un tesoro que esdeseable recoger y da puntos. 
-      CASILA_META = 6 ' una o más casillas puede ser el objeto final perseguido en el laberinto. 
- end enum 
-   
- private  Mapa(0 to 24, 0 to 24) as TiposDecasilla  ' define un mapa de 25x25 casillas 
- private Mx as byte ' casilla actual del Mapa en la cordenada X 
- private My as byte ' casila actual del Mapa en la cordenada Y 
- private cX as byte  ' casilla propuesta para moverse a ella en el eje X 
- private cY as byte  ' casilla propuesta para moverse a ella en el eje Y 
-   
- private sub CrearMapaParcial(byval Casillas() as byte) 
-      dim x as byte, y as byte, n as integer 
-   
-      for y =0 to 24 
-           for x =0 to 24 
-                  Mapa(x,y)=casillas(n) 
-                  n=n +1 
-           next 
-     next  
- end Sub     
-   
- private sub CrearMapa 
-    dim c(0 to 624) as byte 
-    dim tc as TiposDeCasilla 
-   
-   ' fija las paredes del laberinto, para ello recorre la matriz casillas, el método para decidir las paredes según tu creas o uses... 
-   tc=   CASILLA_PARED  
-   c(20)=tc: c(120)=tc 
-    for k= 50 to 80 
-        c(k)=tc 
-    next 
-    call CrearMapaParcial(c) 
-   
-    ' procedemos de modo similar para marcar las casillas restantes del tipo que se desee, por ejemplo marquemos ahora las puertas 
-    erase c   ' borramos el contenido previo de la matriz estática 'c()' 
-    tc = CASILLA_PUERTA  
-     c(22)=tc : c(424)= tc : c(375)= tc: c(615) = tc    ' marcamos 4 puertas sobre el mapa 
-    call CrearMapaParcial(c)  ' añadimos las puertas al mapa 
- End Sub 
-   
- Private Sub Picture1_KeyDown(KeyCode As Integer, Shift As Integer) 
-     'Movimiento .. mejor: ¿ puedo moverme ahí ? 
-     Select Case KeyCode 
-          Case vbKeyUp 
-             cX = MX  : cY = My - 1 
-             If CasillaLibre(cx,cy)=true then 
-                   Picture1.Top = Picture1.Top - 10 
-                   mX= cx: My=cY  ' la casilla  propuesta a ser ocupada es ahora la actual, la ocupada  
-             else 
-                beep 
-             end if 
-         Case vbKeyDown 
-             cX = MX  : cY = My + 1 
-             If CasillaLibre(cx,cy)=true then 
-                 Picture1.Top = Picture1.Top + 10 
-                 mX= cx: My=cY  ' la casilla  propuesta a ser ocupada es ahora la actual, la ocupada  
-            else 
-                beep 
-            end if 
-         Case vbKeyLeft 
-             cX = MX - 1  : cY = My 
-             If CasillaLibre(cx,cy)=true then 
-                 Picture1.Left = Picture1.Left - 10 
-                 mX= cx: My=cY  ' la casilla  propuesta a ser ocupada es ahora la actual, la ocupada  
-             else 
-                beep 
-             end if 
-         Case vbKeyRight 
-             cX = MX + 1 : cY = My 
-             If CasillaLibre(cx,cy)=true then 
-                 Picture1.Left = Picture1.Left + 10 
-                 mX= cx: My=cY  ' la casilla  propuesta a ser ocupada es ahora la actual, la ocupada 
-             else 
-                beep  
-             end if 
-     End Select 
- End Sub 
-   
- '  determina que se debe hacer al pretender ocupar dicha casilla y aparte devuelve si la casilla es ocupable o no. 
- private Function CasillaLibre(byval X as byte, byval Y as byte) as boolean    
-        select case Mapa(x,y) 
-               case CASILLA_LIBRE  ' se puede mover a dicha casilla, y no hace nada más 
-                   CasillaLibre = True 
-               case CASILLA_PARED = 1 ' no se puede mover y no hace nada más 
-                   exit function 
-               case CASILLA_OBSTACULO = 2 '  si se tiene un objeto recogido del mapa es libre puede ser cruzada aunque se vea como pared. si no, no 
-                  CasillaLibre = Obstaculos(25) ' si previamente visitamos la casilla 25, (y=0, x=24) allí había un objeto (llave) que permite atravesar el obstáculo. 
-               case CASILLA_PASADIZO_OCULTO = 3 ' a diferencia de obstáculo, es oculto porque no se dibuja de manera especial (como ocurre con abstáculo), sino como pared 
-                   ' si la condición exigida se cumple casillalibre=true, si no false... normalmente si la condición se cumple, en dicho instante que se cumpla podría 
-                   '   abrirse un hueco en la pared, dejando entonces vía libre de acceso... es decir en ese momento un tramo marcado como pared es marcado como libre y dibujado como libre...  
-                  ' en un pasadizo oculto puede haber tesoros extras, no visibles hasta entonces. 
-               case CASILLA_PUERTA = 4 ' una o varias casilas pueden ser elpunto de salida  del laberinto y la entrada a otro laberinto 
-                      call CambiarDeMapa(x,y) ' accedemos a otra 'sala' otro mapa, debemos guardar el mapa actual antes de cargar el nuevo mapa, el punto de entrada son las cordenadas de salida de éste...  
-                      CasillaLibre = True 
-               case CASILLA_TESORO = 5 ' esta casilla contiene un objeto (para el caso, simplificamos a tener una ''lave de activación'' de un obstáculo...  
-                   Obstaculos((y* 25) + x)=true  ' se ha recogido un tesoro en la casilla, en este caso simplemente habilita un obstaculo.... 
-                   ' call RetirarTesoroDelMapa(x,y)    
-                   CasillaLibre = True 
-                case CASILA_META = 6     
-                    Call ContarPuntuacion 
-                    call FinPartida 
-                    End 
-         end select 
- end functon 
-   
-