O-Trix by oblo
Moderador: Sir Cilve Sinclair
- oblo
- Sabreman
- Mensajes: 327
- Registrado: Lun Feb 07, 2011 9:53 am
O-Trix by oblo
Hola a todos
Después de varias semanas dándome de cabezazos, al final consigo volver al desarrollo del Spectrum con un clon del Tetris: O-Trix. Está completamente escrito en BASIC, usando principalmente BASIN, BorIDE en la fase final de adaptación del código a la sintaxis del ZX Basic Compiler de Boriel (gracias por la ayuda!) y está compilado con la versión 1.2.8 del mismo.
He ido recogiendo métodos y buenas practicas de todos los sitios que he podido, aunque si alguien se molesta en ver el código, seguro que detecta que he metido alguna 'patada' que otra. Aunque es una versión jugable y testeada, hay algunos bugs y características no implementadas, a saber:
- Las barras de stats azul y verde se superponen, a veces la azul en la verde y otras al revés.
- Cuando se reescribe la pantalla al hacer lineas, aparecen manchas durante el borrado del mismo color de la ultima pieza
- Las piezas son "random". Cargando y ejecutando el juego de la misma forma, el orden de las piezas siempre es el mismo y no tengo claro como hacer un random verdadero. En un PC es fácil porque leyendo la hora, características hardware, etc... lo consigo, pero en un Spectrum no sé como (con Randomizes al inicio del código lo único que consigo es obtener otro set, pero siempre el mismo orden)
No implementado pero espero hacerlo en una futura versión:
- Tecla de caída libre
- Música de fondo para 128k (aunque mientras os recomiendo escuchar http://www.youtube.com/watch?v=hWTFG3J1CP8)
- Posibilidad de almacenar una pieza de reserva
- Modo de juego por fases, como la versión arcade de Atari
- Mejores puntuaciones
Tanto el código como el .TZX lo podéis bajar de http://www.megaupload.com/?d=KIAPM8UU
Saludos y a ver que os parece
Después de varias semanas dándome de cabezazos, al final consigo volver al desarrollo del Spectrum con un clon del Tetris: O-Trix. Está completamente escrito en BASIC, usando principalmente BASIN, BorIDE en la fase final de adaptación del código a la sintaxis del ZX Basic Compiler de Boriel (gracias por la ayuda!) y está compilado con la versión 1.2.8 del mismo.
He ido recogiendo métodos y buenas practicas de todos los sitios que he podido, aunque si alguien se molesta en ver el código, seguro que detecta que he metido alguna 'patada' que otra. Aunque es una versión jugable y testeada, hay algunos bugs y características no implementadas, a saber:
- Las barras de stats azul y verde se superponen, a veces la azul en la verde y otras al revés.
- Cuando se reescribe la pantalla al hacer lineas, aparecen manchas durante el borrado del mismo color de la ultima pieza
- Las piezas son "random". Cargando y ejecutando el juego de la misma forma, el orden de las piezas siempre es el mismo y no tengo claro como hacer un random verdadero. En un PC es fácil porque leyendo la hora, características hardware, etc... lo consigo, pero en un Spectrum no sé como (con Randomizes al inicio del código lo único que consigo es obtener otro set, pero siempre el mismo orden)
No implementado pero espero hacerlo en una futura versión:
- Tecla de caída libre
- Música de fondo para 128k (aunque mientras os recomiendo escuchar http://www.youtube.com/watch?v=hWTFG3J1CP8)
- Posibilidad de almacenar una pieza de reserva
- Modo de juego por fases, como la versión arcade de Atari
- Mejores puntuaciones
Tanto el código como el .TZX lo podéis bajar de http://www.megaupload.com/?d=KIAPM8UU
Saludos y a ver que os parece
- salvacam
- Jack The Nipper
- Mensajes: 174
- Registrado: Mar Dic 29, 2009 11:49 pm
- Ubicación: Granada
- Contactar:
Re: O-Trix by oblo
Me lo acabo de bajar, me lo pasare ahora a la dingoo a ver si lo pruebo antes de dormir.
A ver si puedes explicar como adaptas el codigo que creas en BASIN al ZX Basic, ya que estuve probando algunas cosas escritas en basin y no me las compilaba.
Un saludo, y ya te comentare el juego despues de probarlo.
oblo escribió: Está completamente escrito en BASIC, usando principalmente BASIN, BorIDE en la fase final de adaptación del código a la sintaxis del ZX Basic Compiler de Boriel (gracias por la ayuda!) y está compilado con la versión 1.2.8 del mismo.
A ver si puedes explicar como adaptas el codigo que creas en BASIN al ZX Basic, ya que estuve probando algunas cosas escritas en basin y no me las compilaba.
Un saludo, y ya te comentare el juego despues de probarlo.
- na_th_an
- Nonamed
- Mensajes: 1889
- Registrado: Lun May 07, 2007 10:16 am
- Ubicación: Andalucía
Re: O-Trix by oblo
oblo escribió:- Las piezas son "random". Cargando y ejecutando el juego de la misma forma, el orden de las piezas siempre es el mismo y no tengo claro como hacer un random verdadero. En un PC es fácil porque leyendo la hora
En Spectrum puedes hacerlo de forma parecida. Cuando enciendes el Spectrum se inicia un timer que debería estar activo si no has cambiado la rutina de servicio de interrupción que viene por defecto (supongo que no lo has hecho). Hay tres variables del sistema que dan el valor de 24 bits de este timer. Puedes usarlo en un RANDOMIZE. En realidad, creo que te será suficiente usando el valor del byte menos significativo:
Código: Seleccionar todo
Randomize Peek 23672
Más información sobre las variables del sistema en Google, por ejemplo aquí: http://www.users.globalnet.co.uk/~jg27p ... r03_97.htm
Otra cosa que puedes hacer para tener más aleatoriedad es "depender" de la respuesta del usuario. Te explico: probablemente (no he mirado el código) calculas un número aleatorio cada vez que vas a sacar una nueva pieza. Por tanto, siempre salen las mismas piezas para un mismo Randomize, es lógico. Lo que puedes hacer es calcular un número aleatorio cada vuelta del bucle principal del juego. De este modo se está avanzando en la serie prefijada de números "pseudoaleatorios" un número indeterminado de veces antes de que tengas que "sacar" la siguiente pieza. No sé si me explico
salvacam escribió:A ver si puedes explicar como adaptas el codigo que creas en BASIN al ZX Basic, ya que estuve probando algunas cosas escritas en basin y no me las compilaba.
Un saludo, y ya te comentare el juego despues de probarlo.
No hay que hacer demasiados cambios, en realidad. Si tu código no está cuajado de READ y de DATA, por supuesto. Entre otras cosas, lo más gordo es "terminar" los IFs con un End If, y poco mas:
Código: Seleccionar todo
1030 IF a = 3 THEN PRINT "Hola": GOTO 20
se cambiaría por
Código: Seleccionar todo
1030 If a = 3 Then Print "Hola": Goto 20: End If
Aunque lo suyo es programar directamente en el dialecto (casi 100% BASIC estándar + idiosincrasias spectrumiles) y tener código mucho más legible:
Código: Seleccionar todo
If a = 3 Then
Print "Hola"
Goto inicio
End If
- JBGV
- Manic Miner
- Mensajes: 279
- Registrado: Vie Feb 11, 2011 9:16 am
Re: O-Trix by oblo
Hola, ya he estado probando el juego, creo que está muy logrado.
Con respecto a los números aleatorios, para que no salga siempre la misma secuencia, yo simplemente pongo como semilla
Creo que esto hace que los RND salgan según el tiempo que ha estado encendido el ZX (creo).
No se si es esto cierto o no, pero el caso es que parece funcionar.
Con respecto a los números aleatorios, para que no salga siempre la misma secuencia, yo simplemente pongo como semilla
Código: Seleccionar todo
RANDOMIZE 0
Creo que esto hace que los RND salgan según el tiempo que ha estado encendido el ZX (creo).
No se si es esto cierto o no, pero el caso es que parece funcionar.
- na_th_an
- Nonamed
- Mensajes: 1889
- Registrado: Lun May 07, 2007 10:16 am
- Ubicación: Andalucía
Re: O-Trix by oblo
JBGV escribió:Hola, ya he estado probando el juego, creo que está muy logrado.
Con respecto a los números aleatorios, para que no salga siempre la misma secuencia, yo simplemente pongo como semillaCódigo: Seleccionar todo
RANDOMIZE 0
Creo que esto hace que los RND salgan según el tiempo que ha estado encendido el ZX (creo).
No se si es esto cierto o no, pero el caso es que parece funcionar.
Esto es cierto en el intérprete de BASIC (RANDOMIZE = RANDOMIZE 0 y emplean el valor del timer como semilla)... Pero ¿es cierto en el compilador ZX Basic?
- JBGV
- Manic Miner
- Mensajes: 279
- Registrado: Vie Feb 11, 2011 9:16 am
Re: O-Trix by oblo
salvacam escribió:
A ver si puedes explicar como adaptas el codigo que creas en BASIN al ZX Basic, ya que estuve probando algunas cosas escritas en basin y no me las compilaba.
Un saludo, y ya te comentare el juego despues de probarlo.
Además de los "END IF", yo al principio tuve problemas con las matrices, las usaba antes de definirlas.
A mi me ayudo mucho en este foro el tema "Un compilador de ZX Spectrum BASIC" y el foro de la propia página de Boriel
http://www.boriel.com/forum/zx-basic-compiler/
Esto es cierto en el intérprete de BASIC (RANDOMIZE = RANDOMIZE 0 y emplean el valor del timer como semilla)... Pero ¿es cierto en el compilador ZX Basic?
Hola Na_th_an, yo creo que con el compilador también funciona, de hecho lo he usado en los dos juegos porque veía que siempre salía la misma secuencia y al meter el RANDOMIZE 0 se corregía.
- na_th_an
- Nonamed
- Mensajes: 1889
- Registrado: Lun May 07, 2007 10:16 am
- Ubicación: Andalucía
Re: O-Trix by oblo
Perfecto, pues duda resuelta Había puesto el código para hacerlo de forma explícita porque no estaba seguro de que Boriel hubiese seguido la misma implementación para RANDOMIZE (o si usaba la rutina de la ROM o no) y este comando no está documentado aún en la wiki.
- salvacam
- Jack The Nipper
- Mensajes: 174
- Registrado: Mar Dic 29, 2009 11:49 pm
- Ubicación: Granada
- Contactar:
Re: O-Trix by oblo
Ya he conseguido hacerlo funcionar, con paciencia me leere la wiki del compilador.http://www.boriel.com/wiki/en/index.php/ZXBasic
- oblo
- Sabreman
- Mensajes: 327
- Registrado: Lun Feb 07, 2011 9:53 am
Re: O-Trix by oblo
Gracias por lo del RANDOMIZE 0, aunque en un emulador se nota menos (siempre abro el .tzx directamente, se abre el emulador, pulso S y siempre se repite el set la primera vez -si pulso A obtengo otro set pero misma secuencia) así que la manera que hay fiable es no solo hacer el RANDOMIZE 0, si no esperar un tiempo a arrancar el juego y no hacerlo a toda velocidad.
No obstante, he metido el cambio y también me han 'soplado' el fallo que hacía que al borrar líneas se viese unas manchas del mismo color que la última pieza, así que aquí os dejo la versión revisada: http://www.megaupload.com/?d=K2NIHW1Y
JBGV: como te ha dicho na_th_an no es complicado hacer el cambio de código para adaptarlo al compilador ZX Basic; lo próximo que haga quiero hacerlo directamente pensando el compilador, y así usar las ventajas de los nuevos comandos que trae.
salu2
No obstante, he metido el cambio y también me han 'soplado' el fallo que hacía que al borrar líneas se viese unas manchas del mismo color que la última pieza, así que aquí os dejo la versión revisada: http://www.megaupload.com/?d=K2NIHW1Y
JBGV: como te ha dicho na_th_an no es complicado hacer el cambio de código para adaptarlo al compilador ZX Basic; lo próximo que haga quiero hacerlo directamente pensando el compilador, y así usar las ventajas de los nuevos comandos que trae.
salu2
- salvacam
- Jack The Nipper
- Mensajes: 174
- Registrado: Mar Dic 29, 2009 11:49 pm
- Ubicación: Granada
- Contactar:
Re: O-Trix by oblo
Buenas:
Ayer me di cuenta que cuando cambias de velocidad, al terminar la partida aunque en el menu cambia la velocidad en el juego sigue a la misma velocidad.
Despues probare la nueva versión.
Un saludo.
Ayer me di cuenta que cuando cambias de velocidad, al terminar la partida aunque en el menu cambia la velocidad en el juego sigue a la misma velocidad.
Despues probare la nueva versión.
Un saludo.
- oblo
- Sabreman
- Mensajes: 327
- Registrado: Lun Feb 07, 2011 9:53 am
Re: O-Trix by oblo
Pues es verdad; aunque le digo que imprima el valor 'velocidad' que haya en ese momento, pinta 5 y el valor real no lo coge. Otra cosa a repasar, aunque esta es sencilla
salu2
salu2
- na_th_an
- Nonamed
- Mensajes: 1889
- Registrado: Lun May 07, 2007 10:16 am
- Ubicación: Andalucía
Re: O-Trix by oblo
oblo escribió:Gracias por lo del RANDOMIZE 0, aunque en un emulador se nota menos (siempre abro el .tzx directamente, se abre el emulador, pulso S y siempre se repite el set la primera vez -si pulso A obtengo otro set pero misma secuencia) así que la manera que hay fiable es no solo hacer el RANDOMIZE 0, si no esperar un tiempo a arrancar el juego y no hacerlo a toda velocidad.
No obstante, he metido el cambio y también me han 'soplado' el fallo que hacía que al borrar líneas se viese unas manchas del mismo color que la última pieza, así que aquí os dejo la versión revisada: http://www.megaupload.com/?d=K2NIHW1Y
JBGV: como te ha dicho na_th_an no es complicado hacer el cambio de código para adaptarlo al compilador ZX Basic; lo próximo que haga quiero hacerlo directamente pensando el compilador, y así usar las ventajas de los nuevos comandos que trae.
salu2
Prueba lo que te he dicho. Simplemente añade un Let X = Rnd en medio del bucle del juego y verás como se aleatoriza mucho más.
- oblo
- Sabreman
- Mensajes: 327
- Registrado: Lun Feb 07, 2011 9:53 am
Re: O-Trix by oblo
Cierto, muchas gracias por el truco
salu2
salu2
-
- rst 0
- Mensajes: 24
- Registrado: Jue May 26, 2011 9:51 am
- Ubicación: Sevilla
- Contactar:
Re: O-Trix by oblo
Me ha parecido un tetris muy bueno y tecnicamente muy bien resuelto. El modo avanzado es una putadilla
Gracias por facilitar la fuente en basic... me va a venir muy bien para seguir aprendiendo...
Por cierto, cuando puedas, dame un toque y te paso la documentación que utilicé para meterle musica a mi "Aahku" (que mal suena eso ), por si sigues con la idea de ponerle musica
Gracias por facilitar la fuente en basic... me va a venir muy bien para seguir aprendiendo...
Por cierto, cuando puedas, dame un toque y te paso la documentación que utilicé para meterle musica a mi "Aahku" (que mal suena eso ), por si sigues con la idea de ponerle musica
Página web (85% operativa): http://kabutofactory.netne.net
Perfil de Facebook: http://www.facebook.com/pages/Kabuto-Fa ... 0590303772
Juegos en WOS: http://www.worldofspectrum.org/infoseek ... loadpics=1
Perfil de Facebook: http://www.facebook.com/pages/Kabuto-Fa ... 0590303772
Juegos en WOS: http://www.worldofspectrum.org/infoseek ... loadpics=1
- oblo
- Sabreman
- Mensajes: 327
- Registrado: Lun Feb 07, 2011 9:53 am
Re: O-Trix by oblo
Gracias, fue un método rápido de 'suplantar' lo de las fases Y sobre la música te acabo de mandar un privado
salu2
salu2
¿Quién está conectado?
Usuarios navegando por este Foro: Google [Bot] y 7 invitados