Avatar billede thingholm.dk Nybegynder
25. juli 2002 - 08:56 Der er 6 kommentarer og
1 løsning

Array

Hej

Jeg har et problem med denne kode. Det er ikke altid at den splicer i if-sætningen inde i for-løkken.

Jeg håber at nogen kan finde fejlen.

VH

Anders Thingholm

***

backgrounds = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10"];
tempBackground = random(backgrounds.length);
// Positioner
positionsBackground01 = ["55:321:r", "261:232:r", "748:358:l", "843:422:l"];
positionsBackground02 = ["41:345:r", "204:282:r", "635:281:l", "809:364:l"];
positionsBackground03 = ["27:97:r", "161:325:r", "273:392:r", "555:395:l", "673:323:l", "837:391:l"];
positionsBackground04 = ["40:406:r", "260:364:r", "484:332:l", "654:274:l", "838:376:l"];
positionsBackground05 = ["46:98:r", "192:101:r", "354:403:r", "511:403:l", "709:105:l", "849:106:l"];
positionsBackground06 = ["38:367:r", "151:241:r", "243:193:l", "630:201:l", "748:285:l", "854:370:l"];
positionsBackground07 = ["44:104:r", "218:295:r", "328:362:l", "527:362:l", "663:252:l", "857:96:l"];
positionsBackground08 = ["24:170:r", "168:232:r", "294:304:r", "528:316:l", "794:170:l"];
positionsBackground09 = ["46:228:r", "187:240:r", "331:240:r", "475:251:l", "624:246:l", "773:238:l"];
positionsBackground10 = ["57:361:r", "391:131:r", "512:124:l", "842:389:l"];
// Kalkulerer player positioner
myBackground = eval("positionsBackground" add backgrounds[tempBackground]);
trace ("*******************************************");
myBackground2 = "positionsBackground" add backgrounds[tempBackground];
tempPositionPlayer1 = random(myBackground.length);
finalPositionPlayer1 = myBackground[tempPositionPlayer1];
player1PositionX = (finalPositionPlayer1.split(":")[0]);
player1PositionY = (finalPositionPlayer1.split(":")[1]);
player1PositionFace = (finalPositionPlayer1.split(":")[2]);
myBackground.splice(tempPositionPlayer1, 1);
trace ("Original array: "+myBackground);
//trace ("looking for: "+player1PositionFace)
tempSize = myBackground.length;
//trace (tempSize)
for (x=0; x<tempSize; x++) {
    //trace(x)
    testPos = myBackground[x];
    testPosFace = (testPos.split(":")[2]);
    if (testPosFace == player1PositionFace) {
        trace ("found: "+x+" "+myBackground[x]);
        myBackground.splice(x, 1);
    }
}
trace ("After loop: "+myBackground);
Avatar billede thingholm.dk Nybegynder
25. juli 2002 - 14:36 #1
Hej igen

Det der sker er at først vælges en af de 10 arrays tilfældigt. Derefter trækker den en X værdi og en Y værdi ud af arrayen. til sidst vælger den om spilleren skal "face" 'r' eller 'l'. Problemet er således at spiller 2 ikke må "face" sammen vej som spiller 1 - dvs. at hvis spiller 1 har 'r' som 3. værdi, skal alle elementer med 'r' i 3. værdi fjernes i den valgte array.
Avatar billede thingholm.dk Nybegynder
26. juli 2002 - 10:31 #2
Jeg smider gerne nogle flere point, hvis nogen kan hjælpe...
Avatar billede thingholm.dk Nybegynder
26. juli 2002 - 13:15 #3
Hej igen

Jeg "løste" problemet ved at køre min for-løkke igennem 3 gange...

VH

Anders
Avatar billede barklund Nybegynder
26. juli 2002 - 13:38 #4
Jeg har gennemskuet det - tror jeg. Prøv istedet med følgende for-løkke:

for (x=0; x<myBackground.length; ) {
    //trace(x)
    testPos = myBackground[x];
    testPosFace = (testPos.split(":")[2]);
    if (testPosFace == player1PositionFace) {
        trace ("found: "+x+" "+myBackground[x]);
        myBackground.splice(x, 1);
    } else {
      x++;
    }
}

Nu du splicer, så renamer du dine keys... derfor kan du efter at have splicet "0" ud ikke fortsætte med "1", for den hedder jo nu "0"... :o)

/Barklund
Avatar billede thingholm.dk Nybegynder
26. juli 2002 - 13:49 #5
takker mange gange - det giver jo mening :-)
Avatar billede barklund Nybegynder
26. juli 2002 - 13:53 #6
Værker det?
Avatar billede thingholm.dk Nybegynder
26. juli 2002 - 14:05 #7
jepper, det ser sådan ud!
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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