Pelajaran 2: Membangun dan Menguji Proyek
Melanjutkan Pembangunan Proyek
-
Sekarang kondisi pernyataan if elseperlu ditetapkan. Untuk menggunakan Sensor Jarak untuk mendeteksi kastil, perintah found_objectdapat digunakan. Tambahkan perintah found_objectke kondisi tersebut. Proyek Anda sekarang akan terlihat seperti ini:
def main(): # Apakah Sensor Jarak mendeteksi kastil? jika front_distance.found_object(): # Kastil tabrakan terdeteksi oleh Sensor Jarak lintasan yang lain: # Putar untuk menemukan kastil menggunakan Sensor Jarak lintasan -
Jika Sensor Jarak menemukan suatu objek, Robot VR harus bergerak maju untuk menjatuhkan kastil. Tambahkan perintah driveke dalam cabang 'if' dari pernyataan if else , dan atur parameter untuk menggerakkan Robot VR maju. (Perintah ini harus menggantikan 'pass').
def main(): # Apakah Sensor Jarak mendeteksi kastil? jika front_distance.found_object(): # Kastil tabrakan terdeteksi oleh Sensor Jarak drivetrain.drive(MAJU) yang lain: # Belok untuk menemukan kastil menggunakan Sensor Jarak lewat -
Bila perintah found_object melaporkan Salah, cabang 'else' akan berjalan, sehingga Robot VR perlu berputar untuk menemukan kastil di Taman Bermain. Tambahkan perintah putar di dalam cabang 'else', dan atur parameter untuk memutar Robot VR ke kanan.
def main(): # Apakah Sensor Jarak mendeteksi kastil? jika front_distance.found_object(): # Kastil tabrakan terdeteksi oleh Sensor Jarak drivetrain.drive(MAJU) yang lain: # Belok untuk menemukan kastil menggunakan Sensor Jarak drivetrain.turn(KANAN)
Untuk Informasi Anda
Cabang 'else' dari pernyataanif elsehanya berfungsi dalam proyek sebagai bagian dari pernyataanif else. Meskipun Anda dapat memiliki pernyataanjikayang berdiri sendiri, tidak ada pernyataan 'else' dalam VEXcode VR Python. Cabang 'else' dijalankan ketika kondisi cabang 'if' tidak terpenuhi. Tanpa kondisi yang ditentukan (cabang 'if'), cabang 'else' tidak akan pernah berjalan. 
Tambahkan Loop dan Uji Proyek
- Sebelum proyek diuji, satu perintah lagi perlu ditambahkan. Pernyataan If else hanya akan memeriksa kondisi satu kali sebelum berpindah ke perintah berikutnya di luar pernyataan. Pada Unit 7, loopsementara tak terhingga ditambahkan ke proyek untuk menginstruksikan Robot VR agar berulang kali memeriksa kondisi Sensor Mata Bawah. Untuk memastikan kondisi Sensor Jarak diperiksa berulang kali, seret atau ketik loop tak terhingga while , lalu salin pernyataanif elseke dalam loop tak terhinggawhile. Proyek Anda sekarang akan terlihat seperti ini:
-
Ingatlah untuk memperhatikan lekukan saat menyalin dan menempelkan perintah ke dalam loop, sehingga proyek berfungsi sebagaimana mestinya saat dijalankan.
def main(): while True: # Apakah Sensor Jarak mendeteksi sebuah kastil? jika front_distance.found_object(): # Kastil tabrakan terdeteksi oleh Sensor Jarak drivetrain.drive(MAJU) yang lain: # Belok untuk menemukan kastil menggunakan Sensor Jarak drivetrain.turn(KANAN) tunggu(5, MSEC)
-
- Buka Jendela Taman Bermain jika belum terbuka. PastikanDynamic Castle Crasher Playgroundterbuka, lalu jalankan proyek.

- Setelah Robot VR merobohkan setidaknya dua kastil, muat ulang Playground dan jalankan proyek pada tata letak lain dari Dynamic Castle Crasher Playground.

- Pada setiap putaran proyek, Robot VR akan berputar hingga sebuah kastil terdeteksi oleh Sensor Jarak, lalu melaju ke arah bangunan tersebut untuk menjatuhkannya.

