Haythem Tarchouna
Haythem Tarchouna

Reputation: 17

JavaScript: p5.js Unknown Error (Solved Now)

class Target {
    constructor(_x, _y, _toul, _ardh, _color, _health) {
    this.x = _x;
    this.y = _y;
    this.toul = _toul;
    this.ardh = _ardh;
    this.col = _color;
    this.health = _health;
  }
  destroy() {
    if (this.health === 0) {
    this.x = 900;
    this.y = 900;
    }
  }
  //colide w change color
  show() {
  fill(this.col);
    rect(this.x, this.y, this.toul, this.ardh);
  }
}

function setup() {
  createCanvas(1000, 1000);
  var target = [];
  for (var i = 0; i < 31; i++) {
  if (i < 11) {
    var x = 10 + 10 * i;
    var y = 20;
    var toul = 10;
    var aredh = 10;
    var col = color(255, 0, 0);
    var health = 3;
  }
  if (i < 21) {
    x = 10 + 10 * i - 110;
    y = 40;
    toul = 10;
    ardh = 10;
    health = 2;
    col = color(0, 255, 0);
  }
  if (i < 31) {
    x = 10 + 10 * i - 210;
    y = 50;
    toul = 10;
    ardh = 10;
    health = 1;
    col = color(0, 0, 255);
  }
  target[i] = new Target(x, y, toul, ardh, col, health);
  }
}

function draw() {
  for (var i = 0; i < target.length; i++) {
    target[i].show();
  }
}

Can anyone tell me the problem and how to fix it please, this is my first attempt at object-oriented programming. I'm attempting to create a game: 3 lines of rectangles each with its own color and health etc

but i get this error : 3: Uncaught SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode

"%cDid you just try to use p5.js's str() function? If so, you may want to move it into your sketch's setup() function.\n\nFor more details, see: github.com/processing/p5.js/wiki/Frequently-Asked-Questions#why-cant-i-assign-variables-using-p5-functions-and-variables-before-setup"

Upvotes: 1

Views: 298

Answers (1)

AdamG
AdamG

Reputation: 2630

You are declaring your array of targets locally in setup() so when you try to access it in draw() it does not exist. Declare it globally above setup() and that should fix it:

 var target = [];
  function setup() {
      createCanvas(1000, 1000);
...

Upvotes: 1

Related Questions