Vehicle.stop не является функцией p5. js - PullRequest
0 голосов
/ 07 мая 2020

Я начинаю изучать p5. js, и, чтобы помочь мне в этом, я начал создавать «игру вождения». Это даже не близко к завершению, но я столкнулся с ошибкой, говоря, что

vehicle.stop не является функцией.

Смысл игры в том, чтобы пользователь нажимает стрелку вверх, чтобы «вести» машину, даже если при нажатии на нее не происходит никакого движения. У пользователя есть 60 секунд для игры, но в определенные моменты игры появляется знак остановки, и пользователь должен нажимать пробел как можно быстрее. Если пробел нажат в течение 1 секунды после появления знака, пользователь получает балл. Я не уверен, почему я получаю сообщение об ошибке, и мне было интересно, может ли кто-нибудь указать мне правильное направление. Любая помощь приветствуется! :)

var count = 6;
let timer = 60;
var score = 0;

function preload() {

  car = loadImage('car.png');
  stop = loadImage('stop.png');

}

function setup() {
  createCanvas(400, 400);

  background(100, 200, 255);

  stroke(150);
  strokeWeight(120);
  line(1000, -2000, 10, 400);

  line(600, 1000, 250, 20);

  strokeWeight(250);
  line(200, 600, 200, 200);

  strokeWeight(5);
  stroke(255);
  line(210, 100, 210, 10);

  line(210, 300, 210, 150);

  image(car, 110, 220);


}

function draw() {

  strokeWeight(1);
  stroke(200);
  fill(0);
  text("Score: " + score, 20, 30);
  text("Time Left: " + timer, 20, 45);

  if ((frameCount % 120 == 0) && (timer > 0)) {
    timer--;
  }

  if ((timer == 60) || (score == 0)) {
    fill(0);
    rect(115, 225, 200, 70);
    fill(255);
    text("START DRIVING GAME ", 142, 250);
    text("CLICK BUTTON TO BEGIN", 135, 265);
    text("USE UP-ARROW KEY TO DRIVE", 130, 280);
  }

  if ((timer == 0) || (score == count)) {
    fill(0);
    rect(130, 220, 125, 70);
    fill(255);
    text("GAME OVER", 150, 250);
    text("You scored: " + score, 150, 265);
  }


}

function mouseClicked() {
  vehicle.stop();

}

function keyPressed() {
  if (keyCode == UP_ARROW) {
    car.go();
  } else if (keyCode == 32) {
    car.stop();
  }
}

function vehicle() {

  this.go = function() {
    goTime = new Date();

  }

  this.stop = function() {

    if ((timer == 55) || (timer == 40) || (timer == 32) || (timer == 23) ||
      (timer == 15) || (timer == 6)) {

      image(stop, 170, 90);

    }
    stopTime = new Date();
    if ((vehicle.stop) && (elapsedTime == 1)) {
      score = score + 1;
    } else(score = score + 0);

  }

  elapsedTime = goTime - stopTime;

}

1 Ответ

0 голосов
/ 07 мая 2020

Привет :) Rabbid76 указал, что в коде есть дополнительные ошибки.

Причина, по которой vehicle.stop не найден, заключается в том, что «функции-конструкторы», такие как функция транспортного средства, которую вы написали, необходимо определить с помощью ключевого слова «new».

let myVehicle = new vehicle();

myVehicle.stop() //should work, once you fix the additional errors.

Есть некоторые хорошая информация об этом на этой странице: https://www.w3schools.com/js/js_object_constructors.asp

Я всегда предпочитаю использовать классы. https://www.w3schools.com/js/js_classes.asp

...