Eso sería útil para un juego a tiempo real en el que la acción transcurre al mismo tiempo que el movimiento del personaje, pero este va a ser por turnos. De todos modos, seguiré avanzando y comprobaré como se va portando. A lo mejor cuando el juego se complique, el propio retardo del proceso ralentiza lo suficiente el control. Gracias por toda esa información, la tendré en cuenta para el futuro.Tal como estás leyendo el teclado, no hay ningún buffer de teclado entre la pulsación y tu lectura. Al usar INKEY, sólo estás comprobando el estado de las teclas (pulsada/no pulsada). El buffer de teclado es para la obtención de caracteres y su posterior procesado, y eso sucede cuando se usa lectura gestionada por INPUT o INKEY$. Es en esos casos donde afectan los delays de pulsación de tecla, que están configurados para ser mayor entre la primera y segunda pulsaciones, con un delay concreto entre pulsaciones.Y una duda más: El movimiento se siente con un lag muy molesto. Eso es debido a que tras mover el personaje, añado un bucle vacío para que haga una espera para que no se mueva a toda leche. Eso genera el problema de que a veces las teclas no responden inmediatamente. Creo recordar que había un comando para borrar el buffer del teclado, de forma que hay que pulsar cada vez, en lugar de dejar la tecla apretada. Creo que haciendo eso el movimiento sería mucho más responsivo (aparte de que el truco del bucle vacío siempre me ha parecido una chapuza) ¿Alguien se acuerda?
Si notas input lag, sólo puede deberse a 2 cuestiones: que seas muy sensible al input lag del emulador (cosa que creo que no es el problema) o simplemente que notas el funcionamiento de tu propio código y no te da la respuesta que buscas.
Yo no me preocuparía por el bucle de espera, puesto que cuando añadas enemigos y otras cosas el juego irá más lento y probablemente no te haga falta.
Tienes otra forma de sincronizar para evitar ir a más de 50 FPS, que consiste en esperar al Frame Flyback antes de tus rutinas de dibujado, llamando a CALL &BD19. Esto te asegura que tu bucle no pasa de los 50 FPS, aunque en BASIC es muy raro siquiera llegar ahí.
En cuanto al bucle de espera, puedes hacer una solución mucho mejor que es añadirte un cooldown. Cada vez que tu personaje se mueva, inicia un contador a 3, por ejemplo, que hasta que no vuelva a 0 no vuelva a leer teclas y hacer acciones. Decreméntalo en 1 en cada vuelta de tu bucle principal. Así no metes una espera que paraliza el juego entero, sólo haces que tu personaje no pueda moverse más de 1 de cada 3 fotogramas, pero el juego a nivel global irá a su velocidad normal, sin parones.
Un roguelike en BASIC (mi aventura personal)
Re: Un roguelike en BASIC (mi aventura personal)
- XeNoMoRPH
- I am The Forum
- Mensajes: 2312
- Registrado: Lun 08 Abr , 2013 5:55 pm
- Ubicación: Galaxia de Magallanes
- Contactar:
Re: Un roguelike en BASIC (mi aventura personal)
Saludos !!! , como veo que lo estás haciendo en Basic, a lo mejor te interesa usar esto:
viewtopic.php?f=7&t=4226
viewtopic.php?f=7&t=4226
Re: Un roguelike en BASIC (mi aventura personal)
Actualizado. Ahora hay obstáculos al azar en cada nivel. Video y codigo en el primer post.
Re: Un roguelike en BASIC (mi aventura personal)
A ver, una duda para los más experimentados: ¿Como puedo hacer una consulta INKEY$ sobre un caracter no imprimible? Es decir... ¿cómo puedo consultar si se ha pulsado una tecla del cursor usando INKEY$? Esas teclas no devuelven caracteres. He probado con los chr$ de control de cursor (chr$(8) para la tecla izquierda, por ejemplo), pero no funciona.
¿Alguna pista?
EDITO: Vale, ya he descubierto como es. Suele pasarme que pregunto antes de investigar un poco más.
Por otra parte... hay versión actualizada en el primer post.
¿Alguna pista?
EDITO: Vale, ya he descubierto como es. Suele pasarme que pregunto antes de investigar un poco más.
Por otra parte... hay versión actualizada en el primer post.
Re: Un roguelike en BASIC (mi aventura personal)
Vuelvo con otra duda que me tiene atascado. Estoy haciendo los menus para los turnos y estoy controlando la seleccion de opciones pulsando teclas con INKEY$. Lo malo es que no se qué caracter devuelve la tecla RETURN. He estado usando este miniprogramita para consultar los caracteres no imprimibles:
10 a$=inkey$:if a$="" then 10
20 ?a$
30 goto 10
Que, como veis, espera una pulsacion, dibuja el caracter cuando se produce y vuelve al principio, pero cuando pulso ENTER me devuelve un caracter vacio. Así que la pregunta es: ¿Como compruebo si se ha pulsado ENTER usando INKEY$?
10 a$=inkey$:if a$="" then 10
20 ?a$
30 goto 10
Que, como veis, espera una pulsacion, dibuja el caracter cuando se produce y vuelve al principio, pero cuando pulso ENTER me devuelve un caracter vacio. Así que la pregunta es: ¿Como compruebo si se ha pulsado ENTER usando INKEY$?
Re: Un roguelike en BASIC (mi aventura personal)
No uses INKEY$, usa INKEY!
Re: Un roguelike en BASIC (mi aventura personal)
Nueva actualización en el primer post. De momento he solventado el problemita del INKEY$ usando el espaciador como confirmación de la selección.
Re: Un roguelike en BASIC (mi aventura personal)
Si uso INKEY tengo el problema de que las comprobaciones van a toda lecheNo uses INKEY$, usa INKEY!
Re: Un roguelike en BASIC (mi aventura personal)
Pero úsalo sólo en el menú, para la pulsación de esa tecla.
Re: Un roguelike en BASIC (mi aventura personal)
Joder, pues puedes creerte que no se me habia ocurrido algo tan simple. Definitivamente soy mongolo.Pero úsalo sólo en el menú, para la pulsación de esa tecla.
Re: Un roguelike en BASIC (mi aventura personal)
No, hombre! Muchas veces ves la solución a un problema dejándolo estar. Te vas a hacer otra cosa y cuando vuelves se te enciende la bombilla.
Re: Un roguelike en BASIC (mi aventura personal)
Este fin de semana no avanzo mucho con el código porque estoy llegando a una etapa más compleja de lo que pensaba. Estoy diseñando el sistema de levelup y combate. Hoy le he dedicado un rato a decidir los valores de subida de nivel. Creo que una tirada de 1D10+4 le va bien.
Re: Un roguelike en BASIC (mi aventura personal)
No olvides, en un futuro, poner una opción para grabar la partida en disco/cinta o bien un sistema que genere un código y que al volver a introducir el código te genere la partida....un juego donde vas evoluciónando el personaje y que no se pueda salvar el avance es frustrante.
La verdad es que te puede salir un juego bastante entretenido...pantallas generadas al azar (infinitos niveles), manejo sencillo y reglas simples, por turnos....le puedes ir metiendo poco a poco más cosas....puntos de acción, objetos variados (pócimas de energía, armas, etc), varios tipos de enemigos diferentes, varios personajes iniciales a elegir, hechizos, puertas secretas, niveles "bonus", ...puede dar mucho juego.
La verdad es que te puede salir un juego bastante entretenido...pantallas generadas al azar (infinitos niveles), manejo sencillo y reglas simples, por turnos....le puedes ir metiendo poco a poco más cosas....puntos de acción, objetos variados (pócimas de energía, armas, etc), varios tipos de enemigos diferentes, varios personajes iniciales a elegir, hechizos, puertas secretas, niveles "bonus", ...puede dar mucho juego.
Re: Un roguelike en BASIC (mi aventura personal)
Cierto, todo eso lo tengo en mente. Quiero hacerlo cada vez más complejo. De momento ya tengo planeado que en el cofre puedan salirte regalos distintos además de dinero (bonus a tus habilidades, experiencia, vida, etc.)No olvides, en un futuro, poner una opción para grabar la partida en disco/cinta o bien un sistema que genere un código y que al volver a introducir el código te genere la partida....un juego donde vas evoluciónando el personaje y que no se pueda salvar el avance es frustrante.
La verdad es que te puede salir un juego bastante entretenido...pantallas generadas al azar (infinitos niveles), manejo sencillo y reglas simples, por turnos....le puedes ir metiendo poco a poco más cosas....puntos de acción, objetos variados (pócimas de energía, armas, etc), varios tipos de enemigos diferentes, varios personajes iniciales a elegir, hechizos, puertas secretas, niveles "bonus", ...puede dar mucho juego.
Re: Un roguelike en BASIC (mi aventura personal)
Nuevo DSK con cambios menores. Es solo una vueltecilla que le he dado, espero tener tiempo este fin de semana para avanzar con los turnos de ataque reales.
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro
La Comunidad Española |