Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
 

Autor Hilo: Mazmorras 2020 - Concurso BASIC Spectrum ZX (Leído 1427 veces)

briefer

  • Moderador global
  • T-500
  • Mensajes: 957

Zael

  • T-600
  • Mensajes: 6 409
  • El Caloret

No es tu culpa, son esas paginas de mierda que nos engañan con servicios gratis, lo raro es que esa pagina no inicia nunca la descarga al pinchar, solo dandole al guardar como, pero siempre abre una pagina de spam malicioso


Aaah sorry @Gamemaster, ya entiendo a qué te refierías, las páginas porculeras esas. Pensaba que estabas intentando boicotearnos el juego. Te pido disculpas y te asciendo de "troll bonusero de las cavernas" a "montaraz del BASIC". Acepta este humilde pan de lembas como muestra de desagravio...  ;)













Aquí pongo un pequeño video de cómo se mueve, no tiene los gráficos pero para este ejemplo no importa mucho



A mi esto me parece ya toda una heroicidad del BASIC. Se ve muy fluido, oiga...


P.D.: ¿Qué programa usas para hacer esos .gif que parecen vídeos?
última modificación: 21 Noviembre 2020, 18:14:46 por Zael





jose365

  • T-1
  • Mensajes: 92
Se llama snapshoter
Es un programa muy sencillo y es la primera ver que lo uso.

Puedes definir el área de pantalla que quieres grabar el video, pero ya no te deja cambiar el área de la pantalla, haber que borrar el fichero de preferencias para hacerlo.

También puedes hacer capturas de pantalla y permite usar portapapeles múltiple

jmpuk

  • T-500
  • Mensajes: 1 087
Me iba a ofrecer a echar una mano pero Mr Rayo Zael que maquina de los sprites! Por cierto he extraviado el programa aquel que convertia fotos a pantallas de colores del spectrum: era bmp2scr??
De animaciones yo ni papa.

Ideas para el juego

https://youtu.be/aLkYg7LakGA




Enviado desde mi SM-G950F mediante Tapatalk
última modificación: 21 Noviembre 2020, 23:45:18 por jmpuk

briefer

  • Moderador global
  • T-500
  • Mensajes: 957
El basinc tiene un módulo que importa de jpg png a screens de spectrum

Zael

  • T-600
  • Mensajes: 6 409
  • El Caloret


Me iba a ofrecer a echar una mano pero Mr Rayo Zael que maquina de los sprites!


No, no... ¿pero tú has visto esos orcos y el Balrog?...




... ¡si parecen conejitas de Playboy! Yo aún estoy flipando con tus Nadal & Federer "NES style" @jmpuk, un Balrog con ese estilo no estaría naaaaada mal. Los míos eran de ejemplo, son MUY mejorables.

P.D.: Por cierto que tú también supiste hacer moverse a los sprites 4x4 de aquellos tenistas, eso podría ser muy útil para mover al Balrog cual toro manso al redil.









Por cierto he extraviado el programa aquel que convertia fotos a pantallas de colores del spectrum: era bmp2scr??

El de pasar los gráficos pixeladotes 64*40 pixels a código .BAS era el Blockygraph de @na_th_an. El de hacer pantallas de carga .scr y luego pasarlas a .tap y demás sí es el BMP2SCR...









El basinc tiene un módulo que importa de jpg png a screens de spectrum


Pues habrá que probarlo... ¿es el SCREEN$ Paintbox, no?





jose365

  • T-1
  • Mensajes: 92
El Balrog necesitas poca animación porque sólo tendrá que lanzar rocas... Como el donkey Kong jace con los barriles



jmpuk

  • T-500
  • Mensajes: 1 087
Paso el algoritmo de moviemiento en cuanto tenga un rato y lo encuentre pero me parpadea y va un poco lento (en todas las direcciones)

Ahi os dejo una idea para el juego, es como el hunchback pero en version troleo.... al inventor no habría que meterlo en la carcel, habría que darle una medalla, que cachondo!


