Frage zum Bewegen eines Charakters (C++/Allegro)



  • Hi Community!
    Ich habe schon bei Verschiedenen Forums
    gefragt (Allegro.cc,...) aber noch keine Antwort.

    Ich möchte meinen Charakter ganz normal bewegen.
    Mit Allegro ^^

    Hier ein Link zum Bild, damit ihr euch vorstellen könnt was ich meine ^^
    http://img121.imageshack.us/i/failnct.jpg/

    Alsoo....
    Wie im Bild zeichnet er den Charakter immer wieder neu auf
    den Hintergrund.

    Naja ich hab ja eigt. erst gestern mit Allegro begonnen ^^

    Habs schon mit "clear_bitmap(background)" usw. versucht.

    Hier der Code:

    #include <allegro.h>
    
    using namespace std;
    
    int main(){
    
     int y = 0;
     int z = 0;
    
     allegro_init();
    
     install_keyboard();
    
     set_color_depth(32);
    
     set_gfx_mode(GFX_AUTODETECT_WINDOWED, 944, 656, 0, 0);
    
     BITMAP *chara = load_bitmap("charakter.bmp", NULL);
     BITMAP *land = load_bitmap("city.bmp", NULL);
     BITMAP *bmp = create_bitmap(944, 656);
    
     clear_to_color(screen, makecol(255, 255, 255));
    
     set_window_title("Game");
    
     while(!key [KEY_ESC])
     {
         if(key [KEY_RIGHT])
         {
              y++;
         }
         if(key [KEY_LEFT])
         {
              y--;
         }
         if(key [KEY_UP])
         {
              z--;
         }
         if(key [KEY_DOWN])
         {
              z++;
         }
    
      draw_sprite(land, chara, y, z);
      blit(land, bmp, 0, 0, 0, 0, land->w, land->h);
      blit(bmp, screen, 0, 0, 0, 0, bmp->w, bmp->h);
    
     }
     destroy_bitmap(chara);
     destroy_bitmap(land);
     destroy_bitmap(bmp);
    
    }
    
    END_OF_MAIN()
    

    Ich hoffe jemand kann mir Helfen ^^
    Allegro ist ja dann doch nicht so weit verbreitet
    wie OpenGL oder so 😉

    MFG: N290



  • Du musst den Hintergrund neu zeichnen jedesmal.



  • Ich kenne Allegro überhaupt nicht, aber ein Problem das du hast ist, dass du den Hintergrund immer veränderst.
    Also:
    Anfang: *land enthält die bitmap city.bmp
    Erster Schleifendurchgang: *chara wird an einer bestimmten position auf *land gemalt
    *land entält jetzt die Stadt und den Charakter
    Zweiter Schleifendurchgang: chara wird an einer neuen Position auf *land gemalt
    *land entält aber noch den Charakter aus dem letzten Durchgang, da du ja nichts gelöscht hast. Das ist auch das was du auf dem Bildschirm siehst.

    Versuch mal:

    blit(land, bmp, 0, 0, 0, 0, land->w, land->h);
    draw_sprite(bmp, chara, y, z);
    

    statt

    draw_sprite(land, chara, y, z);
    blit(land, bmp, 0, 0, 0, 0, land->w, land->h);
    


  • Danke werde ich versuchen

    €dit: Danke jetzt Funktionierts! ^^


Anmelden zum Antworten