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 soMFG: 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! ^^