Wavefront Algorithmus
-
Sehr geehrte Progarmmierergemeinde,
wir sind hier eine Arbeitsgruppe von 2 Leuten und Versuchen den Wavefrontalgorithmus zum laufen zu bringen.
Wavefrintalgorithmus: Für die jenigen, die den nicht kennen: Baut eine Karte und geht an einen Punkt der Karte. In dieser sind Felder, die nicht betreten werden dürfen. Dieser soll den kürzesten Weg von einem Punkt zum anderen finden. Das funktioniert mit der Wavefront. Man geht praktisch von einem Punkt aus und zählt die Schritte bis zum Ziel.Den ersten Schritt haben wir. Nun möchten wir dem Algorithmus sagen, dass bei einem der Quadranten weiter machen soll, in dem ne 2 steht. usw...
das also in eine Schleife packen und so lange machen, bis er am Start ist (wir gehen vom Ziel zum Start).
Wir wären euch sehr dankbar, wenn ihr uns helfen könntet.Gruß
#include <stdio.h> #include <stdlib.h> //TESTAT: Wavefront-Algorithmus /* --------Variablen-------- */ int goal=1; //Ziel int space=0; //Freie Felder int wall=255; //Hindernis int start=21; //Start int i=1; //Koordinaten int start_x=0; int start_y=1; int goal_x=1; int goal_y=4; int x=0; int y=0; int current_x=0; int current_y=0; int temp_x=0; int temp_y=0; //Matrix (falls geändert wird, muss auch bei wavefront Änderungen vorgenommen werden) int map[4][5]= { {255,0,255,0,255}, {255,0,255,0,0}, {0,0,255,0,0}, {255,0,0,0,255}}; void print_map(void); int main(int argc, char *argv[]) //main-Funktion { map[goal_x][goal_y]=goal; //Ziel definieren map[start_x][start_y]=start; //Start definieren printf("Adding Start and Goal:\n"); print_map(); //Variablen current_x=goal_x; current_y=goal_y; map[current_x][current_y]=i; //if (map[current_x][current_y]==start){ // printf("\nStart erreicht.\n");} //Start erreicht //Bewegung //while(map[current_x][current_y]!=start){ if (map[current_x][current_y]==start) { } else //unten { if (map[current_x+1][current_y]==0) { map[current_x+1][current_y]=i+1;} //oben if (map[current_x-1][current_y]==0) { map[current_x-1][current_y]=i+1;} //rechts if (map[current_x][current_y+1]==0) {map[current_x][current_y+1]=i+1;} //links if (map[current_x][current_y-1]==0) {map[current_x][current_y-1]=i+1;}} print_map(); system("PAUSE"); return 0; } void print_map(void) //Karte ausgeben { for (x=0;x<4; x++) { for (y=0;y<5;y++) { if (map[x][y]==255) printf("X "); else if (map[x][y]==21) printf("S "); else if (map[x][y]==1) printf("G "); else printf("%d ",map[x][y]); } printf("\n"); } printf("\n"); }
-
Ich solltet euch besser koordinieren, eine andere 2-Gruppe war schneller:
http://www.c-plusplus.net/forum/278833
Mal sehen, wann hier die nächste Zweiergruppe aufschlägt, wieviele seid ihr in der Gruppe denn insgesamt?
-
Wutz schrieb:
Ich solltet euch besser koordinieren, eine andere 2-Gruppe war schneller:
http://www.c-plusplus.net/forum/278833
Mal sehen, wann hier die nächste Zweiergruppe aufschlägt, wieviele seid ihr in der Gruppe denn insgesamt?
danke dir für den link, ich habe jetzt noch etwas zeit und werde es langsam angehen...
versuche es selbst zu lösen, evt tauchen dann andere fragen auf.
Gruß
-
naja finde den code von wutz bissel zu kompliziert für die aufgabenstellung, ich raff da ned viel
viele dinge hat der prof ned mal in der vorlesung angeschnitten, die du benutzt...
jmd vlt ne idee für ne einfachere lösung