Avatar billede mickni33 Nybegynder
16. maj 2005 - 10:54 Der 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

0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 0 1 1 1 0
0 1 0 0 1 0 1 0 1 0
0 1 1 0 1 1 1 0 1 0
0 0 1 1 1 0 0 0 M 0
0 0 0 0 0 0 0 0 0 0

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 :-)
Avatar billede mickni33 Nybegynder
16. maj 2005 - 10:56 #1
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
Avatar billede martinhrj Nybegynder
16. maj 2005 - 20:42 #2
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...

Eller har jeg misforstået problemet?
Avatar billede mickni33 Nybegynder
16. maj 2005 - 20:49 #3
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
Avatar billede martinhrj Nybegynder
16. maj 2005 - 20:57 #4
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.

Gav det mening?
Avatar billede martinhrj Nybegynder
16. maj 2005 - 21:06 #5
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.
Avatar billede mickni33 Nybegynder
16. maj 2005 - 21:11 #6
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)...
Avatar billede martinhrj Nybegynder
16. maj 2005 - 21:17 #7
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 :(
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester