En este juego se ejecuta en cada ciclo de juego la lógica de chequeo de comprobación de un solo punto de control o "nodo" de la trayectoria, que es aquel lugar donde las naves pueden cambiar de dirección. Se van comprobando secuencialmente dichos nodos, pero solo uno en cada ciclo de juego, de modo que solo dos naves pueden cambiar de dirección simultáneamente en el mismo fotograma. Como podemos apreciar, no es una limitación importante y el resultado final es aceptable a pesar de que estamos ejecutando todo desde BASIC.
Cada instrucción es muy costosa en BASIC, pero programando con esta técnica logramos controlar la lógica de 12 naves enemigas + 3 disparos + nuestra nave, un total de 16 sprites con vida propia pero con una muy reducida lista de instrucciones en cada ciclo.
2999' fase 4 ----trayectorias en dos hileras simetricas configurables por k(i), kx(i),ky(i). se separan de 10 en 10 en x -------------
3000 totaln=12: blandos=31-totaln:duros=100: ini=31-totaln:|COLSP,32,ini,30
3010 for i=ini to 24
3020 |SETUPSP,i,9,navemala1:|SETUPSP,i,7,0:|SETUPSP,i,5,ky(0):|SETUPSP,i,0,&x01011:|SETUPSP,i,6,kx(0)
3021 |SETUPSP,i+6,9,navemala1:|SETUPSP,i+6,7,0:|SETUPSP,i+6,5,ky(0):|SETUPSP,i+6,0,&x01011:|SETUPSP,i+6,6,-kx(0)
3030 |LOCATESP,i,-30-(i-ini)*20,80+(i-ini)*10:|LOCATESP,i+6,-30-(i-ini)*20,0-(i-ini)*10-6:'6 es el ancho en bytes de la navemala y 26 el alto
3040 |STARS:gosub 500:gosub 750:|AUTO,7:|AUTO,8:|AUTO,9:|PRINTSPALL,1,0
3050 next
3060 ciclo=0: t=0: col%=32:yd%=200
3100 gosub 500: gosub 750
3109 |AUTOALL:|PRINTSPALL:|STARS
3120 |COLSPALL: if sp<32 then if sp=31 then gosub 300:goto 3000 else gosub 770
3130 ciclo=ciclo+1: if ciclo =10 then ciclo=0:t=t+1:m=inim
3131 if m=finm+1 then 3100
3132 IF t>=k(m) AND t<k(m)+6 THEN i= t-k(m)+ini:|SETUPSP,i,5,ky(m):|SETUPSP,i,6,kx(m):|SETUPSP,i+6,5,ky(m):|SETUPSP,i+6,6,-kx(m):IF m=finm THEN finm=m+1:inim=finm-3 ELSE ELSE IF t>=k(12) THEN RETURN
3133 m=m+1:goto 3100
Interesante. Ahora que tenga tiempo en Semana Santa lo pruebo. Este básica es para comodore?
ResponderEliminarHola
EliminarLa técnica de "lógicas masivas" se puede aplicar a cualquier lenguaje de programación y en cualquier ordenador, incluido por supuesto el commodore 64 (gran máquina). En concreto, el ejemplo que he puesto es de Amstrad CPC, pero se podría aplicar la misma filosofia en un commodore 64
En un futuro cercano tengo intención de migrar la librería 8BP tanto a ZX spectrum como a otros sistemas (MSX y C64). He empezado por el Amstrad por cuestiones nostálgicas pero en realidad me encanta cualquier máquina de 8 bits.