Dies ist ein Tutorial zum Erstellen einer interaktiven Anwendung zur Lösung 
des Fortschrittsproblems des Pferdes in der 
Verarbeitung und in 
p5.js.Teil I.
Erstellen Sie ein Pferd - Rechteck rect (). Das Pferd ist durch einen grauen Kreis gekennzeichnet.
rect(bx, by, boxSize, boxSize); fill(50);  
Lassen Sie das Pferd alle Zellen übermalen, durch die es geht, so ist es 
hier .
Lassen Sie das Pferd als Nächstes von der Mitte des Käfigs angezogen werden, wenn Sie die 
mouseRealised () -Taste 
loslassen .
Fügen 
Sie die Variablen 
storX und 
storY hinzu , in denen die Koordinaten der Zelle gespeichert werden, auf der sich der Cursor befindet. Wenn die linke Taste gedrückt wird und sich der Cursor über dem Pferd befindet, speichern Sie die Koordinaten des aktuellen 
Zellenmods in den Variablen 
storX und 
storY :
  void mouseClick() { if (mouseX >= x && mouseX <= x+100 && mouseY >= y && mouseY <= y+100) { if (overBox && mousePressed && (mouseButton == LEFT)) { storX=x;  
Wenn Sie die Taste loslassen, werden die Koordinaten storX und storY in die Koordinaten der Ritter KnightX und KnightY geladen.
  knightX=storX; knightY=storY; 
Wenn es eine standardmäßige 
moolPressed-Boolesche Variable für den 
Status der gedrückten Taste gibt, existiert eine 
solche Variable für den 
Status der gedrückten Taste nicht - erstellen Sie sie selbst:
  boolean bool_mouseReleased;  
Wenn nun die Maustaste nicht gedrückt wird (d. H. 
Bool_mouseReleased = true ), übermalen Sie die Zelle mit den Koordinaten storX und storY
 if((bool_mouseReleased ) && (x==storX && y==storY )){ modColor=200; } 
Zeichne ein Pferd in die Mitte des Käfigs Überprüfen Sie 
hierTeil II
Fügen Sie eine Abbrechen-Schaltfläche hinzu.
Ein Beispiel für die Bedienung von Tasten finden Sie 
hier .
Erstellen Sie zunächst 
IntList- Listen mit 
Zellkoordinaten, an denen das Pferd vorbeigegangen ist. Zeichnen Sie den Knopf selbst in der unteren linken Ecke:
 
Listen initialisieren
 listOfCoordinatesX = new IntList(); listOfCoordinatesY = new IntList(); listOfCoordinatesX.append(0); listOfCoordinatesY.append(0); 
Am Ende des nächsten Zuges (beim Loslassen der Maustaste) fügen wir die Zellkoordinaten zur Liste / zum Stapel hinzu:
  if(overKnight){ knightX=storX; knightY=storY; listOfCoordinatesX.append(int(knightX)); listOfCoordinatesY.append(int(knightY)); } 
Erstellen wir eine boolesche Funktion 
overButton () , die true zurückgibt, wenn sich der Mauszeiger über der Schaltfläche befindet, und die Funktion 
buttonUpdate () , die die Variable aktualisiert
boolButton  void buttonUpdate() { if ( overButton(buttonX, buttonY, buttonSize, buttonSize) ) { boolButton = true; } else { boolButton = false; } } boolean overButton(int x, int y, int width, int height) { if (mouseX >= x && mouseX <= x+width && mouseY >= y && mouseY <= y+height) { return true; } else { return false; } } 
Die Variablen und Listen werden in der Konsole in der Hauptprogrammschleife angezeigt:
  println(boolButton); println(listOfCoordinatesX); println(listOfCoordinatesY); 
Überprüfen Sie 
hierTeil III
Fügen Sie die Funktion zum Springen zur vorherigen Zelle hinzu, wenn Sie auf die Schaltfläche Abbrechen klicken.
In der Funktion 
mousePressed () prüfen 
wir , ob die Abbrechen-Taste gedrückt wurde. Wenn die Schaltfläche gedrückt wird, löschen Sie die letzten Elemente aus den Koordinatenlisten (oben auf den Stapeln), wenn die Liste mehr als ein Element enthält:
 if(boolButton && listOfCoordinatesX.size()>1) { listOfCoordinatesX.pop(); listOfCoordinatesY.pop(); } 
Wenn Sie in der 
mouseClick () -Methode der 
Module- Klasse auf die Schaltfläche 
Abbrechen klicken, speichern wir die Elemente der Koordinatenlisten (oben auf den Stapeln) in den Variablen 
storX und 
storY :
 if(boolButton && mousePressed) { storX= listOfCoordinatesX.get(listOfCoordinatesX.size()-1); storY= listOfCoordinatesY.get(listOfCoordinatesY.size()-1); } 
Wenn Sie die Abbrechen-Schaltfläche loslassen, kehren wir zur vorherigen Koordinate zurück und kehren zur ursprünglichen (schwarzen) Farbe in die Zelle zurück:
 if(boolButton && bool_mouseReleased){ if(x==storX && y==storY ) { modColor=0; } } 
In der Funktion 
mouseReleased () platzieren wir unser Pferd in der entsprechenden Zelle des Feldes.
 if(boolButton) { knightX=storX; knightY=storY; } 
Jetzt funktioniert das Programm in der Verarbeitungssprache korrekt, und die Rückgängig-Funktion im Programm auf p5.js funktioniert nicht richtig.
Überprüfen Sie das Programm auf p5.js 
hierErsetzen Sie die InList-Listen im Hauptprogramm durch int [] -Arrays. Mit der Funktion 
append () können Sie dem Array sowie der Liste dynamisch ein Element hinzufügen
  listOfCoordinatesX = append(listOfCoordinatesX,0); 
Sie können ein Element mit pop () nicht aus einem Array abrufen. Zu diesem Zweck gibt es eine Funktion, mit der die Länge des Arrays um ein 
Shorten () reduziert werden kann. Verwenden Sie anstelle von 
size () die Länge, um die Länge des Arrays zu bestimmen
Dieses Programm kann als js-Skript zu einer HTML-Seite hinzugefügt werden. Um das Skript auszuführen, müssen Sie process.js verwenden
Sehen Sie sich diese Seite 
hier an .
Und 
hier ist das gleiche, aber mit dem Bild eines Pferdes.
Und 
hier kann das Pferd nur mit dem Buchstaben 
G laufen 
. Der Rest der Bewegungen ist verboten.
Link zu Github mit den Texten der im Artikel vorgestellten Programme.