Ini adalah tutorial tentang membuat aplikasi interaktif untuk memecahkan 
masalah kemajuan kuda dalam 
pemrosesan dan 
p5.jsBagian I
Buat persegi panjang kuda - (). Kuda itu dilambangkan dengan lingkaran abu-abu.
rect(bx, by, boxSize, boxSize); fill(50);  
Biarkan kuda mengecat semua sel yang dilaluinya, begitulah di 
sini .
Selanjutnya, biarkan kuda tertarik ke tengah kandang ketika melepaskan tombol 
mouseRealised () .
Tambahkan variabel 
storX dan 
storY yang akan menyimpan koordinat sel tempat kursor berada. Jika tombol kiri ditekan dan kursor berada di atas kuda, maka simpan koordinat 
mod sel saat ini dalam variabel 
storX dan 
storY :
  void mouseClick() { if (mouseX >= x && mouseX <= x+100 && mouseY >= y && mouseY <= y+100) { if (overBox && mousePressed && (mouseButton == LEFT)) { storX=x;  
Saat Anda melepaskan tombol, koordinat storX dan storY dimuat ke dalam koordinat knightX dan knightY knightY.
  knightX=storX; knightY=storY; 
Jika ada variabel 
boolean yang ditekan 
mouse standar untuk status tombol yang ditekan, maka variabel tersebut tidak ada untuk status tombol yang ditekan - buat sendiri:
  boolean bool_mouseReleased;  
Sekarang, jika tombol mouse tidak ditekan (mis. 
Bool_mouseReleased = true ), cat di atas sel dengan koordinat storX dan storY
 if((bool_mouseReleased ) && (x==storX && y==storY )){ modColor=200; } 
Gambarlah seekor kuda ke tengah kandang Periksa di 
siniBagian II
Tambahkan tombol batal.
Contoh yang menggambarkan operasi tombol ada di 
sini .
Pertama, buat daftar 
IntList koordinat 
sel di mana kuda itu lewat; menggambar tombol itu sendiri di sudut kiri bawah:
 
Inisialisasi Daftar
 listOfCoordinatesX = new IntList(); listOfCoordinatesY = new IntList(); listOfCoordinatesX.append(0); listOfCoordinatesY.append(0); 
Di akhir langkah selanjutnya (saat melepaskan tombol mouse) kami menambahkan koordinat sel ke daftar / tumpukan:
  if(overKnight){ knightX=storX; knightY=storY; listOfCoordinatesX.append(int(knightX)); listOfCoordinatesY.append(int(knightY)); } 
Mari kita membuat fungsi boolean 
overButton () , yang mengembalikan true jika kursor mouse berada di atas tombol dan fungsi 
buttonUpdate () , yang memperbarui variabel
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; } } 
Variabel dan daftar ditampilkan di konsol di loop program utama:
  println(boolButton); println(listOfCoordinatesX); println(listOfCoordinatesY); 
Periksa di 
siniBagian III
Tambahkan fungsi melompat ke sel sebelumnya ketika Anda mengklik tombol batal.
Dalam fungsi 
mousePressed () , 
kami memeriksa untuk melihat apakah tombol batal telah ditekan. Jika tombol ditekan, maka hapus elemen terakhir dari daftar koordinat (atas tumpukan), jika daftar memiliki lebih dari satu elemen:
 if(boolButton && listOfCoordinatesX.size()>1) { listOfCoordinatesX.pop(); listOfCoordinatesY.pop(); } 
Ketika Anda mengklik tombol batal di metode 
mouseClick () dari kelas 
Module , kami menyimpan elemen daftar koordinat (bagian atas tumpukan) ke dalam variabel 
storX dan 
storY :
 if(boolButton && mousePressed) { storX= listOfCoordinatesX.get(listOfCoordinatesX.size()-1); storY= listOfCoordinatesY.get(listOfCoordinatesY.size()-1); } 
Saat Anda melepaskan tombol batal, kami kembali ke koordinat sebelumnya dan kembali ke sel dengan warna asli (hitam):
 if(boolButton && bool_mouseReleased){ if(x==storX && y==storY ) { modColor=0; } } 
Dalam fungsi 
mouseReleased () , 
kami menempatkan kuda kami di sel bidang yang sesuai.
 if(boolButton) { knightX=storX; knightY=storY; } 
Sekarang program dalam bahasa pemrosesan bekerja dengan benar, dan fungsi undo dalam program di p5.js tidak berfungsi dengan benar.
Periksa programnya di p5.js 
di siniGanti daftar InList di program utama dengan array int []. Anda dapat secara dinamis menambahkan elemen ke array, serta ke daftar, menggunakan fungsi 
append ()  listOfCoordinatesX = append(listOfCoordinatesX,0); 
Anda tidak dapat mengambil elemen dengan pop () dari array. Untuk ini, ada fungsi untuk mengurangi panjang array dengan satu 
shorten () . Untuk menentukan panjang array, bukan 
ukuran (), gunakan 
panjangProgram ini dapat ditambahkan sebagai skrip js ke halaman html. Untuk menjalankan skrip, Anda harus menggunakan processing.js
Lihat halaman ini di 
sini .
Dan di 
sini sama, tetapi dengan gambar seekor kuda.
Dan di 
sini kuda hanya bisa berjalan dengan huruf 
G. Sisa gerakan dilarang.
Tautan ke github dengan teks-teks program yang disajikan dalam artikel.