https://youtu.be/aLkYg7LakGA


Enviado desde mi SM-G950F mediante Tapatalk
última modificación: 22 Noviembre 2020, 01:11:57 por jmpuk

jmpuk

  • T-500
  • Mensajes: 1 087
Aqui os dejo un par de versiones : tengo un cacao hoy en dia entre lo que leo, lo que hice y los algoritmos del curso de Asteroid que mencione en otro post que no se cual va mejor ... será cuestion de probar con los enemigos.  Yo creo que corta pega en basinc va bien (edito: lo acabo de probar, copiais el texto y lo pegais en basinc y vale)

En este habría que cargar los UDGs en h,i,j,k: tiene posibilidad de animacion con s (esta basado en idea de Radastan si no recuerdo mal o el ejemplo del libro del Spectrum + 2 que me paso compi Kerl) y control de colisiones al principio para objetos/enemigos (seria cuestion de poner ORs) y durante el movimiento si no ve el fondo definido no se mueve (al actualizar coord controla que haya colision con 0=fondo y tinta negra).

10 PAPER 0: INK 0: BRIGHT 0: BORDER 0: CLS : LET x=13: LET y=6: LET s=1\#013410 PRINT AT y,x; INK 5;"\h\i": PRINT AT y+1,x; INK 5;"\j\k"\#013498 LET i$=INKEY$: IF (ATTR (y-1,x+1)=70 OR ATTR (y+2,x+1)=70 OR ATTR (y,x-1)=70 OR ATTR (y,x+3)=70) THEN GO TO 600\#013499 GO TO 500+(i$="q")+2*(i$="a")+3*(i$="o")+4*(i$="p")\#013500 GO TO 498\#013501 PRINT AT y+1,x; INK 0; BRIGHT 0;"  ": LET y=y-(ATTR (y-1,x)=0 AND ATTR (y-1,x+1)=0): GO TO 510\#013502 PRINT AT y,x; INK 0; BRIGHT 0;"  ": LET y=y+(ATTR (y+2,x)=0 AND ATTR (y+2,x+1)=0): GO TO 510\#013503 PRINT AT y,x+1; INK 0; BRIGHT 0;" ";AT y+1,x+1;" ": LET x=x-(ATTR (y,x-1)=0 AND ATTR (y+1,x-1)=0): GO TO 510\#013504 PRINT AT y,x; INK 0; BRIGHT 0;" ";AT y+1,x;" ": LET x=x+(ATTR (y,x+2)=0 AND ATTR (y+1,x+2)=0): GO TO 510\#013510 PRINT AT y,x; INK 5;"\h\i": GO TO 510+s\#013511 PRINT AT y+1,x; INK 5;"\j\k": LET s=2: GO TO 520\#013512 PRINT AT y+1,x; INK 5;"\j\k": LET s=1: GO TO 520\#013520 GO TO 498

Y esta basado en algo que me paso @briefer o de algun ejemplo tambien del curso mix con algo mio ya no me acuerdo bien. Es más sencillo, da la impresuon que parpadea menos (el anterior con animacion el parpadeo se notara menos yo creo) pero no lleva el control de colisiones "empotrado" como el anterior (en el anterior si pintas yo que se "A"s blancas a forma de muro, por ahi no pasa - si pintas algo con attr 70 - fondo negro y letra amarilla si no recuerdo mal saltaria a la 600) pero para enemigo con recorrido/IA simple igual es mas apropiado :

10 BORDER 1: PAPER 1: INK 2: CLS : FOR a=USR "a" TO USR "b"+7: READ b: POKE a,b: NEXT a: DATA 56,62,52,52,126,165,60,40,28,124,44,44,126,165,60,20\#01320 LET y=15: LET x=15: LET oy=0: LET ox=0: LET a$="\a"\#01325 LET y=y+(INKEY$="a")*(y<20)-(INKEY$="q")*(y>0): LET x=x+(INKEY$="p")*(x<30)-(INKEY$="o")*(x>0)\#01326 IF INKEY$="p" THEN LET a$="\a"\#01327 IF INKEY$="o" THEN LET a$="\b"\#01329 IF oy<>y OR ox<>x THEN BEEP 0.02,1: PRINT AT oy,ox;"  ": PRINT AT oy+1,ox;"  "\#01330 PRINT AT y,x;a$+a$: PRINT AT y+1,x;a$+a$: LET oy=y: LET ox=x\#01340 GO TO 25

