Was ist hier genau das Problem (Programmieren = p5.js)?

1 Antwort

Du schließt die draw-Funktion zu früh.

function draw() {
  /* ... */
}

if (keyIsDown(82)) {
  /* ... */

Außerhalb von setup und draw ist die Funktion keyIsDown nicht bekannt.

Verschiebe also die geschweifte Klammer vor dem if an das Ende deines Codes, damit alle Code-Zeilen (wie sicherlich beabsichtigt) im Körper von draw stehen.

Diesen Aufruf in deinem if:

if (keyIsDown(82)) {
  setup();
}

finde ich übrigens unschön. Die setup-Funktion ist nicht für einen Reset gedacht, sondern als initialer Setup, bei dem auch das Canvas-Element kreiert wird, auf dem gezeichnet wird. Bei einem Reset ist es aber nicht notwendig, ein neues Canvas-Element anzulegen, das alte Element kann doch wiederverwendet werden.

Des Weiteren warnt die Dokumentation:

(...) This method should be called only once at the start of setup. Calling  createCanvas more than once in a sketch will result in very unpredictable behavior. (...)

Quelle

Besser wäre eine separate reset-Funktion, die nur das zurücksetzt, was tatsächlich zurückgesetzt werden muss.

function reset() {
  /* set initial state ... */
}

function setup() {
  createCanvas(310, 400);
  reset();
}

function draw() {
  /* ... */

  if (keyIsDown(82)) {
    reset();
  }
}