Lo primero es descargarse el compilador, no lleva nada mas que una instalación:
http://www.second-dimension.com/second-basic
Aqui una página que yo utilizo de guía donde explica los comandos
http://devster.monkeeh.com/sega/basiega ... mmand_poke
Lo bonito de todo esto es que programar en Second Basic es como programar en el basic de Spectrum, solo que para una Megadrive, donde todo va tan rápido y fluido que te kagas
Empezando a construir el edificio por el techo:
¿cómo creo colisiones en un escenario?
Muy fácil. Muchos y/o la gran mayoría de juegos, para crear colisiones utilizan una pantalla "virtual" o "no visible". Por ejemplo, lo hace el MsPACMAN de ZX Spectrum.
vamos a crear un escenario de colisiones en un zx spectrum
Código: Seleccionar todo
10 DIM a$(10,10)
20 RESTORE
30 FOR F=1 TO 10
40 READ A$(F)
50 NEXT F
100 DATA "1111111111"
101 DATA "1000300001"
102 DATA "1000000001"
103 DATA "1000000002"
104 DATA "1001111111"
105 DATA "1000000001"
106 DATA "1300000001"
107 DATA "1111111001"
108 DATA "1000000001"
109 DATA "1111111111"
120 LET X=2
122 LET Y=9
200 REM DO
210 LET K$= INKEY$
220 IF K$="Q" AND A$(Y-1,X) <> "1" THEN LET Y=Y-1
222 IF K$="A" AND A$(Y+1,X) <> "1" THEN LET Y=Y+1
224 IF K$="O" AND A$(Y,X-1) <> "1" THEN LET X=X-1
226 IF K$="P" AND A$(Y,X+1) <> "1" THEN LET X=X+1
230 REM COLISIONES
240 IF a$(Y,X)="0" THEN REM ESPACIO VACIO
242 IF a$(Y,X)="3" THEN GOSUB 3000 : REM EXPLOTA,
242 IF a$(Y,X)="2" THEN GOSUB 3100 : REM PUERTA, PASA DE PANTALLA
400 GOTO 210 : REM CIERRA LOOP
3000 STOP : REM AQUI RUTINA DE PERDER
3100 STOP : REM AQUI RUTINA DE PASAR A OTRA HABITACION
Ok, hagamos que imprima así podemos verlo funcionar
Código: Seleccionar todo
10 DIM a$(10,10)
20 RESTORE 100 : CLS : PRINT
30 FOR F=1 TO 10
40 READ A$(F)
45 PRINT A$(F)
50 NEXT F
100 DATA "1111111111"
101 DATA "1000300001"
102 DATA "1000000001"
103 DATA "1000000002"
104 DATA "1001111111"
105 DATA "1000000001"
106 DATA "1300000001"
107 DATA "1111111001"
108 DATA "1000000001"
109 DATA "1111111111"
120 LET X=2
122 LET Y=9
200 REM DO
210 LET K$= INKEY$
220 IF K$="Q" AND A$(Y-1,X) <> "1" THEN GOSUB 4010 : LET Y=Y-1 : GOSUB 4000
222 IF K$="A" AND A$(Y+1,X) <> "1" THEN GOSUB 4010 : LET Y=Y+1 : GOSUB 4000
224 IF K$="O" AND A$(Y,X-1) <> "1" THEN GOSUB 4010 : LET X=X-1 : GOSUB 4000
226 IF K$="P" AND A$(Y,X+1) <> "1" THEN GOSUB 4010 : LET X=X+1 : GOSUB 4000
230 REM COLISIONES
240 IF a$(Y,X)="0" THEN REM ESPACIO VACIO
242 IF a$(Y,X)="3" THEN GOSUB 3000 : REM EXPLOTA
242 IF a$(Y,X)="2" THEN GOSUB 3100 : REM PUERTA, PASA DE PANTALLA
400 GOTO 210 : REM CIERRA LOOP
3000 PRINT AT 20,0;"TOCASTE UNA MINA" : STOP
3100 PRINT AT 20,0;"OTRA HABITACION" : STOP
4000 PRINT AT Y,X ; INVERSE 1 ;"X" : RETURN
4010 PRINT AT Y,X ; INVERSE 0 ;"0" : RETURN
Entonces, verás que te mueves y que colisionas en un escenario invisible, donde hay un par de trampillas invisibles, intentando llegar a una puerta invisible.
De este mismo modo se crean los mapas de colisiones en la gran mayoría de los juegos, o sea que no es que colisionen con "lo que estas viendo en pantalla", sino que colisiona con algo invisible, algo virtual, pero que coincide de algun modo con lo que estás viendo.
En la SEGA MEGADRIVE sucede exactamente igual... pero vais a decirme: "En el spectrum estas moviendo caracteres de a 8 pixeles mientras que en la megadrive los sprites se mueven de a 1 pixel. ¿cómo le hago?"
Primero hay que explicar que es un sprite, cuantos planos tiene la Megadrive, como imprimo en ella, etc.
...en unas horas lo continuo