stelar7 Skrevet 18. juli 2013 Del Skrevet 18. juli 2013 (endret) Prøver å lage et sjakk spill, men har litt problem med logikken. Når 2 konger kommer nært hverandre (1 plass mellom) så kommer det stackoverflow. Relevant kode: https://gist.github....75a4964d384e1c8 full kode for de interesserte: https://github.com/stelar7/Chess/tree/master/chess/src/my/game/stelar7/chess Noen som har fix? Endret 18. juli 2013 av stelar7 Lenke til kommentar
javanuben Skrevet 18. juli 2013 Del Skrevet 18. juli 2013 (endret) Jeg har ikke lyst til å gi deg "fixen", men vil prøve å dytte deg i riktig retning. Stack overflow kommer vanligvis av at du har (uendelig) mange rekursive kall. Når to konger er posisjonert med én rute mellom, kommer for-løkken din til å finne den andre kongen, finne ut at den er motstanderen, og kalle canMove() på den, med samme koordinater. Dette kallet vil igjen sjekke om den kongen kan flytte til den ruten, noe den kan, iterere over brikkene i den samme for-løkken, og finne den andre kongen igjen. Dermed vil den kalle canMove() på den, med samme koordinater, igjen, og du ser hvor dette går... Det er mange løsninger på et slikt problem, den mest opplagte er kanskje å unngå "uendelig" rekursiv kalling, ved å f.eks. sørge for at for-løkken ikke kommer til å finne den brikken som kallet opprinnelig oppstod fra. En annen løsning kan være å skrive om metoden til å løse problemet iterativt, istedet for rekursivt. Spør igjen dersom du fortsatt sitter fast, og kom gjerne med litt egne tanker om problemet så kan vi heller gi deg små dytt i riktig retning, enn å gi deg en løsning. Lykke til! Edit: Mistet et ord. Endret 18. juli 2013 av javanuben Lenke til kommentar
stelar7 Skrevet 18. juli 2013 Forfatter Del Skrevet 18. juli 2013 Viste hvorfor den kom, men kom ikke på hvordan jeg skulle fikse det. But now I know Takk for hjelpen! P.S Fikk en derp følelse da eg leste hva du skrev.. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå