Fylling Skrevet 17. mai 2013 Del Skrevet 17. mai 2013 Hei! Eg sitter med ein array som minnes om eit sjakkbrett, og eg strever med å skrive angripsbanene til dronningane som blir plassert ut. Kode: Array( Array(0,0,0,0,0,0,0,0), Array(0,0,0,0,0,0,0,0), Array(0,0,0,0,0,0,0,0), Array(0,0,0,0,0,0,0,0), Array(0,0,0,0,0,0,0,0), Array(0,0,0,0,0,0,0,0), Array(0,0,0,0,0,0,0,0), Array(0,0,0,0,0,0,0,0), ) Kalt, BrettB. Det eg vil er at når ein av verdiane blir forandret til heiltallet '1', vil angrepsbanane bli dannet ved å skifte dei til heiltallet '2'. f.eks: Korleis array'en ser ut etter ein loop trace: Kode: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Så forandres eit av verdiane til '1': Array[1][2] = 1; Kode: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Og så vil angrepsbanene bli dannet i forhold til heiltallets plassering: Forinfo: variablane a og b brukt i koden under er frå for loop, der første loopen har ein køyr på 8 runder (var a), og inneholder ein ny loop med 8 runder (var b).Enkelt sagt inneholder var b info om kor i Arrayen, arrayen som innehalder heiltallet 1 er. b blir som y aksen og a som x aksen. variabellen i, gjør ein loop på 8 runder slik at den skal dekke alle verdiane som trengs å bli omskrevet. Koden: http://pastebin.com/9iexdPQC Loddrett: Kode: 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 kode: if(BrettB != 1) BrettB=2; Så vatnrett: Kode: 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 1 2 2 2 2 2 2 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 kode: if(BrettB[a] != 1) BrettB[a]=2; Så diagonalt frå venstre til høgre: Kode: 0 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 1 2 2 2 2 2 2 0 2 2 0 0 0 0 0 0 2 0 2 0 0 0 0 0 2 0 0 2 0 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 0 2 0 kode: if(i < BrettB.length-c && BrettB[c+(i*1)] != 1)//venstre -> høgre BrettB[c+(i*1)]=2; Så diagonalt frå høgre til venstre: Kode: 0 2 0 2 0 0 0 0 2 2 2 0 0 0 0 0 2 1 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 2 0 2 0 0 0 0 0 2 0 0 2 0 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 0 2 0 kode: if((b+d)-(i*1)>=0 && BrettB[(b+d)-(i*1)] != 1)//høgre -> venstre BrettB[(b+d)-(i*1)]=2; Håper dere fortsatt henger med! Uansett, så kommer vi nå til problemet! Køyrer eg denne koden 4 ganger oppstår det ein feil, der angrepsbana frå venstre til høgre ikkje skrives komplett. Og eg ender opp med dette: Kode: 0,2,2,2,2,2,0,0 2,2,1,1,2,2,2,2 2,1,2,1,2,2,2,2 2,2,2,2,2,2,0,0 2,2,2,2,0,2,2,0 2,2,2,2,0,0,2,2 0,2,2,2,0,0,0,2 0,2,2,2,0,0,0,0 Her ser vi at BrettB[1][2] == 1, men den diagonale angrepsbanen ikkje fortsetter :/ Følgande skal vere 2, men er fortsatt 0: BrettB[4][4] BrettB[6][5] BrettB[7][6] Nokon som kan hjelpe meg? Køyr på med spørsmål! PS. Diskusjon.no er så bugget at eg ikkje kan bruke noko js relatert på sida. Så eg linker til denne tråden på freak.no også: http://freak.no/forum/showthread.php?t=248616 Lenke til kommentar
Fylling Skrevet 21. mai 2013 Forfatter Del Skrevet 21. mai 2013 FIKSET! Men kan nokon hjelpe meg i å skrive eit script som danner ei diagonal angrepsbane frå høgre til venstre? Strever spesiellt med denne delen, aner ikkje kvifor :/ Lenke til kommentar
Fylling Skrevet 29. mai 2013 Forfatter Del Skrevet 29. mai 2013 Eg klarte å fikse dette, men når ei dronning er innanfor dette feltet: f.eks at posisjonen blir y=5 og x=2: så vil eg at dronninga skal danne følgande angrepsbane (diagonalt): Men det klarer eg ikkje å kode :/ Så eg lurte om nokon kunne gi meg eit hint til korleis eg skal tenke ut dette her, altså matematisk framgangsmetode f.eks? Alt hjelper! Eg klarer å danne dei andre angrepsbanene(beklager dårleg redigering): help? 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å