Visual C++ .NET - Como usar while

 
Vista:
sin imagen de perfil

Como usar while

Publicado por jose (1 intervención) el 02/06/2014 01:08:06
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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Como usar while

Publicado por Abelardo (6 intervenciones) el 11/01/2016 18:45:32
Hola Jose:

Los bucles While es cierto que se ejecutan, como mínimo, una vez pero si no se cumple la condición, salen del mismo. Por lo que veo, op deja de valer 0, con lo que no se cumple la condición de que se ejecute mientras valga 0.

Otra cosa, elimina la línea donde tienes ese rest(1) y prueba de nuevo a correrlo.

Espero haberte ayudado. Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar