Skip to main content

Bài 3: Project Flow với nhiều vòng lặp While

Bây giờ bạn đã tạo một dự án văn bản để điều hướng Robot VR đến chữ 'A' trên Mê cung tường Sân chơi, bạn sẽ mở rộng kỹ năng của mình bằng cách sử dụng các điều kiện và giá trị cảm biến. Trong Bài học này, bạn sẽ điều khiển Robot VR đến số '2' trong Mê cung tường Sân chơi, sau đó khám phá lý do tại sao cần có thêm lệnh để lái đến chữ 'B'. Trong thử thách nhỏ này, bạn sẽ áp dụng những kỹ năng này để di chuyển từ đầu Mê cung tường đến số '3'.

Góc nhìn từ trên xuống của sân chơi Wall Maze với Robot VR bắt đầu từ mũi tên màu xanh lá cây ở chính giữa phía dưới của sân chơi. Số 2 được đánh dấu trong hộp màu đỏ và nằm ở giữa góc dưới bên trái của mê cung, xa hơn về bên trái chữ A. Số 2 nằm ở góc được tạo bởi ba bức tường bao quanh.

Kết quả học tập

  • Mô tả luồng chương trình trong một dự án có Robot VR di chuyển về phía trước cho đến khi Cảm biến cản được nhấn.

Đổi tên dự án

  • Nếu dự án của Bài học trước chưa được tải, hãy tải dự án Unit4Lesson2.
  • Đổi tên dự án thành Unit4Lesson3.Thanh công cụ VEXcode VR hiển thị Đơn vị 4 Bài 3 là tên dự án. Tên dự án được đánh dấu bằng hộp màu đỏ.

     

 

Luồng của Dự án hướng đến chữ 'A'

Trong bài học trước, Robot VR đã lái xe đến chữ 'A' trên Mê cung tường Sân chơi. Hãy cùng phân tích luồng dự án khi chúng ta chuẩn bị di chuyển đến vị trí mới trong Mê cung tường.

Góc nhìn từ trên xuống của Sân chơi Mê cung tường với Robot VR ở vị trí bắt đầu ở giữa phía dưới Sân chơi. Chữ A nằm ngay bên trái của robot, được ngăn cách bởi một bức tường ngắn.
  • Để hiểu rõ hơn về quy trình dự án lái xe đến chữ 'A' trên Mê cung tường Sân chơi, hãy bắt đầu bằng cách sửa đổi dự án trước đó của bạn hoặc tạo một dự án mới phù hợp với dự án cơ sở này.

    def main():
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(LEFT, 90, DEGREES)
    
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.stop()
  • Khi một dự án sử dụng vòng lặp whilevới điều kiện chứ không phải , luồng chương trình của dự án vẫn tuân theo trình tự từ trên xuống dưới. Vòng lặp whilecho phép luồng chương trình "tạm dừng" tại một thời điểm nhất định khi một điều kiện được đáp ứng. Toán tửchứ không phảicho phép dự án tiếp tục chạy cho đến khi điều kiện được báo cáoSai. Sau đó, dự án sẽ chuyển sang lệnh tiếp theo bên ngoài vòng lặp. Điều kiện Boolean, chẳng hạn như nhấn vào Left Bumper, sẽ báo cáo giá trị True hoặc False. Trong đoạn mã này để điều khiển Robot VR đến chữ 'A', Robot VR sẽ tiến về phía trước cho đến khi điều kiện Boolean của Left Bumper được nhấn là True.
    Luồng dự án của dự án để điều khiển đến chữ 'A' sẽ trông như thế này:Sơ đồ luồng dự án mô tả luồng của dự án ở trên để điều hướng đến chữ A, được hiển thị ở bên trái. Bên phải, các mũi tên chỉ ra tiến trình của dự án. Đầu tiên, một mũi tên tuần hoàn màu đỏ minh họa rằng khi không nhấn vào thanh cản, điều kiện của vòng lặp while trả về giá trị sai, do đó rô-bốt sẽ tiến về phía trước. Mũi tên hướng xuống màu xanh lá cây tiếp theo minh họa rằng khi nhấn vào thanh cản, điều kiện sẽ báo cáo là đúng nên dự án sẽ thoát khỏi vòng lặp đó và rô-bốt sẽ rẽ trái 90 độ. Trình tự này được lặp lại cho mỗi vòng lặp trong dự án.

