1
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"

  • Please format the code and text in general. Use the edit link to edit the question. – Mika Sundland Dec 11 '17 at 01:27
  • try with "use strict"; on top of your code as your error message suggests. – pegla Dec 11 '17 at 01:31
  • 1
    Possible duplicate of [Uncaught SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode](https://stackoverflow.com/questions/33001246/uncaught-syntaxerror-block-scoped-declarations-let-const-function-class-no) – pegla Dec 11 '17 at 01:32

1 Answers1

1

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);
...
AdamG
  • 2,570
  • 3
  • 24
  • 35