Bài 3: Khi phát hiện màu đỏ
Không có lệnh nào cho Robot VR biết phải làm gì khi phát hiện màu đỏ. Để tránh đường viền màu đỏ, VR Robot phải đảo ngược và rẽ khi phát hiện màu đỏ, giống như trong video này.
-
Thêm chú thích vào cuối vòng lặpwhileđể chỉ ra điều gì sẽ xảy ra khi Cảm biến mắt xuống phát hiện đường viền màu đỏ. Dự án của bạn bây giờ sẽ trông như thế này:
def main(): # Tìm kiếm tòa nhà khi đường viền màu đỏ không được phát hiện khi không down_eye.detect(RED): # Cảm biến khoảng cách có phát hiện ra lâu đài không? if front_distance.found_object(): # Phát hiện lâu đài va chạm bằng Cảm biến khoảng cách drivetrain.drive(FORWARD) else: # Quay để tìm lâu đài bằng Cảm biến khoảng cách drivetrain.turn(RIGHT) wait(5, MSEC) # Lùi lại và quay khi phát hiện đường viền màu đỏ -
Thêm lệnh drive_forvà turn_for bên dưới bình luận để cho phép Robot VR đảo ngược và rẽ khi Cảm biến mắt xuống phát hiện màu đỏ.
def main(): # Tìm kiếm tòa nhà khi đường viền màu đỏ không được phát hiện khi không down_eye.detect(RED): # Cảm biến khoảng cách có phát hiện ra lâu đài không? if front_distance.found_object(): # Phát hiện lâu đài va chạm bởi Cảm biến khoảng cách drivetrain.drive(FORWARD) else: # Quay để tìm lâu đài bằng Cảm biến khoảng cách drivetrain.turn(RIGHT) wait(5, MSEC) # Lùi lại và quay khi phát hiện đường viền màu đỏ drivetrain.drive_for(REVERSE, 300, MM) drivetrain.turn_for(RIGHT, 90, DEGREES) - Mở Dynamic Castle Crasher Playgroundnếu nó chưa được mở và chạy dự án. Liệu Robot VR có hoạt động như bạn mong muốn không?
- Khi dự án này được chạy, có hai điều kiện được kiểm tra. Đầu tiên là tình trạng của Cảm biến mắt xuống phát hiện màu đỏ bên trong vòng lặp while. Lưu ý rằng luồng dự án sẽ chuyển sang điều kiện tiếp theo của đối tượng được phát hiện CHỈ nếu Cảm biến mắt xuống không nhìn thấy màu đỏ. Nếu Cảm biến mắt nhìn xuống phát hiện màu đỏ, luồng dự án sẽ bỏ qua câu lệnh if else và chuyển sang lái xe lùi và rẽ.

- Điều kiện thứ hai được kiểm tra là câu lệnhif else. Trong khi Cảm biến mắt xuống không phát hiện màu đỏ, dự án sẽ tiếp tục trong vòng lặpwhileđể kiểm tra tình trạng của Cảm biến khoảng cách. Robot VR sẽ sử dụng dữ liệu từ Cảm biến khoảng cách để đưa ra quyết định tiến về phía trước hay rẽ phải.

-
Tuy nhiên, khi Cảm biến mắt xuống phát hiện màu đỏ, Robot VR sẽ lái ngược lại, rẽ rồi dừng lại vì đó là điểm kết thúc của quy trình dự án. Không có vòng lặp nào được sử dụng để lặp lại các hành vi.

Thêm vòng lặp vô hạn while
-
Cần có một vòng lặp vô hạn whileđể các hành vi được lặp lại trong một vòng lặp. Kéo hoặc nhập vòng lặp while vào đầu dự án và đặt điều kiện thành True để tạo vòng lặp vô hạn. Sau đó, sao chép và dán mã trước đó vào vòng lặp vô hạn while. Đảm bảo rằng các lệnh được thụt lề đúng cách dưới các tiêu đề chính xác, nếu không, dự án có thể không chạy như mong đợi. Dự án của bạn bây giờ sẽ trông như thế này:
def main(): while True: # Tìm kiếm tòa nhà khi đường viền màu đỏ không được phát hiện while not down_eye.detect(RED): # Cảm biến khoảng cách có phát hiện ra lâu đài không? if front_distance.found_object(): # Phát hiện lâu đài va chạm bởi Cảm biến khoảng cách drivetrain.drive(FORWARD) else: # Quay để tìm lâu đài bằng Cảm biến khoảng cách drivetrain.turn(RIGHT) wait(5, MSEC) # Lùi lại và quay khi phát hiện đường viền màu đỏ drivetrain.drive_for(REVERSE, 300, MM) drivetrain.turn_for(RIGHT, 90, DEGREES) - Mở Dynamic Castle Crasher Playgroundnếu nó chưa được mở và chạy dự án. Liệu Robot VR có hoạt động như bạn mong muốn không?
-
Khi dự án này được chạy, VR Robot sẽ lái về phía lâu đài được phát hiện và rẽ phải nếu không có lâu đài nào được báo cáo. Khi cảm biến mắt nhìn xuống phát hiện màu đỏ, VR Robot sẽ lùi lại, quay đầu và tiếp tục lái về phía một lâu đài khác.
