Viernes 15 de Noviembre de 2024, 07:45
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación Específica
»
Programación de Videojuegos
»
Allegro
»
Metodos de dibujo
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Metodos de dibujo (Leído 2283 veces)
JorgedeOz
Nuevo Miembro
Mensajes: 2
Metodos de dibujo
«
en:
Domingo 27 de Julio de 2008, 04:15 »
0
que onda!!!
primero que nada pues soy nuevo aqui y tambien soy nuevo en esto de la programacion con allegro
y espero que me puedan ayudar un poco con un ejemplo de juego.
Es el juego de las navez, el fondo y las naves las agarre de un ejemplo de por aqui y quisiera saber si hay otro metodo de dibujar los disparos
bueno aqui esta el codigo
Código: Text
#include <allegro.h>
#include <iostream>
#include <stdlib.h>
#include <time.h>
typedef struct bitmap
{
int h,w;
};
void init();
void deinit();
BITMAP* buffer;
BITMAP* buffer2;
BITMAP* espacio;
BITMAP* nave_up;
BITMAP* rayo;
double x,y,x_anterior,y_anterior;
float x1,y1;
int main()
{
init();
while (!key[KEY_ESC])
{
x1=x+nave_up->w/2;
y1=y+nave_up->h-100;
x_anterior=x; y_anterior=y;
/* put your code here */
clear_bitmap(buffer);
draw_sprite(buffer,espacio,0,0);
rectfill(buffer,200,5,400,50,makecol(23,34,54));
draw_sprite(buffer,nave_up,x,y);
if(key[KEY_DOWN])
y+=2;
if(key[KEY_UP])
y-=2;
if(key[KEY_RIGHT])
x+=2;
if(key[KEY_LEFT])
x-=2;
if(x>SCREEN_W-nave_up->w)
x=x_anterior;
if(x<0)
x=x_anterior;
if(y>SCREEN_H-nave_up->h)
y=y_anterior;
if(y<0)
y=y_anterior;
if(key[KEY_SPACE])
{
for(y1=y+nave_up->h-100; y1>0; y1=y1-4)
{
draw_sprite(buffer,espacio,0,0);
rectfill(buffer,200,5,400,50,makecol(23,34,54));
draw_sprite(buffer,nave_up,x,y);
textout(buffer,font,"Mi primer juego",240,20,makecol(255,255,255));
blit(buffer,buffer2,0,0,0,0,SCREEN_W,SCREEN_H);
draw_sprite(buffer2,rayo,x1,y1);
circlefill(buffer2,x1,y1,5,255);
textprintf_centre(buffer2,font,60,0,makecol(255,255,255),"Rayo:%.2f",y1);
blit(buffer2,buffer,0,0,0,0,SCREEN_W,SCREEN_H);
blit(buffer,screen,0,0,0,0,SCREEN_W,SCREEN_H);
}
}
text_mode(-1);
textout(buffer,font,"Mi primer juego",240,20,makecol(255,255,255));
blit(buffer,screen,0,0,0,0,SCREEN_W,SCREEN_H);
}
deinit();
destroy_bitmap(buffer);
destroy_bitmap(espacio);
destroy_bitmap(nave_up);
destroy_bitmap(rayo);
destroy_bitmap(buffer2);
return 0;
}
END_OF_MAIN()
void init()
{
int depth, res;
allegro_init();
depth = desktop_color_depth();
if (depth == 0) depth = 32;
set_color_depth(depth);
res = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0);
if (res != 0)
{
allegro_message(allegro_error);
exit(-1);
}
buffer=create_bitmap(SCREEN_W,SCREEN_H);
buffer2=create_bitmap(buffer->w,buffer->h);
espacio=load_bitmap("espacio.bmp",0);
nave_up=load_bitmap("nave_up.tga",0);
rayo=load_bitmap("rayo.tga",0);
install_timer();
install_keyboard();
install_mouse();
/* add other initializations here */
}
void deinit()
{
clear_keybuf();
/* add other deinitializations here */
}
el caso es que use 2 bitmaps para dibujar y al momento del disparo tengo que copiar el bitmap anterior y volver a dibujar todo y despues de nuevo volver a mandarlo al inicio y despues a pantalla emm ps creo que hay mejores metodos para hacer esto pero no se cuales xD espero que me puedan ayudar saludos!!!!
Tweet
BlackWind
Miembro activo
Mensajes: 89
Re: Metodos de dibujo
«
Respuesta #1 en:
Lunes 11 de Agosto de 2008, 04:26 »
0
Hola,
si nadamas usas allegro sin ninguna otra libreria (como opengl o direct3d). Esa es la mejor opcion. La tecnica se llama double buffering.
Por cierto, para futuras referencias, si sabes ingles, te recomiendo que mejor postees tus dudas en
www.allegro.cc
saludos,
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación Específica
»
Programación de Videojuegos
»
Allegro
»
Metodos de dibujo