
Como usar while
Publicado por jose (1 intervención) el 02/06/2014 01:07:24
Hola, recien empeze un proyecto en allegro, lo que quiero hacer es que cuando de un clic en alguna parte del mi mapa de bits, por ejemplo:
if( (mouse_b & 1) &&(mouse_x > 49 && mouse_x < 178)&&(mouse_y > 10 && mouse_y < 41))
{
x = 1;
}
Hasta donde yo se, eso esta correcto, pero no me compila, uso visual c++ para hacer eso y mi programa lo tengo asi:
#include <allegro.h>
#pragma comment(lib, "alleg.lib")#include <cstdlib>
#include <cstdio>
int main(int argc, char* argv[])
{
allegro_init();
install_timer();
install_keyboard();
install_mouse();
set_color_depth(24);
set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0);
BITMAP* backBuffer = create_bitmap(SCREEN_W, SCREEN_H);
BITMAP *fondo;
BITMAP *fondo1;
BITMAP *fondo2;
BITMAP *fondo3;
BITMAP *fondo4;
int x,y,op;
fondo = load_bitmap("fondo.bmp",NULL);
fondo1 = load_bitmap("fondo1.bmp",NULL);
fondo2 = load_bitmap("fondo2.bmp",NULL);
fondo3 = load_bitmap("fondo3.bmp",NULL);
fondo4 = load_bitmap("fondo4.bmp",NULL);
show_mouse(backBuffer);
draw_sprite(backBuffer,fondo, 0, 0);
op = 0
while(op==0)
{
textprintf(screen, font, 680, 585, makecol(255, 255, 255), "%d , %d", mouse_x, mouse_y);
if((mouse_x > 49 && mouse_x < 178)&&(mouse_y > 10 && mouse_y < 41))
{
draw_sprite(backBuffer,fondo1, 0, 0);
}
if((mouse_x > 49 && mouse_x < 291)&&(mouse_y > 44 && mouse_y < 72))
{
draw_sprite(backBuffer,fondo2, 0, 0);
}
if((mouse_x > 53 && mouse_x < 191)&&(mouse_y > 78 && mouse_y < 142))
{
draw_sprite(backBuffer,fondo3, 0, 0);
}
if((mouse_x > 56 && mouse_x < 118)&&(mouse_y > 143 && mouse_y < 170))
{
draw_sprite(backBuffer,fondo4, 0, 0);
}
if((mouse_b & 1) && (mouse_x > 56 && mouse_x < 118)&&(mouse_y > 143 && mouse_y < 170)
{
op++;
// Se supone que aqui deveria cerrarse, pero no lo hace, simplemente sigue trabajando como lo tenia antes( lo tenia que mientras no presiosnen la tecla esc siga... y asi es como sigue trabajando, como si no hubiera modificado nada
}
blit(backBuffer, screen, 0, 0, 0, 0, backBuffer->w, backBuffer->h);
rest(1);
}
if(x > 49 && x < 178)&&(y > 10 && y < 41){
draw_sprite(backBuffer,sanluis, 0, 0);
}
alguien que me ayude :C
if( (mouse_b & 1) &&(mouse_x > 49 && mouse_x < 178)&&(mouse_y > 10 && mouse_y < 41))
{
x = 1;
}
Hasta donde yo se, eso esta correcto, pero no me compila, uso visual c++ para hacer eso y mi programa lo tengo asi:
#include <allegro.h>
#pragma comment(lib, "alleg.lib")#include <cstdlib>
#include <cstdio>
int main(int argc, char* argv[])
{
allegro_init();
install_timer();
install_keyboard();
install_mouse();
set_color_depth(24);
set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0);
BITMAP* backBuffer = create_bitmap(SCREEN_W, SCREEN_H);
BITMAP *fondo;
BITMAP *fondo1;
BITMAP *fondo2;
BITMAP *fondo3;
BITMAP *fondo4;
int x,y,op;
fondo = load_bitmap("fondo.bmp",NULL);
fondo1 = load_bitmap("fondo1.bmp",NULL);
fondo2 = load_bitmap("fondo2.bmp",NULL);
fondo3 = load_bitmap("fondo3.bmp",NULL);
fondo4 = load_bitmap("fondo4.bmp",NULL);
show_mouse(backBuffer);
draw_sprite(backBuffer,fondo, 0, 0);
op = 0
while(op==0)
{
textprintf(screen, font, 680, 585, makecol(255, 255, 255), "%d , %d", mouse_x, mouse_y);
if((mouse_x > 49 && mouse_x < 178)&&(mouse_y > 10 && mouse_y < 41))
{
draw_sprite(backBuffer,fondo1, 0, 0);
}
if((mouse_x > 49 && mouse_x < 291)&&(mouse_y > 44 && mouse_y < 72))
{
draw_sprite(backBuffer,fondo2, 0, 0);
}
if((mouse_x > 53 && mouse_x < 191)&&(mouse_y > 78 && mouse_y < 142))
{
draw_sprite(backBuffer,fondo3, 0, 0);
}
if((mouse_x > 56 && mouse_x < 118)&&(mouse_y > 143 && mouse_y < 170))
{
draw_sprite(backBuffer,fondo4, 0, 0);
}
if((mouse_b & 1) && (mouse_x > 56 && mouse_x < 118)&&(mouse_y > 143 && mouse_y < 170)
{
op++;
// Se supone que aqui deveria cerrarse, pero no lo hace, simplemente sigue trabajando como lo tenia antes( lo tenia que mientras no presiosnen la tecla esc siga... y asi es como sigue trabajando, como si no hubiera modificado nada
}
blit(backBuffer, screen, 0, 0, 0, 0, backBuffer->w, backBuffer->h);
rest(1);
}
if(x > 49 && x < 178)&&(y > 10 && y < 41){
draw_sprite(backBuffer,sanluis, 0, 0);
}
alguien que me ayude :C
Valora esta pregunta


0