Hành vi của Robot VR cho thấy cách thực hiện từng vòng lặpwhile. Phân tích theo chuyển động của VR Robot, chúng ta có thể thấy rõ VR Robot đã di chuyển đến đâu sau mỗi vòng lặpwhiletrong dự án được thực hiện.Bên trái hiển thị mã Python chứa ba vòng lặp while tuần tự, mỗi vòng sẽ hướng dẫn robot tiến về phía trước cho đến khi nhấn vào thanh cản bên trái. Khi nhấn vào thanh cản ở mỗi vòng, robot sẽ thực hiện một hành động cụ thể.  Ở vòng đầu tiên, robot tiến về phía trước cho đến khi nhấn vào thanh cản, sau đó rẽ trái 90 độ. Hình ảnh bên phải cho thấy vị trí của robot trong mê cung sau hành động này, được đánh dấu bằng vòng tròn màu vàng.  Ở vòng lặp thứ hai, robot lại tiến về phía trước cho đến khi nhấn vào cản rồi rẽ trái 90 độ. Hình ảnh thứ hai cho thấy vị trí cập nhật của robot trong mê cung sau lượt này.  Ở vòng thứ ba và cũng là vòng cuối cùng, robot sẽ tiến về phía trước cho đến khi cản xe bị nhấn. Khi nhấn vào thanh cản, robot sẽ dừng di chuyển. Hình ảnh cuối cùng cho thấy vị trí dừng của robot trong mê cung, một lần nữa được đánh dấu bằng vòng tròn màu vàng.

 

Lái xe đến số '2'

Trong Bài học này, dự án sẽ được chỉnh sửa để Robot VR di chuyển đến số '2' trên Mê cung tường Sân chơi!

Góc nhìn từ trên xuống của sân chơi Wall Maze với Robot VR bắt đầu từ mũi tên màu xanh lá cây ở chính giữa phía dưới của sân chơi. Số 2 được đánh dấu trong hộp màu đỏ và nằm ở giữa góc dưới bên trái của mê cung, xa hơn về bên trái chữ A. Số 2 nằm ở góc được tạo bởi ba bức tường bao quanh.
  • Dự án ở Bài 2 yêu cầu Robot VR rẽ trái để lái đến chữ 'A'. Để điều hướng đến số '2', Robot VR sẽ phải rẽ phải, tiến về phía trước rồi rẽ trái.

    Góc nhìn từ trên xuống của Sân chơi Mê cung Tường, nơi Robot VR được đặt phía trên điểm đánh dấu A, hướng về bức tường bên trái. Một mũi tên màu đỏ chỉ về phía A và ba mũi tên màu xanh lá cây chỉ đường đi đến số 2. Các mũi tên màu xanh lá cây chỉ lên trên về phía bức tường đối diện với A, sau đó sang trái về phía bức tường tiếp theo bên trái số 2, sau đó hướng xuống góc có số 2.
  • Thay đổi hướng của lệnh turn_forthứ hai sang phải thay vì sang trái. Dự án của bạn bây giờ sẽ trông như thế này:

    def main():
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(RIGHT, 90, DEGREES)
    
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.stop()
  • Khởi chạy Sân chơi mê cung tường nếu nó chưa mở và chạy dự án.
  • Hãy xem Robot VR bắt đầu di chuyển đến số '2' nhưng dừng lại ở bức tường. Vì vậy, VR Robot cần rẽ trái khi chạm vào tường thay vì dừng lại.

    Góc nhìn từ trên xuống của sân chơi Wall Maze với robot VR hướng mặt về bức tường đối diện với chữ A, hướng lên trên.
  • Chọn nút “Đặt lại” để đặt lại Sân chơi và di chuyển Robot VR trở lại vị trí ban đầu.Sân chơi mê cung tường hiển thị toàn bộ giao diện sân chơi. Nút đặt lại ở góc dưới bên trái của giao diện sân chơi được đánh dấu bằng hộp màu đỏ.

     

  • Chỉnh sửa mã bằng cách xóa lệnh stop và thay thế bằng các lệnh sau để điều khiển Robot VR đến số '2'.

    def main():
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(RIGHT, 90, DEGREES)
    
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(LEFT, 90, DEGREES)
    
    	trong khi không left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.stop()
  • Khởi chạy Wall Maze Playground nếu nó chưa mở và chạy dự án.
  • Hãy xem Robot VR lái đến số '2' trên Sân chơi Mê cung Tường !

    Góc nhìn từ trên xuống của sân chơi Wall Maze. Robot VR hiện được đặt ở vị trí trên điểm đánh dấu thứ 2, hướng mặt về phía bức tường phía dưới với mặt trước áp vào tường.
  • Chọn nút “Đặt lại” để đặt lại Sân chơi và di chuyển Robot VR trở lại vị trí ban đầu.

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.