Bài 3: Thêm cảm biến mắt xuống
Trong Bài học trước, Cảm biến khoảng cách đã được sử dụng để xác định xem Robot VR có phát hiện ra vật thể hay không và nếu có thì sẽ di chuyển về phía vật thể đó. Tuy nhiên, không có giá trị cảm biến nào được sử dụng để xác định xem Robot VR có ở gần mép Sân chơi hay không để dừng nó lại. Việc dừng VR Robot khi nó ở gần mép Sân chơi sẽ ngăn nó lái ra khỏi mép.
Theo đó, dự án lặp lại hành vi lái xe về phía trước và rẽ mãi mãi. Tuy nhiên, không có điều kiện nào để kiểm tra đường viền màu đỏ xung quanh Sân chơi. Vì vậy, Robot VR có thể rơi khỏi Sân chơi khi di chuyển về phía trước.

Thêm cảm biến mắt xuống
Robot VR cần có một cảm biến khác để có thể xác định xem nó có ở gần mép Sân chơi hay không. Cảm biến mắt xuống có thể được sử dụng để xác định xem Robot VR có ở gần mép Sân chơi hay không bằng cách phát hiện đường viền màu đỏ xung quanh Sân chơi.
Các hành vi lái xe về phía trước và rẽ chỉ cần lặp lại cho đến khi Cảm biến mắt nhìn xuống báo cáo rằng phát hiện thấy đường viền màu đỏ. Do đó, vòng lặp vô hạn while có thể được thay thế bằng vòng lặp whilevới điều kiện chứ không phải , để lặp lại hành vi lái xe về phía trước và rẽ cho đến khi đáp ứng được điều kiện phát hiện đường viền màu đỏ.
-
Tải dự án Unit9Lesson2 từ Bài học trước.
def main(): while True: # Cảm biến khoảng cách có phát hiện được lâu đài không? nếu front_distance.found_object(): # Lâu đài va chạm được phát hiện bởi Cảm biến khoảng cách drivetrain.drive(FORWARD) else: # Quay lại để tìm lâu đài bằng Cảm biến khoảng cách drivetrain.turn(RIGHT) wait(5, MSEC) - Đổi tên dự án thành Unit9Lesson3.

-
Thêm bình luận để lưu ý cách sử dụng vòng lặp whilevới Cảm biến mắt xuống. 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 while True: # Cảm biến khoảng cách có phát hiện ra lâu đài không? nếu front_distance.found_object(): # Lâu đài va chạm được phát hiện bởi Cảm biến khoảng cách drivetrain.drive(FORWARD) else: # Quay lại để tìm lâu đài bằng Cảm biến khoảng cách drivetrain.turn(RIGHT) wait(5, MSEC) -
Cần có lệnh để liên tục kiểm tra Cảm biến mắt xuống. Robot VR sẽ cần phải lặp lại các hành vi này khi Cảm biến mắt xuống không màu đỏ. Thay đổi điều kiện vòng lặp while bằng cách đặt từ khóa chứ không phảitrước điều kiện. 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 while not True: # Cảm biến khoảng cách có phát hiện ra lâu đài không? nếu front_distance.found_object(): # Lâu đài va chạm được phát hiện bởi Cảm biến khoảng cách drivetrain.drive(FORWARD) else: # Quay lại để tìm lâu đài bằng Cảm biến khoảng cách drivetrain.turn(RIGHT) wait(5, MSEC) -
Sau đó, thay đổi điều kiện từ True thành lệnh down_eye.detect. Đặt tham số thành 'ĐỎ'. 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? nếu front_distance.found_object(): # Lâu đài va chạm được phát hiện bởi Cảm biến khoảng cách drivetrain.drive(FORWARD) else: # Quay lại để tìm lâu đài bằng Cảm biến khoảng cách drivetrain.turn(RIGHT) wait(5, MSEC) - Mở Dynamic Castle Crasher Playground nế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ẽ di chuyển về phía vật thể được phát hiện và rẽ phải nếu không. Tuy nhiên, mặc dù Cảm biến mắt hướng xuống đang tìm kiếm đường viền màu đỏ, Robot VR không được thông báo phải làm gì khi phát hiện ra đường viền màu đỏ, vì vậy nó vẫn tiếp tục lái và cuối cùng rơi khỏi Sân chơi.

Khi điều kiện của vòng lặp whileđược đáp ứng, luồng dự án sẽ thực thi bên ngoài vòng lặp while.
Chọn nút Tiếp theo để tiếp tục phần còn lại của Bài học này.