Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Danielo515 on April 18, 2010, 01:08:35 PM

Title: Socorrito - Parece que los bucles se superponen
Post by: Danielo515 on April 18, 2010, 01:08:35 PM
Si, señoras y señor, por algún motivo, que puede que sea un problema del say, o puede que no, la salida se me superpone, y claro, me da un error.

Si correis este código, de un juego de bloques corriente, vereis que cuando ya debería haber acabado el proceso, vuelve a retomar un bucle que ya debería estar acabado y por consiguiente, me da un error perro.


Bueno, ya he solucionado el problema anterior con una chapuzero apaño, el problema es que ahora, al intentar reconocer las horizontales, lo hace mal, y las verticales directamente se sale del programa sin dar siquiera un error, ninguno....


Al final esto va  a ser un log de versiones, je je je. Bueno, acabo de solucionar los problemas anteriores, ahora estoy trabajando en otro que me trae de cabeza, la salida (el say) lo da bien, el problema viene cuando se llama al segundo matafilas.
La idea es que un matafilas, liquida a los bloques que deba, vacia sus casillas, y llama al siguiente matafilas, pero no se como hacerlo para darle tiempo al siguiente matafilas para que las piezas se coloquen antes de que el analice. El problema actual, es que, el matafilas liquida las piezas, y antes de que las superiores puedan ocupar los huecos que quedan libres, el otro matafilas analiza la situación, y claro, no encuentra nada hasta la siguiente iteración, en la que ya se han colocado las piezas.

¿se solucionará con un frame?
Probadlo, y vereis....
[code language="bennu"]
#define _verde rgb(20,255,20)
#define _rojo rgb(255,20,20)
#define _azul rgb(20,20,255)
PROGRAM bloques;
INCLUDE "DLL\import.prg";                 //Incluye las DLL necesarias para que todo funcione

const
_bloque=20;
x_screen=300;
y_screen=400;
true_x_screen=600;
true_y_screen=480;
_filas=y_screen/_bloque;
_columnas=x_screen/_bloque;
_desp_x=50;

GLOBAL
espacios[_filas][_columnas];
IDS[_filas][_columnas];
activo=false;
vel=50;

matadores=0;
local
int i,j;

BEGIN

set_mode(true_x_screen,true_y_screen,32,MODE_WINDOW);   //Resolución de pantalla a 800x600 píxel, 32 bits de color y en modo ventana
from y=1 to _filas;
   from x=0 to _columnas;
      write_var(0,(x*_bloque)+_desp_x,y*_bloque,4,espacios[y]
Title: Re: Socorrito - Parece que los bucles se superponen
Post by: Danielo515 on April 18, 2010, 01:09:02 PM
Muchas gracias de antebraso  ;D
Title: Re: Socorrito - Parece que los bucles se superponen
Post by: Drumpi on April 18, 2010, 04:45:53 PM
No he analizado el código pero:
a) si matafilas sólo sirve para hacer un análisis o unas operaciones que no usan gráficos ¿por qué no usas una función en lugar de un proceso? además, congela al padre hasta que termina.
b) hay un frame(300) en medio del código, creo (ya digo, no he leido el código) que lo pusiste para debug y ahora te sobra ¿no? porque dentro de un bucle, y con el 300 se va a estar ejecutando durante 24 frames.
Siento no ser de más ayuda, pero el tiempo me apremia :S
Title: Re: Socorrito - Parece que los bucles se superponen
Post by: Danielo515 on April 18, 2010, 06:00:11 PM
Gracias Drumpi por tu tiempo.

En un principio me plantee lo que dices de hacerlo en una función (aunque no estaba seguro de que congelara al padre, lo intuia), pero tal como tengo planteado ahora el código, sí que hace operaciones gráficas.

El frame(300) es para darle un poco de cadencia al parpadeo, me imagino que es la peor forma de hacerlo, pero funciona.

Probé lo que dije, de ponerle un frame antes de llamar al siguiente matafilas (para un segundo análisis) pero me parece chapucero, pues a veces las piezas pueden tardar más de un frame en acomodarse.

Gracias.
Title: Re: Socorrito - Parece que los bucles se superponen
Post by: Danielo515 on April 18, 2010, 10:07:55 PM
¿A alguien se le ocurre como puedo implementar un sistema de control que sea bueno para manejar, al menos, tres piezas?

Gracias.