Espero ayude, ya me direis ...
última modificación: 22 Noviembre 2020, 09:55:52 por jmpuk

briefer

  • Moderador global
  • T-500
  • Mensajes: 957

Pues habrá que probarlo... ¿es el SCREEN$ Paintbox, no?

Sip. Prueba a importar algo y ya verás que chulo.

jose365

  • T-1
  • Mensajes: 92
Paso el algoritmo de moviemiento en cuanto tenga un rato y lo encuentre pero me parpadea y va un poco lento (en todas las direcciones)

Ahi os dejo una idea para el juego, es como el hunchback pero en version troleo.... al inventor no habría que meterlo en la carcel, habría que darle una medalla, que cachondo!


https://youtu.be/aLkYg7LakGA


Enviado desde mi SM-G950F mediante Tapatalk

Estoy contigo, se merece una medalla !!!

Zael

  • T-600
  • Mensajes: 6 409
  • El Caloret


Aqui os dejo un par de versiones : tengo un cacao hoy en dia entre lo que leo, lo que hice y los algoritmos del curso de Asteroid que mencione en otro post que no se cual va mejor ... será cuestion de probar con los enemigos.  Yo creo que corta pega en basinc va bien (edito: lo acabo de probar, copiais el texto y lo pegais en basinc y vale)


Joer, @jmpuk, ¡qué fluidez! La segunda parece que va algo más lenta pero parece por el BEEP. Me guardo estas 2 maravillas de código para el futuro. ¡Gracias!





jose365

  • T-1
  • Mensajes: 92
Aqui os dejo un par de versiones : tengo un cacao hoy en dia entre lo que leo, lo que hice y los algoritmos del curso de Asteroid que mencione en otro post que no se cual va mejor ... será cuestion de probar con los enemigos.  Yo creo que corta pega en basinc va bien (edito: lo acabo de probar, copiais el texto y lo pegais en basinc y vale)

En este habría que cargar los UDGs en h,i,j,k: tiene posibilidad de animacion con s (esta basado en idea de Radastan si no recuerdo mal o el ejemplo del libro del Spectrum + 2 que me paso compi Kerl) y control de colisiones al principio para objetos/enemigos (seria cuestion de poner ORs) y durante el movimiento si no ve el fondo definido no se mueve (al actualizar coord controla que haya colision con 0=fondo y tinta negra).

10 PAPER 0: INK 0: BRIGHT 0: BORDER 0: CLS : LET x=13: LET y=6: LET s=1\#013410 PRINT AT y,x; INK 5;"\h\i": PRINT AT y+1,x; INK 5;"\j\k"\#013498 LET i$=INKEY$: IF (ATTR (y-1,x+1)=70 OR ATTR (y+2,x+1)=70 OR ATTR (y,x-1)=70 OR ATTR (y,x+3)=70) THEN GO TO 600\#013499 GO TO 500+(i$="q")+2*(i$="a")+3*(i$="o")+4*(i$="p")\#013500 GO TO 498\#013501 PRINT AT y+1,x; INK 0; BRIGHT 0;"  ": LET y=y-(ATTR (y-1,x)=0 AND ATTR (y-1,x+1)=0): GO TO 510\#013502 PRINT AT y,x; INK 0; BRIGHT 0;"  ": LET y=y+(ATTR (y+2,x)=0 AND ATTR (y+2,x+1)=0): GO TO 510\#013503 PRINT AT y,x+1; INK 0; BRIGHT 0;" ";AT y+1,x+1;" ": LET x=x-(ATTR (y,x-1)=0 AND ATTR (y+1,x-1)=0): GO TO 510\#013504 PRINT AT y,x; INK 0; BRIGHT 0;" ";AT y+1,x;" ": LET x=x+(ATTR (y,x+2)=0 AND ATTR (y+1,x+2)=0): GO TO 510\#013510 PRINT AT y,x; INK 5;"\h\i": GO TO 510+s\#013511 PRINT AT y+1,x; INK 5;"\j\k": LET s=2: GO TO 520\#013512 PRINT AT y+1,x; INK 5;"\j\k": LET s=1: GO TO 520\#013520 GO TO 498

