Pelajaran 4: Alur Proyek dengan Perulangan Bersarang
Kumpulkan dua cakram berikutnya
-
Sekarang setelah Robot VR menghadap ke cakram merah, Robot VR perlu mengulangi perilaku yang sama yang digunakan untuk mengambil cakram biru, agar dapat mengambil dan memindahkan cakram merah. Perilaku mengemudi maju untuk mengambil cakram, berbalik, dan mengemudi kembali ke tujuan berwarna sama untuk menurunkan cakram.

-
Setelah cakram merah pertama digerakkan, Robot VR kemudian perlu bergerak menuju sasaran hijau dan melakukan tindakan yang sama yang digunakan untuk menggerakkan cakram biru dan merah, untuk menggerakkan cakram hijau pertama.

- Untuk mengulangi perilaku beberapa kali, dapat digunakan perulangan untuk.

-
Tambahkan perulangan untuk di bagian atas proyek, di atas komentar pertama, dan atur parameter fungsi range menjadi '3'. Pastikan loop for diberi indentasi di dalam definisi utama.
def main(): for repeat_count in range(3): wait(5, MSEC) -
Untuk menyalin kode ke dalam loopfor, perlu diperhatikan dengan cermat indentasinya. Pertama, tambahkan spasi sebelum perintahwait, sehingga perulangan menjadi seperti ini:
def main(): for repeat_count in range(3): wait(5, MSEC) - Selanjutnya, pilih perintah yang akan dimasukkan ke dalam loopfor, lalu salin dan tempel di atas perintahwait. Perhatikan bahwa indentasi akan menjadi tidak tepat setelah hanya melakukan salin dan tempel. Garis indikator abu-abu dari loopuntukterputus, dan terlepas dari perintahtunggu. Ini adalah isyarat visual bahwa proyek Anda tidak akan berjalan sesuai rencana.

-
Pilih perintah di dalam loopfor, dan gunakan 'Tab' untuk memberi indentasi yang tepat pada perintah di dalam loop. Jika diberi indentasi dengan benar, garis indikator abu-abu akan menghubungkan loop untukdengan perintah tungguuntuk menunjukkan batas loop terluar. Setelah selesai, proyek Anda akan terlihat seperti ini:
def main(): for repeat_count in range(3): # 1. Drive to disk using Down Eye Sensor while not down_eye.near_object(): drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain.stop() # 2. Ambil disk magnet.beri energi (BOOST) # 3. Berkendara ke tujuan menggunakan Sensor Jarak drivetrain.turn_to_heading(180, DEGREES) while front_distance.get_distance(MM) > 200: drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain. stop() # 4. Jatuhkan disk di tujuan magnet.energize(DROP) drivetrain.drive_for(REVERSE, 100, MM) # 5. Berbelok dan berkendara ke tujuan berikutnya drivetrain.turn_to_heading(90, DEGREES) drivetrain.drive_for(FORWARD, 800, MM) # 6. Putar ke disk drivetrain.turn_to_heading(0, DEGREES) wait(5, MSEC) - Tonton video di bawah ini untuk melihat cara memindahkan perintah dan menyesuaikan indentasi seperti yang dijelaskan di atas. Dalam klip video tersebut, enam bagian komentar proyek disorot, dan Menu Konteks dibuka. Opsi 'Potong' dipilih, lalu kursor ditempatkan di bawah perintah loop untuk . Menu konteks dibuka kembali, dan 'Tempel' dipilih. Perintah-perintah tersebut kemudian berada di dalam loop for , tetapi indentasinya salah. Enam bagian komentar disorot lagi dan tombol 'Tab' pada keyboard ditekan untuk memberi indentasi yang tepat pada proyek di dalam loop.
- Buka Disk Mover Playgroundjika belum terbuka, lalu jalankan proyeknya.
-
Saat proyek ini dijalankan, Robot VR mengambil dan menjatuhkan satu cakram dari setiap warna ke dalam target berwarna yang sesuai.

Untuk Informasi Anda
Perhatikan bahwa Robot VR terus menabrak dinding. Perilaku ini sudah diperkirakan karena proyek tersebut menginstruksikan Robot VR untuk berbelok ke kanan dan menuju ke tujuan berikutnya, sebanyak tiga kali. Pertama kali adalah berkendara dari jalur biru ke merah. Yang kedua adalah dari merah ke hijau, dan yang ketiga adalah dari hijau menuju tembok, karena tidak ada gawang berwarna lain. Hentikan proyek begitu Robot VR menabrak dinding. Proyek ini dapat ditingkatkan sehingga Robot VR berhenti setelah mengambil dan memindahkan cakram hijau, tetapi hal ini akan meningkatkan kompleksitas keseluruhan proyek.
Pertanyaan
Silakan pilih tautan di bawah ini untuk mengakses kuis pelajaran.
Google Doc / .docx / .pdf