Gå til innhold

Har du fått med deg at forumet skal oppgraderes?
I utviklingsdagbok #2 snakker vi om det kommende tekstverktøyet og en ny funksjon - klubber!

Foto

Actionscript 3,

Scriptingspråk (Programmering)

2 svar i denne tråden

#1 Fylling

Fylling

    Bruker

  • Medlemmer
  • 125 innlegg
  •   8. mai 2012

Skrevet 17. mai 2013 - 20:42

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[i][b] != 1)
BrettB[i][b]=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][i] != 1)
BrettB[a][i]=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[i][c+(i*1)] != 1)//venstre -> høgre
BrettB[i][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[i][(b+d)-(i*1)] != 1)//høgre -> venstre
BrettB[i][(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/foru...ad.php?t=248616
  • 0

#2 Fylling

Fylling

    Bruker

  • Medlemmer
  • 125 innlegg
  •   8. mai 2012

Skrevet 21. mai 2013 - 17:29

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 :/
  • 0

#3 Fylling

Fylling

    Bruker

  • Medlemmer
  • 125 innlegg
  •   8. mai 2012

Skrevet 29. mai 2013 - 18:25

Eg klarte å fikse dette, men når ei dronning er innanfor dette feltet:
Postet bilde

f.eks at posisjonen blir y=5 og x=2:
Postet bilde

så vil eg at dronninga skal danne følgande angrepsbane (diagonalt):
Postet bilde

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! :D
Eg klarer å danne dei andre angrepsbanene(beklager dårleg redigering):
Postet bilde


help? :D
  • 0



0 bruker(e) leser denne tråden

0 medlemmer, 0 gjester, 0 skjulte brukere