Effect



  • Hallo
    Ich habe folgendes Problem:
    Ich will, dass eine beliebige Anzahl von Rechtecken zwar unabhängig voneinander aber in Abhängikeit zur Maus Position in ihrer Position verändert werden. Im Prinzip habe ich auch schon verstanden wie das gehen muss nur leider tauchen die Rechtecke immer an der falschen Stelle wieder auf wenn die Mausposition größer ist als die Position des Rechtecks. zur veranscaulichung hier mal der code:(ich hab allegro benutzt)

    #include <allegro.h>
    int main()
    {
    allegro_init();
    install_keyboard();
    install_mouse();
    set_color_depth(16);
    set_gfx_mode(GFX_AUTODETECT_WINDOWED,800,600,0,0);
    BITMAP *buffer = create_bitmap(800,600);
    float posx[500];
    float posy[500];
    float abstx[500];
    float absty[500];
    float verschx[500];
    float verschy[500];
    int mx,my,x,y;
    float a,b;

    for (x=1;x<100;x++)
    {
    b+=100;
    if (b>800)
    {
    b=0;
    a+=100;
    }


    }

    do
    {
    mx = mouse_x+1;
    my = mouse_y+1;

    acquire_bitmap(buffer);
    clear_bitmap(buffer);
    for (x=1;x<500;x++)
    {
    if (mx <posx[x])
    {


    40;
    }
    if (my<posy[x])
    {

    40;
    }
    if (mx >=posx[x])
    {

    -40;
    }
    if (my>=posy[x])
    {

    -40;
    }

    if (mx < posx[x]&& my < posy[x])
    rectfill(buffer,(posx[x]-verschx[x]),(posy[x]-verschy[x]),
    ((posx[x]-verschx[x])+16),((posy[x]-verschy[x])+16),makecol(255,255,255));


    rectfill(buffer,(posx[x]+verschx[x]),(posy[x]+verschy[x]),
    ((posx[x]+verschx[x]))+16,((posy[x]+verschy[x]))+16,makecol(255,255,255));
    }

    rectfill(buffer,mouse_x,mouse_y,mouse_x+16,mouse_y+16,makecol(0,225,255));
    release_bitmap(buffer);
    blit(buffer,screen,0,0,0,0,800,600);
    }while(!key[KEY_ESC]);
    }END_OF_MAIN();

    vielen dank schon mal im vorraus und ich hoffe ihr verteht überhaupt was ich meine.


  • Mod

    Hitomi schrieb:

    Hallo
    Im Prinzip habe ich auch schon verstanden wie das gehen muss nur leider tauchen die Rechtecke immer an der falschen Stelle wieder auf wenn die Mausposition größer ist als die Position des Rechtecks.

    da ich kein allegro hab um das zu testen, würde ich gerne wissen was du mit falsch meinst.

    rapso->greets();


Anmelden zum Antworten