Am Ende - Allegro



  • Hi! Die Aufgabe ist, ein Labyrinth (Kruskal-Algorithmus) mit Allegro zu realisieren (arbeite unter Linux), nun -> bevor ich den kruskal implementiere ging das alles auch noch schön, nur jetzt kompiliere ich das Projekt, und das zu startende File lässt sich aus irgend einem Grund nicht ausführen. Lösch ich den ganzen code raus und kompilier's, tuts auch nicht...was kann das sein?

    Hier der code(Filename = nigsch.cc):

    #include <iostream>
    #include "allegro.h"
    #include "time.h"
    
    using namespace std;
    
    #define X 50
    #define Y 50
    
    //Knoten und alles was dazugehört deklarieren
    struct knoten
    {
    	bool wl;
    	bool wr;
    	bool wo;
    	bool wu;
    	int nummerierung;
    };
    
    //das Labyrinth selbst vom typ knoten
    struct knoten labyrinth[X][Y];
    
    int main()
    {
    
    	srand(time(NULL));
    
    	int label=1;
    
    	for(int i=0; i<Y; i++)
    	{
    		for(int j=0; j<X; j++)
    		{
    			labyrinth[j][i].nummerierung = label;
    			labyrinth[j][i].wl = true;
    			labyrinth[j][i].wr = true;
    			labyrinth[j][i].wo = true;
    			labyrinth[j][i].wu = true;
    		}
    	}
    	//Volles Feld mit allen Wänden gesetzt!!!!
    
    	//nun kommt noch die Labelumbenennung und abprüfung, wann alle das selbe label haben...
    
    	int selbeslabel=X*Y;
    
    	while(selbeslabel > 1)
    	{
    			int x = rand() % X;
    			int y = rand() % Y;
    			int zufallsseiteloeschen = rand() % 4;
    
    			int x2=0;
    			int y2=0;
    
    		switch(zufallsseiteloeschen)
    		{
    			case 0:
    				x2=x-1;
    				y2=y;
    				break;
    			case 1:
    				x2=x;
    				y2=y-1;
    				break;
    			case 2:
    				x2=x+1;
    				y2=y;
    				break;
    			case 3:
    				x2=x;
    				y2=y+1;
    				break;
    		}
    
    		if((labyrinth[x][y].nummerierung != labyrinth[x2][y2].nummerierung) && (x2 >=0 && x2 < X) && (y2 >=0 && y2 < Y)) //prüft zusätzl. ab ob wert durch addieren überstiegen ist.
    		{
    			switch(zufallsseiteloeschen)
    			{
    				case 0:
    					labyrinth[x2][y2].wo = false;
    					labyrinth[x][y].wu = false;
    					break;
    				case 1:
    					labyrinth[x2][y2].wr=false;
    					labyrinth[x][y].wl=false;
    					break;
    				case 2:
    					labyrinth[x2][y2].wu = false;
    					labyrinth[x][y].wo = false;
    					break;
    				case 3:
    					labyrinth[x2][y2].wl = false;
    					labyrinth[x][y].wr = false;
    					break;
    			}
    
    		//Labels umbenennen!
    
    		for(int i=0; i<Y; i++)
    		{
    			for(int j=0; j<X; j++)
    			{
    				if(labyrinth[j][i].nummerierung == labyrinth[x][y].nummerierung)
    				{
    					labyrinth[j][i].nummerierung = labyrinth[x2][y2].nummerierung;
    				}
    			}
    		}
    
    		selbeslabel--;
    		}
    	}
    
    	// A
    	// L
    	// L
    	// E
    	// G
    	// R
    	// O
    
    	//allegro
    	allegro_init();
    	install_keyboard();
    	install_mouse();
    	install_joystick(JOY_TYPE_AUTODETECT);
    
    	if(set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0) !=0) {
    		if (set_gfx_mode(GFX_SAFE, 800, 600, 0, 0) !=0) {
    			set_gfx_mode(GFX_TEXT, 0, 0, 0, 0);
    			allegro_message("Unable to set any graphic mode\n%s\n", allegro_error);
    		return 1;
    		}
    	}
    	//allegro init fertig
    	set_palette(desktop_palette);
    
    	// white ist 3x255 :)
    	int white = makecol(255,255,255);
    	int black = makecol(0,0,0);
    
    	clear_to_color(screen,white);
    
    	for(int i=0; i<X; i++)
    	{
    		for(int j=0; j<Y; j++)
    		{
    			if(labyrinth[i][j].wl==true)
    			{
    			    line(screen, (X+i)*20 , (Y+j)*20 , (X+i)*20 , ((Y+j)*20)+20 , black );
    			}
    			if(labyrinth[i][j].wr==true)
    			{
    			    line(screen, ((X+i)*20)+20 , (Y+j)*20 , ((X+i)*20)+20 , ((Y+j)*20)+20 , black );
    			}
    			if(labyrinth[i][j].wo==true)
    			{
    			    line(screen, (X+i)*20 , (Y+j)*20 , ((X+i)*20)+20 , (Y+j)*20 , black );
    			}
    			if(labyrinth[i][j].wu==true)
    			{
    			    line(screen, (X+i)*20 , ((Y+j)*20)+20 , ((X+i)*20)+20 , ((Y+j)*20)+20 , black );
    			}
    
    		}		
    	}
    
    	sleep(50);
    
    	return 0;
    }
    

    und hier der Kompiliercode dazu:
    g++ -o kruskalausgabe -g -Wall ./nigsch.cc -lalleg-4.2.2 -lalleg_unsharable

    Bitte kann mir jemand helfen - ich bin wirklich am Ende damit!


Anmelden zum Antworten