- Selama proyek berlangsung, Robot VR mungkin mendorong bagian kastil hingga ke tepi dan jatuh dari Taman Bermain. Hal ini karena perintah found_objectmasih melaporkan bahwa ada objek di depan Robot VR. Saat perintah ini melaporkan Benar, Robot VR melaju ke depan, yang menyebabkan Robot VR terjatuh dari Taman Bermain.
Alur Proyek dengan Pernyataan If Else
Pernyataan if else digunakan agar Robot VR dapat membuat keputusan. Jika kondisi Boolean adalah Benar, maka perintah di dalam cabang 'if' akan dijalankan. Jika kondisi Boolean adalah Salah, maka perintah di dalam cabang 'else' akan dijalankan.
Misalnya, dalam iterasi Dynamic Castle Crasher Playground ini, saat proyek dimulai, Sensor Jarak mendeteksi sebuah objek – kondisi perintahfound_objectmelaporkan Benar. Sekarang cabang 'if'dari proyek akan berjalan, dan Robot VR akan melaju maju. Robot VR akan melewati cabang 'lainnya' dari proyek.
- Perhatikan bahwa data Sensor Jarak juga dilaporkan di Dasbor. Saat suatu objek terdeteksi, nilai jarak akan ditampilkan.
Namun, dalam iterasi Dynamic Castle Crasher Playground ini, saat proyek dimulai, Sensor Jarak TIDAK mendeteksi objek – kondisi perintahfound_object melaporkan Salah. Sekarang Robot VR akan melewati cabang 'if' proyek, dan cabang 'else' proyek akan berjalan, sehingga Robot VR akan berbelok ke kanan.
- Perhatikan bahwa nilai Sensor Jarak di Dasbor dilaporkan sebagai > 3000 mm. Sensor Jarak dapat mendeteksi objek dalam jarak 3000 milimeter (mm), jadi jika suatu objek tidak terdeteksi, nilainya dilaporkan lebih besar dari (>) 3000 mm.
Karena pernyataan if else ada di dalam loop while tak terhingga, proyek akan mengulang kembali ke awal loopwhile tak terhingga untuk memeriksa kondisi pernyataan if else berulang kali. Loop ini akan terus berlanjut selamanya, menginstruksikan Robot VR untuk terus memeriksa kondisi jika yang lainratusan kali per detik.
- Perhatikan bahwa perintah drive dan turn di dalam pernyataan if elseadalah perintah yang tidak menunggu. Perintah yang tidak menunggu tidak menghentikan alur proyek saat sedang berjalan. Perilaku tanpa menunggu yang dijalankan dalam pernyataan if else (seperti 'bergerak maju jika objek terdeteksi') akan terus berlanjut selagi kondisi diperiksa, dan hanya akan berubah saat kondisi berubah.
Untuk Informasi Anda
Pernyataanif elsedigunakan untuk memastikan bahwa hanya satu cabang dalam proyek yang dijalankan saat kondisi diperiksa. Hanya satu kejadian atau kondisi yang dapat benar pada suatu waktu. Ini membuat proyek lebih efisien.

Bandingkan proyek saat ini dengan proyek yang dibuat di Unit 7. Proyek Unitmenggunakan empat pernyataan jika .

Saat menjalankan proyek dengan beberapa pernyataan if , mungkin saja beberapa kondisi akan melaporkan Benar (atau Salah) saat proyek menjalankan perintah dalam loop while yang tak terhingga. Konflik seperti ini dapat menyebabkan proyek berhenti berjalan atau berjalan lebih lambat.
Dengan kata lain, beberapa pernyataan jikadalam sebuah proyek seperti berjalan di jalan dengan beberapa jalur keluar. Tergantung ke mana Anda ingin pergi, Anda akan berbelok di tempat yang berbeda. Misalnya,jikaAnda pergi ke sekolah, Anda akan berbelok kiri; jika Anda pergi ke toko, Anda akan berbelok kanan. Tetapi bagaimana jika Anda tidak pergi ke sekolah atau ke toko? Kedua kondisi akan melaporkan Salah, dan Anda akan tetap berada di jalur yang lurus. Atau bagaimana jika Anda pergi ke sekolah dan toko? Kedua kondisi akan melaporkan Benar, tetapi Anda tidak dapat berbelok di dua lokasi pada saat yang bersamaan. 
Untuk melanjutkan analoginya, pernyataan if elseseperti bepergian ke persimpangan jalan – ia memaksa Anda untuk membuat keputusan. JikaAnda pergi ke sekolah, belok kiri; jika tidak, belok kanan. Ke mana pun Anda pergi, Anda harus belok kiri atau kanan. Menggunakan pernyataan if elseakan menghindari bug seperti yang disebutkan di atas, karena pernyataan tersebut akan memaksa Anda untuk membuat keputusan, karena hanya satu kondisi yang bisa bernilai Benar pada saat tertentu.