Entrar
¿Usuario nuevo? Regístrate
allegro-espanol · Una lista en español sobre la librería Allegro.
? ¿Ya estás suscrito? Entrar en Yahoo!

Consejos de Yahoo! Grupos

¿Sabías que...?
Puedes buscar mensajes antiguos en un grupo.

Mensajes

  Mensajes Ayuda
Avanzado
Re: [AL-ES] Cómo se evita el parpadeo?   Lista de mensajes  
Responder | Reenviar Mensaje #729 de 9896 |


> -----Mensaje Original-----
> Desde: Manuel Alejandro Cerón [mailto:rdceron@...]
> Enviado: Viernes 9 de Agosto de 2002 03:27 AM
> Para: allegro-espanol@yahoogroups.com
> Tema: Re: [AL-ES] Cómo se evita el parpadeo?
>
> Hola Sidus.
>
> En primer lugar creo que el tuturial en español del que hablas estoy casi
> seguro que es el de Artebinario (digo casi seguro por el codigo que muestras
> es del tutorial). este tutorial es bueno para aprender el paradigma de
> programacion orientado a objetos en los videojuegos pero definitivamente no
> es bueno para aprender ALLEGRO. Si quieres aprender Allegro deberás
> consultar un tutorial en ingles (por ahora), yo te recomiendo VIVACE.
>
> Ahora, para evitar el parpadeo debes usar una tecnica que se conoce como
> DoubleBuffering y que consiste en dibujar primero en una pantalla virutal
> (un sector de la memoria) y despues copiar esa pantalla virtual a la
> pantalla real. En tu codigo la pantalla virtual seria el BITMAP buffer, el
> problema consiste en que lo estas usando de forma inapropiada. El codigo
> correcto seria algo como esto (solo la parte del movimiento):
>
> //*************************************************
> buffer = create_bitmap (SCREEN_W, SCREEN_H); //EN PRIMER LUGAR EL buffer O
> PANTALLA VIRTUAL DEBE SER DEL MISMO TAMAÑO DE LA PANTALLA REAL
>
> clear(buffer); //LIMPIO EL BUFFER
> x = SCREEN_W/2;
> y = SCREEN_H/2;
>
> while (!key[KEY_ESC]) {
>
> if ( key[KEY_UP] && y>0) y--; //si presiona
> arriba y no se ha salido de la pantalla se corre para arriba
> if ( key[KEY_DOWN] && y<SCREEN_H) y++; //se corre para
> abajo
> if ( key[KEY_LEFT] && x>0) x--; //se corre para la
> izquierda
> if ( key[KEY_RIGHT] && x<SCREEN_W) x++; //se corre para
> la derecha
>
> draw_sprite (buffer, image, x, y); //PRIMERO DIBUJA EL SPRITE O
> IMAGEN EN LA PANTALLA VIRTUAL
> blit(buffer,screen,0,0,0,0,SCREEN_W,SCREEN_H); //LUEGO COPIA EL
> buffer A LA PANTALLA REAL (screen)
> }
> //***************************************************
>
> Espero que te sirva, esto debe eliminar completamente el parpadeo, si de
> todos modos no funciona puedes usar la funcion vsync() justo antes del blit
> esta funcion garantiza que no habra parpadero, lo malo es que vuelve mas
> lento el juego.
>
> Cualquier cosa que necesites solo pregunta
>
> Saludos,
>
> Manuel Alejandro Cerón
>
> ----- Original Message -----
> From: "Sidus" <sidus@...>
> To: <allegro-espanol@yahoogroups.com>
> Sent: Sunday, August 31, 2003 7:15 PM
> Subject: [AL-ES] Cómo se evita el parpadeo?
>
>
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> >
> > Hola:
> > Tengo el siguiente problema.
> > Cuando trato de "mover" una imagen utilizando el cursor; esa imagen
> parpadea
> > constantemente.
> > No se cómo solucionarlo. Se me ocurre que tal vez debería usar una función
> de
> > temporización, pero no tengo ni idea de cómo hacerlo. La ayuda de Allegro
> es
> > demasiado técnica para mí.
> > Adjunto el código que hice hasta ahora.
> > ¿Saben de algún tutorial en español que explique un poco más la
> programación
> > de juegos con Allegro? Hasta ahora solamente encontré uno, y explica muy
> > poco, casi nada.
> > Desde ya muchas gracias.
> >
> > #include "allegro.h"
> > int main(int argc, char *argv[])
> > {
> > PALETTE pal;
> > int x, y, x_anterior, y_anterior;
> > BITMAP *image;
> >
> > BITMAP *buffer; //PARA EL MOVIMIENTO
> >
> > allegro_init();
> > install_keyboard();
> > set_color_depth(8);
> > if (set_gfx_mode(GFX_AUTODETECT, 1024, 768, 0, 0) != 0) {
> > allegro_message("Error al establecer el modo
> gráfico\n%s\n",allegro_error);
> > return 1;
> > }
> > image =load_bitmap("allegro.pcx", pal);
> > set_palette(pal);
> >
> >
> //-----------------------------------------------------------------------//
> > // TODO LO QUE SIGUE ES AGREGADO PARA EL MOVIMIENTO
> >
> //-----------------------------------------------------------------------//
> > buffer = create_bitmap (image -> w, image -> h);
> > clear(buffer); //LIMPIO EL BUFFER
> > x = SCREEN_W/2;
> > y = SCREEN_H/2;
> >
> > while (!key[KEY_ESC]) {
> >
> > if (key[KEY_UP]) y--;
> >
> > if (key[KEY_DOWN]) y++;
> >
> > if (key[KEY_LEFT]) x--;
> >
> > if (key[KEY_RIGHT]) x++;
> >
> > if (x<0) x=x_anterior;
> >
> > if (x>SCREEN_W-image->w) x=x_anterior;
> >
> > if (y<0) y=y_anterior;
> >
> > if (y>SCREEN_H-image->h) y=y_anterior;
> >
> > if ((x_anterior != x) || (y_anterior != x)) {
> > blit (buffer, screen, 0, 0, x_anterior, y_anterior, buffer -> w, buffer ->
> h);
> > blit (screen, buffer, x, y, 0, 0, buffer -> w, buffer -> h);
> > draw_sprite ( screen, image, x, y);
> > }
> > x_anterior = x;
> > y_anterior = y;
> >
> > }
> >
> > return 0;
> > }
> > END_OF_MAIN();
> >
> >
> > - --
> > Llave Gnupg en:
> > http://pgp.rediris.es:11371/pks/lookup?op=get&search=0x6F1FD83E
> >
> > Key fingerprint = F619 9CB9 8E42 0287 8386 D2ED AEBA 0FC5 6F1F D83E
> >
> >
> >
> > -----BEGIN PGP SIGNATURE-----
> > Version: GnuPG v1.0.4 (GNU/Linux)
> > Comment: For info see http://www.gnupg.org
> >
> > iEYEARECAAYFAj9Sj7YACgkQrroPxW8f2D59/QCfeEzdTu3WMNuaRb+G2BC0yqEK
> > G9gAn0mjTjkBP+IeoqYvuUN7WvQSCMzw
> > =qsEF
> > -----END PGP SIGNATURE-----
> >
> > _______________________________________________
> > Para cancelar su subscripción envíe un email a:
> > allegro-espanol-unsubscribe@egroups.com
> >
> >
> > La utilización de Yahoo! Grupos está sujeta a su aceptación de las
> > Condiciones del servicio (http://es.docs.yahoo.com/info/utos.html) así
> > como de la Política de privacidad (http://privacy.yahoo.com/es/).
> >
> >
> >
> >
> >
> Tienen razon , para evotar parpadeo se usan pantallas virtuales, hacesa la original, en otra escribes y  luego las vacias.
>
>
> _______________________________________________
> Para cancelar su subscripción envíe un email a:
> allegro-espanol-unsubscribe@egroups.com
>
>
> La utilización de Yahoo! Grupos está sujeta a su aceptación de las
> Condiciones del servicio (http://es.docs.yahoo.com/info/utos.html) así
> como de la Política de privacidad (http://privacy.yahoo.com/es/).
>
>
>
>


Todito.com, tu centro de comunicación, información, comercio y entretenimiento en Internet.



Vie, 9 de Ago, 2002 1:58 pm

ogmr2001
Sin conexión Sin conexión
Enviar mensaje Enviar mensaje

Reenviar Mensaje #729 de 9896 |
Desplegar mensajes Autor Ordenar por fecha

... ___________________________________________________ Todito.com, tu centro de comunicacion, informacion, comercio y entretenimiento en Internet. ... ...
Osvaldo Gustavo Mart...
ogmr2001
Sin conexión Enviar mensaje
9 de Ago, 2002
2:01 pm
Avanzado

Copyright © 2009 Yahoo! Todos los derechos reservados.
Política de Privacidad Actualizada - Condiciones del servicio - Directrices - Ayuda