Pac Man

Hallo!
Ich programmiere gerade Pac Man und habe erst gerade angefangen und komm nicht weiter. Ich möchte das mein Geist nciht aus dem Rahmen verschwinden also in meinem Fenster bleibt nur wie bekomme ich das hin zudem möchte ich noch mehr Geister einsetzt doch dies gelingt mir auch nciht kann mir jemand helfen?
Danke.

p.s.: Ich hab im anhang meine bmp Datei angehangen damit ihr versteht voher ich das Bildchen hab.

Code:
#include <allegro.h>


void fataler_fehler() {
		allegro_message(allegro_error);
		exit(1);	
}
int main() {
	
	allegro_init();
	if (install_keyboard() < 0) {
		fataler_fehler();
	}
	set_color_depth(24);
	if (set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0) < 0) {
		fataler_fehler();
	}

	BITMAP *bmp = NULL;
	BITMAP *ghost = NULL;
	
	bmp = load_bitmap("pac800.bmp", NULL);
	if (bmp == NULL) {
		allegro_message("Konnte die Bitmap-Datei nicht finden");
		exit(1);		
	}
	ghost = create_sub_bitmap(bmp, 0, 0, 36, 36);
	

	int x = 300;
	int y = 150;
	while(!keypressed()) {
		vsync();
		clear_bitmap(screen);
		draw_sprite(screen, ghost, x++, y++);
	}

	destroy_bitmap(ghost);
	destroy_bitmap(bmp);


	return 0;
} END_OF_MAIN()
 

Anhänge

Soweit ich weiss läuft Pacman in alle 4 Richtungen, du musst also zuerst rauf und runter von links und rechts trennen.
Dazu kommt noch das Labyrinth mit Wänden, an denen sich die Richtung ändert, aber ich denke mal, dazu kommst du später von alleine.

Code:
int x = 300;
int y = 150;
int RechterRand = 500; // Feldbreite in px
int UntererRand = 500; // Feldhöhe in px
int RaufRunter = 0;
int LinksRechts = 1;

while(!keypressed()) {

x = x + LinksRechts;
y = y + RaufRunter;

vsync();
clear_bitmap(screen);
draw_sprite(screen, ghost, x, y);

// Position checken und bei Bedarf Richtung ändern

if(x == RechterRand && LinksRechts == 1 && RaufRunter == 0) {
LinksRechts = 0;
RaufRunter = 1;
}

if(x == 0 && LinksRechts == -1 && RaufRunter == 0) {
LinksRechts = 0;
RaufRunter = -1;
}

if(y == UntererRand && LinksRechts == 0 && RaufRunter == 1) {
LinksRechts = -1;
RaufRunter = 0;
}

if(y == 0 && LinksRechts == 0 && RaufRunter == -1) {
LinksRechts = 1;
RaufRunter = 0;
}

}

Ich hab die Logik nicht ganz nachverfolgt, gut möglich, dass es so noch nicht geht, aber ich denke du verstehst, was gemeint ist.
 
Zurück