с помощью p5 js с javascript моя функция перемещения работает при отправке строки, но не при отправке переменной, содержащей строку - PullRequest
1 голос
/ 02 мая 2020

Используя библиотеку, известную как p5 с javascript Я пытаюсь сделать игру змеей, но она просто не работает. как описано в заголовке, он перемещается только тогда, когда я даю функции перемещения аргумент, такой как «ВНИЗ», но не когда я даю ему переменную direction, содержащую значение «ВНИЗ».

let fr = 5

function setup() {
  frameRate(fr)
  createCanvas(400, 400);
}

x1 = 201
y1 = 201
direction = "NONE"

function move(direction) {
  if (direction === "UP") {
    y1 = y1 - 20
  }
  else if (direction === "DOWN") {
    y1 = y1 + 20
  }
  else if (direction === "LEFT") {
    x1 = x1 - 20
  }
  else if (direction === "RIGHT") {
    x1 = x1 + 20
  }
}

function draw() {
  let c = color('#1cb82e')
  direction = "down"
  background(0);
  square(x1,y1,18);
    fill(c);
  move(direction);
}

function keyPressed() {
  var validKeys = [37,38,39,40]
  var dict = {
    37:"LEFT",
    38:"UP",
    39:"RIGHT",
    40:"DOWN"
  }
  if (validKeys.includes(keyCode) === true) {
    direction = dict[keyCode];
  }
  print(dict[keyCode])
}

Может кто-нибудь помочь мне с этим? Спасибо!! Изменить: в случае, если кто-то еще хочет использовать веб-редактор, вот ссылка https://editor.p5js.org/

1 Ответ

2 голосов
/ 02 мая 2020

Вы можете использовать свою глобальную переменную direction и не принимать никаких аргументов в своей функции move:

let fr = 5

function setup() {
  frameRate(fr)
  createCanvas(400, 400);
}

x1 = 201
y1 = 201
direction = "NONE"

function move() {
  if (direction === "UP") {
    y1 = y1 - 20
  }
  else if (direction === "DOWN") {
    y1 = y1 + 20
  }
  else if (direction === "LEFT") {
    x1 = x1 - 20
  }
  else if (direction === "RIGHT") {
    x1 = x1 + 20
  }
}

function draw() {
  let c = color('#1cb82e')
  background(0);
  square(x1,y1,18);
    fill(c);
  move();
}

function keyPressed() {
  var validKeys = [37,38,39,40]
  var dict = {
    37:"LEFT",
    38:"UP",
    39:"RIGHT",
    40:"DOWN"
  }
  if (validKeys.includes(keyCode) === true) {
    direction = dict[keyCode];
  }
  print(dict[keyCode])
}
...