Skip to main content

Bài 3: Sử dụng khối [If then]

Trong Thử thách mê cung đĩa, Robot VR sẽ kiểm tra tình trạng của Cảm biến mắt trước để xem màu nào đang được báo cáo. Mỗi màu sắc tương ứng với một hành vi khác nhau mà Robot VR cần thực hiện.

VEXcode VR Nếu thì khối C có tham số boolean là 'Mắt trước phát hiện màu đỏ?'.
  • Bắt đầu một dự án mới và đặt tên là Unit7Lesson3.

    Thanh công cụ VEXcode VR với nút 'Tên dự án' được tô sáng trong hộp màu đỏ, bên trái nút Chọn sân chơi. Tên dự án được đặt là Đơn vị 7 Bài 3.
  • Kéo khối [Nếu thì] vào không gian làm việc và gắn nó vào khối [Khi bắt đầu].

    VEXcode VR chặn chương trình bằng khối When Started và khối If Then C trống.

    Để bạn biết

    Khối [Nếu thì] là khối C chấp nhận các khối báo cáo Boolean làm đầu vào. Sử dụng các mẫu quan sát được khi giải Mê cung đĩa ở Bài 2, có thể tạo một dự án trong đó Robot VR đưa ra quyết định xem điều kiện báo cáo là ĐÚNG hay SAI.

    Khối VEXcode VR If Then C có hộp màu đỏ làm nổi bật không gian tham số boolean.

    Khối [Nếu thì] sẽ chạy một lần trong một dự án. Trong ví dụ này, Cảm biến mắt trước sẽ báo cáo ĐÚNG nếu phát hiện vật thể màu xanh lá cây và thực hiện lệnh bên trong khối C - rẽ phải 90 độ. Nếu không phát hiện được vật thể màu xanh lá cây, dự án sẽ chuyển sang lệnh tiếp theo trong ngăn xếp.

    VEXcode VR chặn dự án rẽ phải nếu Front Eye phát hiện màu xanh lá cây. Dự án có nội dung như sau: Khi bắt đầu, nếu mắt trước phát hiện màu xanh lá cây, hãy rẽ phải 90 độ. Bên ngoài câu lệnh if là khối dừng lái xe.

    Sử dụng khối chuyển đổi 


    Hình ảnh bên dưới hiển thị câu lệnh khối Switch [If then] cho dự án ví dụ của Bài học này. 

    Các khối VEXcode VR tương tự được dự án nhưng bao gồm các khối chuyển đổi, chuyển sang phải nếu Front Eye phát hiện màu xanh lá cây. Dự án bắt đầu bằng khối Khi bắt đầu và theo sau là phiên bản khối C chuyển đổi của khối Nếu Thì. Mã Python đọc là 'if front_eye.detect(GREEN): drivetrain.turn_for(RIGHT, 90, DEGREES)'. Bên ngoài câu lệnh if là khối dừng lái xe.

    Dự án bên dưới bao gồm các lệnh tương tự được chuyển đổi thành một khối Switch.  

    Dòng mã đầu tiên, nếu front_eye.detect(GREEN): là vòng lặp có điều kiện kiểm tra xem Cảm biến mắt trước có phát hiện màu xanh lá cây hay không. Lưu ý rằng phải có dấu hai chấm (:) ở cuối dòng này. 

    Dòng mã thứ hai, drivetrain.turn_for(RIGHT, 90, DEGREES) yêu cầu robot rẽ phải 90 độ khi Cảm biến mắt trước phát hiện màu xanh lá cây. Dòng này được thụt lề theo mặc định là 4 khoảng trắngvì đây là hành vi cụ thể sẽ được thực hiện nếu Cảm biến mắt trước phát hiện màu xanh lá cây. 

    Các khối VEXcode VR tương tự được dự án nhưng bao gồm các khối chuyển đổi, chuyển sang phải nếu Front Eye phát hiện màu xanh lá cây. Dự án bắt đầu bằng khối Khi bắt đầu và theo sau là phiên bản khối C chuyển đổi của khối Nếu Thì. Mã Python đọc là 'if front_eye.detect(GREEN): drivetrain.turn_for(RIGHT, 90, DEGREES)'. Bên ngoài câu lệnh if là khối dừng lái xe.

  • Kéo khối <Color sensing> vào không gian làm việc vào đầu vào hình lục giác của khối [Nếu thì].

    Dự án khối VEXcode VR sử dụng câu lệnh if để cảm nhận màu sắc của đĩa. Nó bắt đầu bằng khối Khi bắt đầu và sau đó là khối chú thích có nội dung 'nếu Front Eye phát hiện màu xanh lá cây thì rẽ phải'. Cuối cùng là một khối If Then trống với tham số boolean của khối Cảm biến màu có nội dung là 'Mắt trước phát hiện màu đỏ?'.
  • Thay đổi tham số của khối <Color sensing> thành 'xanh lá cây'.

    VEXcode VR chặn dự án sử dụng câu lệnh if để phát hiện đĩa màu xanh lá cây. Nó bắt đầu bằng khối Khi bắt đầu và sau đó là khối chú thích có nội dung 'nếu Front Eye phát hiện màu xanh lá cây thì rẽ phải'. Cuối cùng là một khối If Then trống với tham số boolean của khối Cảm biến màu sắc có nội dung là 'Mắt trước phát hiện màu xanh lá cây?'. Menu thả xuống màu mở ra để thay đổi màu từ đỏ sang xanh lá cây.
  • Khi cảm biến mắt trước phát hiện đĩa màu xanh lá cây, VR Robot sẽ phải rẽ phải 90 độ để bắt đầu giải mê cung đĩa. Kéo khối [Quay lại] vào khối [Nếu thì].

    VEXcode VR chặn dự án sử dụng câu lệnh if để phát hiện đĩa màu xanh lá cây rồi rẽ phải. Nó bắt đầu bằng khối Khi bắt đầu và sau đó là khối chú thích có nội dung 'nếu Front Eye phát hiện màu xanh lá cây thì rẽ phải'. Cuối cùng, có một khối If Then với tham số boolean của khối Cảm biến màu có nội dung là 'Mắt trước phát hiện màu xanh lá cây?' và khối Rẽ phải 90 độ bên trong vùng chứa If sẽ kích hoạt nếu boolean là đúng.
  • Thực hiện theo các bước tương tự để thêm một khối [Nếu thì] khác cho cả ba màu trong Mê cung đĩa (xanh lá cây, xanh lam và đỏ). Mỗi màu sắc có liên quan đến một hành vi khác nhau. Các khối bên trong khối [Nếu thì] sẽ cần phải khớp với hành vi mong muốn đó. Thêm các khối sau vào dự án. Khi VR Robot phát hiện màu 'xanh lam', VR Robot sẽ rẽ trái 90 độ.

    Các khối VEXcode VR tương tự như trước nhưng có thêm câu lệnh if để rẽ trái nếu có đĩa màu xanh. Nó bắt đầu bằng khối When Started và sau đó là khối If Then với tham số boolean là khối Color Sensing có nội dung là 'Front Eye detects green?' và khối Rẽ phải 90 độ bên trong vùng chứa If. Cuối cùng, vẫn có khối if và khối turn giống nhau nhưng được thay đổi thành rẽ trái 90 độ nếu phát hiện thấy màu xanh lam.
  • Khi VR Robot đến cuối mê cung, VR Robot sẽ phát hiện màu 'đỏ'.

    Robot VR trong sân chơi VR Disk Maze, robot dừng lại và nhìn về phía một đĩa màu đỏ.
  • Để dừng VR Robot, cần thêm một khối [Nếu thì] khác kèm theo hướng dẫn về việc cần làm khi VR Robot phát hiện 'màu đỏ'. Thêm các khối sau vào dự án.

    VEXcode VR chặn dự án tương tự trước đó nhưng có thêm câu lệnh if để dừng lái xe nếu có đĩa màu đỏ. Nó bắt đầu bằng khối When Started và sau đó là khối If Then với tham số boolean là khối Color Sensing có nội dung là 'Front Eye detects green?' và khối Rẽ phải 90 độ bên trong vùng chứa If. Tiếp theo là khối if và khối turn tương tự nhưng được thay đổi thành rẽ trái 90 độ nếu phát hiện thấy màu xanh lam. Cuối cùng, khối if và khối turn tương tự được sử dụng nhưng được thay đổi thành Dừng lái xe nếu phát hiện thấy màu đỏ.
  • Robot VR cũng có thể đưa ra quyết định nếu không nhìn thấy màu nào đó bằng cách sử dụng giá trị 'không có'. Tại điểm bắt đầu của Mê cung đĩa, Robot VR không phát hiện được bất kỳ màu sắc nào.

    Góc nhìn sân chơi VR với bảng điều khiển mở và hộp màu đỏ làm nổi bật các giá trị cảm biến Mắt trước của rô-bốt. Giá trị 'Đối tượng' hiện tại là sai và giá trị 'Màu sắc' hiện tại là không có.
  • Vì Cảm biến mắt trước không phát hiện được màu khi bắt đầu Mê cung đĩa nên Robot VR sẽ phải di chuyển về phía trước cho đến khi phát hiện ra đĩa màu xanh lá cây. Có thể thêm khối [Nếu thì] khác để hướng dẫn Robot VR phải làm gì khi không phát hiện thấy màu nào.

    Khối cảm biến màu VR VEXcode có nội dung 'Mắt trước không phát hiện thấy gì?'. Có một menu thả xuống mở ra để hiển thị cách người dùng có thể thay đổi màu mục tiêu thành không màu.
  • Thêm các khối sau vào dự án. Khi VR Robot không phát hiện được bất kỳ màu nào, VR Robot sẽ di chuyển về phía trước.

    VEXcode VR chặn dự án tương tự trước đó nhưng có thêm câu lệnh if để tiếp tục nếu không phát hiện thấy đĩa nào. Nó bắt đầu bằng khối When Started và sau đó là khối If Then với tham số boolean là khối Color Sensing có nội dung là 'Front Eye detects green?' và khối Rẽ phải 90 độ bên trong vùng chứa If. Tiếp theo là khối if và khối turn tương tự nhưng được thay đổi thành rẽ trái 90 độ nếu phát hiện thấy màu xanh lam. Tiếp theo, sử dụng cùng một khối if và khối turn nhưng đổi thành Stop Driving nếu phát hiện thấy màu đỏ. Cuối cùng, khối if và khối turn tương tự được sử dụng nhưng được thay đổi thành Drive Forward nếu không phát hiện thấy màu nào.
  • Robot VR hiện có hướng dẫn cho từng màu được cảm biến mắt phát hiện.
    • Cảm biến mắt trước phát hiện 'màu xanh lá cây?'
      • Rẽ phải 90 độ
    • Cảm biến mắt trước phát hiện 'màu xanh?'
      • Rẽ trái 90 độ
    • Cảm biến mắt trước phát hiện 'màu đỏ?'
      • Dừng lái xe
    • Cảm biến mắt trước phát hiện 'không có?'
      • Tiến về phía trước
  • Mở Disk Maze Playground và chạy dự án.

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.