[js] multidimensional array als raster vullen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen VD

Jeroen VD

26/07/2013 16:19:28
Quote Anchor link
beste phpers,

ik ben bezig met wat een spelletje (4 op een rij), en nu wil ik in javascript (of jQuery, gebruik dat maar dit is geloof ik plain js) een multidimensional array van 8x8 gebruiken om bij te houden waar alle speelstukken zich bevinden, door horizontaal x1-8 te gebruiken als aanspreekvariabele, en y1-8 voor verticaal (ik hoop dat jullie het snappen). daar staat dan heel eenvoudig 1 voor er is op dat punt een speelstuk aanwezig en 0 voor niet aanwezig. (dus ik wil kunnen aanspreken met piecesPosition[x3][y2] bijvoorbeeld). nu had ik het volgende bedacht om deze array alvast te vullen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
var piecesPosition = new Array(8);
for    ( y = 1; y <= 8; y++ ){
    for ( x = 1; x <= 8; x++ ){
        piecesPosition['y' + y]['x' + x] = 0;
    }
}

hierbij krijg ik de volgende melding: Cannot set property 'x1' of undefined

nu weet ik niet veel van js af (daarom doe ik het juist daarin), maar naar mijn idee moet dit goed zijn. heeft iemand suggesties hoe ik dit wel moet doen?
Gewijzigd op 26/07/2013 16:20:16 door Jeroen VD
 
PHP hulp

PHP hulp

24/11/2024 16:43:19
 
Nick Smit

Nick Smit

26/07/2013 16:23:40
Quote Anchor link
Dat komt omdat 'piecesPosition[y1]' not geen array is. Ik denk dat dit je probleem oplost

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
var piecesPosition = new Array(8);
for    ( y = 1; y <= 8; y++ ){
    piecesPosition['y' + y] = new Array(8); // Maak een array aan van de Y coordinaat.
    for ( x = 1; x <= 8; x++ ){
        piecesPosition['y' + y]['x' + x] = 0;
    }
}
 
Jeroen VD

Jeroen VD

26/07/2013 16:32:31
Quote Anchor link
jup, dit werkt helemaal! al vind ik dat raar, ik had bijna hetzelfde al eerder geprobeerd haha, maar dit zal wel net wat anders zijn. simpel toch eigenlijk

Bedankt!

nu het volgende, als ik dan wil controleren tot welke hoogste y waarde de positie nog leeg is in dezelfde kolom (x), wil ik dat zo uitlezen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
var positionEmpty = true;
    for ( y = 1; positionEmpty == true; y++)
    {
        if ( piecesPosition['y' + y]['x' + x] == 1 )
        {
            positionEmpty = false;
            y = y - 1;
        }
    }

poept als het goed is de hoogste nog lege y waarde uit, naar mijn idee, maar toch geeft ie deze foutmelding: Uncaught TypeError: Cannot read property 'x1' of undefined

iemand ideen?
Gewijzigd op 26/07/2013 17:08:15 door Jeroen VD
 
Wouter J

Wouter J

26/07/2013 18:42:09
Quote Anchor link
Dan bestaat weer piecesPosition[yX] (met X een getal) niet.

Tevens raad ik je af om de array constructor te gebruiken, gewoon [].
 
Jeroen VD

Jeroen VD

26/07/2013 18:51:23
Quote Anchor link
maar dat is het gekke.... die bestaat wel. als ik console.log(piecesPosition['y3']['x2']) oid doe, krijg ik een nette melding dat die gevuld is met het getal 0.

update: ik weet niet waarom, maar hij doet het nu, functie nog eens herschreven met wat andere logica
Gewijzigd op 27/07/2013 16:37:18 door Jeroen VD
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.