Bài 4: Luồng dự án với các vòng lặp lồng nhau
Thu thập hai đĩa tiếp theo
-
Bây giờ, khi VR Robot đang đối mặt với các đĩa đỏ, VR Robot sẽ cần phải lặp lại các hành vi tương tự đã sử dụng để thu thập đĩa xanh, để nhặt và di chuyển đĩa đỏ. Hành vi lái xe về phía trước để nhặt đĩa, quay lại và lái xe trở lại mục tiêu cùng màu để thả đĩa xuống.

-
Sau khi đĩa đỏ đầu tiên được di chuyển, VR Robot sẽ phải di chuyển đến mục tiêu màu xanh lá cây và thực hiện các hành động tương tự như đã dùng để di chuyển đĩa xanh và đĩa đỏ để di chuyển đĩa xanh lá cây đầu tiên.

- Để lặp lại các hành vi nhiều lần, có thể sử dụng vòng lặp cho.

-
Thêm vòng lặp for vào đầu dự án, phía trên bình luận đầu tiên và đặt tham số hàm range thành '3'. Đảm bảo vòng lặp cho được thụt vào trong định nghĩa chính.
def main(): cho repeat_count trong phạm vi(3): wait(5, MSEC) -
Để sao chép mã vào vòng lặpfor, bạn cần chú ý cẩn thận đến phần thụt lề. Đầu tiên, thêm khoảng trắng trước lệnhwaitđể vòng lặp trông như thế này:
def main(): cho repeat_count trong phạm vi(3): wait(5, MSEC) - Tiếp theo, chọn các lệnh để đưa vào vòng lặpforvà sao chép và dán chúng phía trên lệnhwait. Lưu ý rằng thụt lề sẽ không đúng sau khi chỉ sao chép và dán. Đường chỉ báo màu xám của vòng lặpchobị hỏng và bị ngắt kết nối khỏi lệnhchờ. Đây là dấu hiệu trực quan cho thấy dự án của bạn sẽ không thực hiện như mong đợi.

-
Chọn các lệnh bên trong vòng lặpforvà sử dụng 'Tab' để thụt lề đúng các lệnh trong vòng lặp. Khi thụt lề đúng cách, đường chỉ báo màu xám sẽ kết nối vòng lặp forvới lệnh waitđể hiển thị ranh giới của vòng lặp bên ngoài. Khi hoàn tất, dự án của bạn sẽ trông như thế này:
def main(): cho repeat_count trong phạm vi(3): # 1. Truyền dữ liệu vào đĩa bằng Cảm biến Down Eye khi không sử dụng down_eye.near_object(): drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain.stop() # 2. Nhấc đĩa nam châm.kích hoạt(BOOST) # 3. Lái xe đến đích bằng Cảm biến khoảng cách drivetrain.turn_to_heading(180, DEGREES) while front_distance.get_distance(MM) > 200: drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain. dừng() # 4. Thả đĩa vào mục tiêu magnet.energize(DROP) drivetrain.drive_for(REVERSE, 100, MM) # 5. Quay đầu và lái đến mục tiêu tiếp theo drivetrain.turn_to_heading(90, DEGREES) drivetrain.drive_for(FORWARD, 800, MM) # 6. Quay sang đĩa drivetrain.turn_to_heading(0, DEGREES) wait(5, MSEC) - Xem video bên dưới để biết cách di chuyển các lệnh và điều chỉnh thụt lề như mô tả ở trên. Trong đoạn video clip, sáu phần bình luận của dự án được đánh dấu nổi bật và Menu ngữ cảnh được mở ra. Tùy chọn 'Cắt' được chọn, sau đó con trỏ được đặt bên dưới lệnh vòng lặp for . Menu ngữ cảnh được mở lại và 'Dán' được chọn. Các lệnh sau đó nằm trong vòng lặp for nhưng thụt lề không đúng cách. Sáu phần bình luận được tô sáng lại và nhấn phím 'Tab' trên bàn phím để thụt lề dự án đúng cách trong vòng lặp.
- Mở Disk Mover Playgroundnếu nó chưa mở và chạy dự án.
-
Khi dự án này được chạy, VR Robot sẽ nhặt và thả một đĩa của mỗi màu vào mục tiêu có màu tương ứng.

Để bạn biết
Lưu ý rằng Robot VR tiếp tục đâm vào tường. Hành vi này là điều được mong đợi vì dự án đã hướng dẫn Robot VR rẽ phải và lái về phía mục tiêu tiếp theo ba lần. Lần đầu tiên lái xe từ đèn xanh sang đèn đỏ. Thứ hai là từ màu đỏ đến màu xanh lá cây, và thứ ba là từ màu xanh lá cây vào tường, vì không có mục tiêu màu nào khác. Dừng dự án khi Robot VR chạm vào tường. Dự án có thể được cải thiện để VR Robot dừng lại sau khi nhặt và di chuyển đĩa màu xanh lá cây, nhưng điều này sẽ làm tăng độ phức tạp chung của dự án.