Y esta basado en algo que me paso @briefer o de algun ejemplo tambien del curso mix con algo mio ya no me acuerdo bien. Es más sencillo, da la impresuon que parpadea menos (el anterior con animacion el parpadeo se notara menos yo creo) pero no lleva el control de colisiones "empotrado" como el anterior (en el anterior si pintas yo que se "A"s blancas a forma de muro, por ahi no pasa - si pintas algo con attr 70 - fondo negro y letra amarilla si no recuerdo mal saltaria a la 600) pero para enemigo con recorrido/IA simple igual es mas apropiado :

10 BORDER 1: PAPER 1: INK 2: CLS : FOR a=USR "a" TO USR "b"+7: READ b: POKE a,b: NEXT a: DATA 56,62,52,52,126,165,60,40,28,124,44,44,126,165,60,20\#01320 LET y=15: LET x=15: LET oy=0: LET ox=0: LET a$="\a"\#01325 LET y=y+(INKEY$="a")*(y<20)-(INKEY$="q")*(y>0): LET x=x+(INKEY$="p")*(x<30)-(INKEY$="o")*(x>0)\#01326 IF INKEY$="p" THEN LET a$="\a"\#01327 IF INKEY$="o" THEN LET a$="\b"\#01329 IF oy<>y OR ox<>x THEN BEEP 0.02,1: PRINT AT oy,ox;"  ": PRINT AT oy+1,ox;"  "\#01330 PRINT AT y,x;a$+a$: PRINT AT y+1,x;a$+a$: LET oy=y: LET ox=x\#01340 GO TO 25

Espero ayude, ya me direis ...


Muchas gracias!!
La rutina está bien, y mueve un sprite de 4x4 que está muy bien. Creo que se podría mejorar un pelín:
- Según este artículo usar INKEY$ es un poco más lento, y no permite pulsar 2 teclas a la vez (por ejemplo para ir en diagonal, o para dirigir el salto). Yo estoy usando IN sí que permite detectar varias teclas a la vez
https://blog.jafma.net/2020/03/16/efficient-basic-coding-for-the-zx-spectrum-iv/

Creo que usaré la rutina que tengo, adaptada de AsteroideZx, ya le he puesto la rutina de colisiones, salto integrado, caídas, etc. Cambiarlo me supondría 1 ó 2 semanas y me coincide con el Salón (eso es sagrado!!!) y faltarían gráficos, diseñar pantallas, música, probar el juego, pulir fallos, etc.

Os la paso por mensaje privado, porque es una parte muy importante del juego y no quiero que nadie se aproveche a nuestra costa hasta que pase el concurso.

briefer

  • Moderador global
  • T-500
  • Mensajes: 957
el código está chulísimo! hay algunos bugs que tienes que mirar, como la posición inferior de la liana, si bajas atraviesas el suelo.

Para optimizar, puedes usar el profiler de basinc, que te dice cuando tarda en ejecutar cada línea.



una buena noticia es que las líneas 65 y 198 que son las que usas para mostrar en pantalla los valores de las variables, son de las que más tiempo llevan, y esas las quitarás al final.

recuerda con el basinc también puedes ver los valores de las variables en tiempo real (con ctrl+alt+v)

jose365

  • T-1
  • Mensajes: 92
Muchas gracias @briefer. Ve intentado seguir ths consejos h los de @jmpuk.

Lo de la liana no menys pasa siempre, li miraré con más detalle.

La semana próxima espero poder darle un empujón al juego