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.