SORT-COL para NEC-8201A

Foro dedicado a la programación en todo tipo de sistemas clásicos.
dancresp
Amiga 1200
Amiga 1200
Mensajes: 1393
Registrado: 23 Dic 2008, 17:53
Sistema Favorito: MSX
primer_sistema: ZX81
Primera consola: Atari 2600
Gracias dadas: 3 veces
Gracias recibidas: 20 veces

SORT-COL para NEC-8201A

Mensajepor dancresp » 10 Feb 2014, 23:53

DSC_0167.jpg
DSC_0167.jpg (44 KiB) Visto 2169 veces


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

DSC_0165.jpg
DSC_0165.jpg (40.32 KiB) Visto 2169 veces

DSC_0167.jpg
DSC_0167.jpg (44 KiB) Visto 2169 veces

DSC_0169.jpg
DSC_0169.jpg (47.52 KiB) Visto 2169 veces

DSC_0170.jpg
DSC_0170.jpg (42.3 KiB) Visto 2169 veces

DSC_0173.jpg
DSC_0173.jpg (99.17 KiB) Visto 2169 veces
Buscando la IP de la W.O.P.R.

Volver a “Programación”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados