Skip to main content

Bài 2: Câu lệnh điều kiện If/Else

Trong Bài học này, bạn sẽ tạo một dự án trong đó Robot VR đánh đổ ít nhất hai tòa nhà trên Sân chơi Dynamic Castle Crasher. Sẽ cần một thuật toán để giải quyết thử thách bằng cách sử dụng vòng lặp và phản hồi cảm biến vì bố cục Sân chơi thay đổi sau mỗi lần đặt lại.

Ví dụ về bố cục sân chơi Dynamic Castle Crasher:

Ba góc nhìn từ trên xuống của các mẫu bố trí Sân chơi Dynamic Castle Crasher với robot ở cùng vị trí bắt đầu và các lâu đài ở các vị trí khác nhau. Các bố cục được sắp xếp cạnh nhau để nhấn mạnh cách các lâu đài thay đổi vị trí mỗi khi Sân chơi được thiết lập lại.

Kết quả học tập

  • Xác định rằng khối [If then else] là khối C chạy các khối bên trong nhánh If hoặc Else dựa trên giá trị Boolean được báo cáo.
  • Xác định rằng khối [Nếu thì else] thường được sử dụng với khối [Lặp lại] hoặc khối [Mãi mãi] để kiểm tra điều kiện nhiều lần.
  • Xác định và mô tả lý do tại sao khối [If then else] được sử dụng với vòng lặp.
  • Mô tả nguyên nhân khiến nhánh [If then else] được chạy trong một dự án.

Cách sử dụng khối [If then else]

Thử thách này khác với thử thách Castle Crasher ở Đơn vị 2. Thử thách Đơn vị 2 sử dụng trình tự đơn giản và các lệnh Truyền động để đánh đổ các tòa nhà trên sân chơi tĩnh.

Một dự án VR VEXcode mẫu từ Đơn vị 2. Dự án bắt đầu bằng khối Khi bắt đầu và có 6 khối được đính kèm. Các khối đọc theo thứ tự: Đặt tốc độ truyền động thành 100%; Đặt tốc độ quay thành 100%; lái về phía trước 1550mm; rẽ phải 180 độ; lái về phía trước 700mm; sau đó rẽ phải 90 độ.

Chỉ sử dụng lệnh truyền động sẽ không đủ để khiến Robot VR phá hủy hai hoặc nhiều tòa nhà do bố cục của Dynamic Castle Crasher Playgroundđang thay đổi. Một tập hợp các lệnh Drivetrain có thể hoạt động ở một Playground nhưng không hoạt động ở Playground khác. Sẽ cần một thuật toán sử dụng cảm biến và lựa chọn. Khối [If then else] sẽ được sử dụng để tạo thuật toán bằng cách thêm lựa chọn có câu lệnh có điều kiện vào dự án này.

Góc nhìn từ trên xuống của Sân chơi Dynamic Castle Crasher với chỉ một số lâu đài bị đổ và một số khác vẫn còn nguyên vẹn, minh họa cho việc chỉ sử dụng lệnh truyền động là không đủ khi vị trí của các lâu đài thay đổi ngẫu nhiên.

Có hai bước chính để Robot VR có thể phá hủy các tòa nhà trên Sân chơi Dynamic Castle Crasher.

  1. Nếu Robot VR phát hiện ra tòa lâu đài, hãy lái về phía trước để đánh đổ nó.
    1. Không giống như mọi Sân chơi khác, Sân chơi Dynamic Castle Crasher không có tường. Vì các tòa nhà là vật thể duy nhất trên Sân chơi Dynamic Castle Crashernên Cảm biến khoảng cách có thể được sử dụng để phát hiện các tòa nhà.

      Góc nhìn từ trên xuống của Sân chơi Dynamic Castle Crasher với robot ở vị trí bắt đầu, ở chính giữa phía dưới của bố cục, có mũi tên chấm chấm chỉ vào một lâu đài ngay trước mặt robot được đánh dấu trong hộp màu đỏ. Mũi tên chỉ ra rằng cảm biến có thể phát hiện lâu đài như một vật thể ở phía trước nó.
  2. Nếu VR Robot không phát hiện ra tòa lâu đài, hãy quay lại và kiểm tra lại xem có tòa lâu đài nào không.
    1. Vì các tòa nhà là vật thể duy nhất trên Sân chơi Dynamic Castle Crasher, nên Cảm biến khoảng cách có thể được sử dụng để phát hiện các tòa nhà lâu đài.

      Góc nhìn từ trên xuống của Sân chơi Dynamic Castle Crasher, với robot ở vị trí bắt đầu và các mũi tên cong ở hai bên, cho biết cần phải rẽ cho đến khi phát hiện ra vật thể trong lâu đài.

Sau khi hoàn tất bước 1 và 2, Robot VR có thể quay lại bước 1 và sử dụng Cảm biến khoảng cách để tìm tòa nhà tiếp theo để phá hủy.

  • Bắt đầu một dự án mới trong VEXcode VR và đặt tên cho dự án Unit9Lesson2.

    Hộp tên dự án ở giữa Thanh công cụ VR VEXcode được đánh dấu bằng hộp màu đỏ, bên trái nút Chọn sân chơi. Tên dự án là Đơn vị 9 Bài 2.
  • Thêm hai khối [Bình luận] vào không gian làm việc và điền vào các bước được nêu ở trên.

    Một dự án VEXcode VR mới với hai khối Bình luận được đính kèm vào khối Khi bắt đầu. Các bình luận được đọc theo thứ tự: Đánh đổ tòa nhà được tìm thấy bằng Cảm biến khoảng cách; và Xoay để tìm tòa nhà bằng Cảm biến khoảng cách.
  • Khối [Nếu thì khác] có thể được sử dụng để kích hoạt từng hành động được nêu ở trên. Mỗi hành động phụ thuộc vào việc điều kiện Boolean trong khối [If then else] báo cáo là ĐÚNG hay SAI. Thêm khối [Nếu thì nếu không] bên dưới khối [Bình luận].

    Cùng một dự án VR VEXcode với khối If then else được đính kèm bên dưới bình luận thứ hai. Tham số của nhánh If được để mở.

    Để bạn biết

    Khối [Nếu thì khác] là khối C chấp nhận các khối báo cáo Boolean làm đầu vào. Khối [If then else] là một câu lệnh có điều kiện kiểm soát luồng của một dự án. Khối [If then else] sẽ thực thi một chuỗi lệnh cụ thể nếu điều kiện được đáp ứng và một tập lệnh khác nếu điều kiện KHÔNG được đáp ứng, do đó 'phân nhánh' luồng dự án. Chỉ có một nhánh trong [Nếu thì khác] sẽ được thực thi.

    Khối If then else từ VEXcode VR Toolbox.
    • Nếu điều kiện được báo cáo là ĐÚNG, các khối bên trong nhánh If Then sẽ được chạy.
    • Nếu điều kiện được báo cáo là SAI, các khối bên trong nhánh Else sẽ được chạy.
    Dự án VEXcode VR được sử dụng để minh họa chức năng của từng nhánh trong khối If then else. Trong dự án này, khối If then else được gắn vào Khi bắt đầu và đọc Nếu Khoảng cách phía trước tìm thấy một đối tượng, thì Bình luận - Đánh đổ tòa nhà được tìm thấy bằng Cảm biến khoảng cách và lái về phía trước; Nếu không, Quay để tìm tòa nhà bằng Cảm biến khoảng cách và Rẽ phải. Nhánh 'Nếu thì' được gắn nhãn là Tiến về phía trước nếu Cảm biến khoảng cách phát hiện ra vật thể. Nhánh 'Khác' được gắn nhãn là Rẽ phải nếu cảm biến khoảng cách không phát hiện ra vật thể.

    Khi tất cả các khối bên trong một nhánh được chạy, dự án sẽ chuyển sang khối tiếp theo bên ngoài khối [If then else].

  • Trong dự án này, Cảm biến khoảng cách có thể được sử dụng để phát hiện các tòa nhà trên Sân chơi. Thêm khối <Distance found object> vào khối [Nếu thì nếu không].

    Cùng một dự án VEXcode VR trước đó, với khối đối tượng Distance Found được thêm vào làm tham số của nhánh If then. Khối If then hiện đọc là If Front Distance tìm thấy một đối tượng sau đó.

    Để bạn biết

    Khối <Distance found object> là khối báo cáo Boolean báo cáo xem Cảm biến khoảng cách có tìm thấy vật thể nào ở phía trước Robot VR hay không. Khối này báo cáo ĐÚNG khi có vật thể hoặc bề mặt trong phạm vi 3000 milimét (mm) tính từ Robot VR.

    Khoảng cách tìm thấy đối tượng Khối VEXcode VR từ Hộp công cụ có nội dung Khoảng cách tìm thấy đối tượng phía trước?
  • Bây giờ mỗi nhánh của khối [If then else] cần được xác định bằng cách sử dụng các chú thích được tạo khi bắt đầu dự án. Khi khối <Distance found object> báo cáo là ĐÚNG, Robot VR sẽ di chuyển về phía tòa nhà đó để đánh đổ nó. Di chuyển khối [Bình luận] đó tới nhánh 'Nếu thì' của dự án.

    Cùng một dự án VEXcode VR với Bình luận đầu tiên được chuyển vào bên trong C của nhánh If then. Dự án hiện có nội dung Khi bắt đầu, Nếu Khoảng cách phía trước tìm thấy một vật thể, thì Đánh đổ tòa nhà được tìm thấy bằng Cảm biến khoảng cách.
  • Di chuyển khối [Bình luận] khác sang nhánh 'Khác' của dự án để biết điều gì sẽ xảy ra nếu Robot VR KHÔNG phát hiện ra tòa nhà.

    Cùng một dự án VEXcode VR với bình luận thứ hai bên trong C của nhánh else. Dự án hiện có nội dung Khi bắt đầu, Nếu Khoảng cách phía trước tìm thấy một vật thể, thì Đánh đổ tòa nhà được tìm thấy bằng Cảm biến khoảng cách; nếu không, Quay để tìm tòa nhà bằng Cảm biến khoảng cách.
  • Thêm khối [Drive] vào nhánh 'If Then' của khối [If then else].

    Cùng một dự án VEXcode VR với khối Drive được thiết lập để chuyển tiếp bên dưới bình luận đầu tiên trong nhánh If then. Nhánh If then hiện có nội dung: Nếu Front Distance tìm thấy một đối tượng, thì Comment Knock do tòa nhà được tìm thấy bằng cách sử dụng cảm biến Distance; Tiến về phía trước.
  • Khi khối <Distance found object> báo cáo SAI, Robot VR sẽ phải quay lại và tìm một tòa nhà trên Sân chơi. Thêm khối [Quay] bên dưới khối [Bình luận] trong nhánh 'Khác' của khối [Nếu thì khác].

    Cùng một dự án VEXcode VR với khối Turn được đặt ngay bên dưới bình luận thứ hai trong nhánh Else. Nhánh Else hiện đọc là, Else, Bình luận về lượt đi để tìm tòa nhà bằng cách sử dụng Cảm biến khoảng cách; sau đó Rẽ phải.
  • Trước khi thử nghiệm dự án, cần thêm một khối nữa. Các khối [Nếu thì nếu không] sẽ chỉ kiểm tra điều kiện một lần trước khi chuyển sang khối tiếp theo trong ngăn xếp. Trong Đơn vị 7, khối [Mãi mãi] đã được thêm vào dự án để hướng dẫn Robot VR kiểm tra liên tục tình trạng của Cảm biến mắt dưới. Để đảm bảo điều kiện Cảm biến khoảng cách được kiểm tra nhiều lần, hãy kéo khối [Mãi mãi] vào không gian làm việc xung quanh khối [Nếu thì khác].

    Tổng quan về cách thêm khối Forever vào dự án để toàn bộ khối If then else nằm bên trong khối C của khối Forever. Dự án hiện có nội dung Khi bắt đầu, Mãi mãi, Nếu khoảng cách phía trước tìm thấy vật thể thì lái về phía trước; nếu không thì rẽ phải.
  • Mở Dynamic Castle Crasher Playground và chạy dự án.

    Góc nhìn từ trên xuống của Sân chơi Castle Crasher với ba lâu đài còn nguyên vẹn và hai tòa lâu đài bị đổ. Con robot nằm ở góc trên bên phải cạnh một tòa lâu đài đổ nát.
  • Sau khi VR Robot đã phá hủy ít nhất hai tòa nhà, hãy tải lại Sân chơi và chạy dự án trên một bố cục khác của Sân chơi Castle Crasher.

    Góc nhìn từ trên xuống của Sân chơi Castle Crasher với ba lâu đài còn nguyên vẹn và hai tòa lâu đài bị đổ. Con robot nằm ở góc trên bên phải cạnh một tòa lâu đài đổ nát.
  • Trong mỗi lần chạy của dự án, VR Robot sẽ quay cho đến khi Cảm biến khoảng cách phát hiện ra tòa nhà, sau đó sẽ di chuyển về phía tòa nhà đó để đánh đổ nó.

    Góc nhìn từ bên hông của Robot VR đang đẩy một quân lâu đài ra khỏi Sân chơi, nhưng robot đang bắt đầu tiến về phía rìa Sân chơi như thể nó cũng sẽ rơi khỏi mép.
  • Trong quá trình thực hiện dự án, Robot VR có thể đẩy một khối xây dựng ra tận mép và rơi khỏi Sân chơi. Nguyên nhân là do khối <Distance found object> vẫn đang báo cáo rằng có một vật thể ở phía trước Robot VR. Khi khối này báo cáo là ĐÚNG, Robot VR sẽ di chuyển về phía trước. Dẫn dắt Robot VR rơi khỏi bà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.