EL PROGRAMA
El objetivo del juego consiste en ordenar todas las columnas alfabéticamente, con un número de movimientos limitado.
Para ello controlamos un cursor que une dos letras que podemos girar.
Controles:
Usa los cursores para mover el selector.
Pulsa espacio para girar las dos letras del selector. Con cada giro perdemos un movimiento.
Pulsa ENTER para revisar el tablero. Si es incorrecto perderemos un movimiento.
LISTADO
Código: Seleccionar todo
10 DIM A$(8,16)
50 GOSUB 2000
' Lectura del Teclado
100 K$=INKEY$:IF K$="" THEN 100
110 IF K$=" " THEN GOSUB 1000:GOSUB 1500:GOTO 180
120 IF K$=CHR$(13) THEN 1300
130 K=ASC(K$)-27:IF K<1 OR K>4 THEN 100 ELSE GOSUB 1200
140 IF K=1 AND X<15 THEN X=X+1
150 IF K=2 AND X>1 THEN X=X-1
160 IF K=3 AND Y>1 THEN Y=Y-1
170 IF K=4 AND Y<8 THEN Y=Y+1
180 GOSUB 1100
190 IF M>0 THEN 100
' Final de Partida
200 BEEP:BEEP:BEEP:GOSUB 1600:GOTO 50
' Rotar las piezas
1000 B$=A$(Y,X):A$(Y,X)=A$(Y,X+1):A$(Y,X+1)=B$:M=M-1:RETURN
' Poner el cursor
1100 H=(X-1)*2
1110 LOCATE H,Y-1:PRINT "<";A$(Y,X);"=";A$(Y,X+1);">":RETURN
' Borrar el cursor
1200 LOCATE H,Y-1:PRINT " ";A$(Y,X);" ";A$(Y,X+1);" ":RETURN
' Comprobar si se ha completado
1300 F=64:I=0
1310 FOR XX=1 TO 16:B$=CHR$(F+XX)
1320 FOR YY=1 TO 8
1330 IF A$(YY,XX)<>B$ THEN I=I+1
1340 NEXT YY,XX
1350 IF I<>0 THEN BEEP:BEEP:M=M-1:GOTO 190
' Pasar de Nivel
1400 BEEP:S=S+L*100+M*8:L=L+1
1410 GOSUB 1200:GOSUB 2010:GOTO 100
' Mostrar Movimientos
1500 LOCATE 36,7:PRINT USING "###";M;:RETURN
' Pulsar Tecla
1600 IF INKEY$="" THEN 1600 ELSE RETURN
' Presentación
2000 CLS:SCREEN 0,0:L=1:S=0
2010 LOCATE 34,0:PRINT "SCORE"
2020 LOCATE 34,3:PRINT "LEVEL"
2030 LOCATE 34,6:PRINT "MOVES"
2040 LOCATE 8,0:PRINT "*** SORT-COL ***":PRINT
2050 PRINT " CONTROLS: CURSOR = MOVE"
2060 PRINT TAB(15);"SPACE = ROTATE"
2070 PRINT TAB(15);"ENTER = VERIFY":PRINT:PRINT
2080 PRINT " (C) SCAINET SOFT, 2014";
2090 GOSUB 1600
' Inicializar variables del nivel
2100 GOSUB 2500:Y=4:X=8:GOSUB 1100:M=L*8+4
2110 LOCATE 34,1:PRINT USING "#####";S
2120 LOCATE 36,4:PRINT USING "###";L
2130 GOSUB 1500:RETURN
' Inicializar el tablero
2500 FOR X=1 TO 16
2510 FOR Y=1 TO 8:A$(Y,X)=CHR$(64+X):NEXT
2520 NEXT
' Desordenar el tablero
2530 FOR F=1 TO L*8
2540 Y=INT(RND(1)*8)+1:X=INT(RND(1)*15)+1:GOSUB 1000
2550 NEXT
' Mostrar el tablero
2560 FOR Y=1 TO 8
2570 LOCATE 1,Y-1:FOR X=1 TO 16:PRINT A$(Y,X);" ";:NEXT
2580 NEXT
2590 RETURN
APUNTES FINALES
Este es el primer desarrollo que realizo con este equipo y la verdad es que la experiencia ha sido muy satisfactoria.
Para resumirlo en pocas palabras, es como tener un MSX portátil.
Dispone de un Microsoft BASIC ampliado y potente con instrucciones muy interesantes, como por ejemplo las que nos permite controlar un modem.
La pantalla permite 8 filas y 40 columnas, aunque realmente es una pantalla gráfica de 64x240 pixels. Y de una forma sencilla se pueden redefinir los caracteres, lo que amplia sus posibilidades a la hora de programar juegos. Eso si, todo en perfecto monocromo.
Tenemos a nuestra disposición 4 canales de sonido y 3.5 octavas, mediante la instrucción SOUND, o un simple pitido mediante BEEP.
El procesador Intel 80C85 a 2.4MHz queda un poco justo para según que tareas, pero para el juego que presento ha sido más que suficiente.
Y con los 32 KB de RAM de mi equipo no he tenido problemas de memoria.
Para estrenarme con el equipo me planteé un programa sencillo y entretenido para ejercitar un poco el cerebro, pero a medida que he ido aprendiendo más de las posibilidades del equipo (gracias a un PDF del manual original), he visto que para próximos desarrollos puedo ser más ambicioso. Espero que la CPU de la talla.
El listado puede ser adaptado a cualquier BASIC con mínimos cambios., pero para futuras versiones no descarto permitir la rotación horizontal pero también vertical de dos o más letras. Veremos.
No puedo terminar sin decir que este equipo es una delicia. Grandote, buena pantalla, excelente teclado, buen sistema operativo y con muchas posibilidades de ampliación y de conexión de periféricos. Muy recomendable.
Pues nada más, solo me queda…
Invitaros a probarlo