0

All rows always have same numbers, why? They should take random number to populate it. Also, how can I repair it? Once I saw answer here but now I cannot find it.

var mapSizex = 5;
var mapSizey = 6;
var mapArray = [];

$(function() {
  console.log("ready!");
  $('#map-draw').html(drawMap());
});

function mapGenerator() {
  for (i = 0; i < mapSizex; i++) {
    for (x = 0; x < mapSizey; x++) {
      mapArray[i, x] = getRandom(1, 5);
    }
  }
}

function drawMap() {
  mapGenerator();
  var map = '';
  tileID = 0;
  for (i = 0; i < mapSizex; i++) {
    map = map + '<br style="clear: both;">';
    for (x = 0; x < mapSizey; x++) {
      map = map + '<div class="tile tileID' + tileID + '">' + mapArray[i, x] + '</div>';
      tileID++;
    }
  }
  return map;
}

function getRandom(min, max) {
  var x = Math.floor((Math.random() * max) + min);
  return x;
}
.tile {
  float: left;
  height: 20px;
  width: 20px;
  border: 1px solid black;
  text-align: center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="main-container">
  <div id="map-container">
    <div id="map-draw"></div>
  </div>
</div>

To post it I need to add some more content but all included information's should be enough to find what I mean.

4
  • 4
    Dimensional arrays don´t work like that. mapArray[i,x] is invalid, it should be mapArray[i][x] Commented Oct 31, 2016 at 16:31
  • Possible duplicate of How can I create a two dimensional array in JavaScript? Commented Oct 31, 2016 at 16:32
  • 3
    As an additional note, your syntax won't throw an error because it is valid use of the comma operator, which explains your results. Commented Oct 31, 2016 at 16:33
  • [][] --> Gooood right :D sorry for stupid question and THX ! Commented Oct 31, 2016 at 16:34

1 Answer 1

2

here is a link to JSFIDDLE woking code

It should be mapArray[i][x] and I added mapArray[i]=[]; in the outer loop.

here is your fixed code:

var mapSizex=5;
var mapSizey=6;
var mapArray=[];

$(function() {
    console.log( "ready!" );
    $('#map-draw').html(drawMap());
});

function mapGenerator(){
    for(i=0;i<mapSizex;i++){
    mapArray[i]=[];
        for(x=0;x<mapSizey;x++){
            mapArray[i][x]= getRandom(1,5);
      console.log(i,x,getRandom(1,5))
        }
    }
}
function drawMap(){
    mapGenerator();
  console.log(mapArray)
    var map='';
    tileID=0;
    for(i=0;i<mapSizex;i++){
        map=map+'<br style="clear: both;">';
        for(x=0;x<mapSizey;x++){
            map=map+'<div class="tile tileID'+tileID+'">'+mapArray[i][x]+'</div>';
            tileID++;
        }
    }return map;
}
function getRandom(min,max) {
    var x = Math.floor((Math.random() * max) + min);
    return x;
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.