16. maj 2005 - 10:54Der er
6 kommentarer og 1 løsning
finde rundt i en maze
Jeg har lavet en matrix som er min maze, og indeholder 0 og 1. 1 = walkable og 0 = ikke walkable
Jeg har så nogle forskellige punkter som mit objekt selv skal finde hen til. Lad os sige at det første punkt mit objekt skal finde hen til er x=8 og y=4 fra startpunkt 1,1 M= mål
Jeg har nu et problem med opbygningen af denne løsning da det ender med at jeg har 27 if sætninger og 13 case switch, samt 11 while løkker for at kunne finde rundt , og så virker det ikke alligevel :-)
Ok nu overdrev jeg lidt. men der må findes en lidt nemmere måde, og måske er der nogen der kender en lidt mere overskuelig måde at bygge det op ?? håber i kan hjælpe derude :-)
Jeg har implementeret A* strategien til at finde shortest path så det er ikke det der er problemet men derimod at find rundt uden at gå igennem forhindringerne
Hmm... din shortest path algorithme skal da helst tage højde for forhindringerne? Så det må vel være i den der er et problem hvis du ikke kan det :-/
Men det ville måske være lidt nemmere med noget kode. For umiddelbart vil jeg sige, at du behøver én if-sætning if(next==1) //ok, gå videre else //skidt, find en anden vej...
du har ret, min shortest path virker ikke helt da jeg mangler at få denne her funktion til at virke :-)
Ja der skal selvfølgelig også være nogle IF sætninger, men kunne godt tænke mig at høre om en fremgangsmåde til opbygningen. Hvad for nogle klasser skal jeg bruge? skal jeg lave Nord, Syd Øst Vest klasser osv osv
Tja... så misforstod jeg problemet :) Det er selve opbygningen af labyrinten du spørger til. Det afhænger selvfølgelig af, hvad du skal bruge den til ;) Men umiddelbart vil jeg syntes det er nemmest med en form for træstruktur, hvor du har nogle knuder og kanter. Knuderne kan så evt have 4 kanter tilknyttet (og dem kan du da godt kalde nord, syd osv. På kanterne kan du så have en boolean, hvor du sætter om den (altså kanten mellem de to knuder) er lukket eller åben.
Hehe... når jeg nu kigger på din fine tegning med 0 og 1-tal, ser det jo faktisk ud til, at det skal være knuden der skal være "gangbar" og ikke kanten. Så den omtalte boolean skal nok være på knuderne.
Jooo har hørt at man kan gøre det med træstrukturen..... men A* bruger ikke træær... men nogle sorted lister.... og nogle værdier til at beregne længden til mål(heuristik)...
Ok. Nu kender jeg ikke A*. Men hvis du vil bruge den, er det jo så tydeligt, at du skal bruge sorterede lister til at bygge din labyrint op. Men jeg vil nu helt klart foretrækk e en slags træstruktur og så en brede først søgning! Det ligger lidt mere op ad javas Objekt Orienterede natur ;)
Men hvis du allerede ved, at du skal bruge sorterede lister til at bygge labyrinten op med, forstår jeg igen ikke hvad du spørger om :(
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.