Thử thách Gói Dash - C++

Thử thách Dash gói
Trong thử thách này, bạn sẽ lập trình cho robot của mình để nhặt các gói hàng và mang chúng đến bến tàu nhanh nhất có thể!
Quy tắc thử thách:
- Robot phải bắt đầu thử thách ở Khu vực bắt đầu.
- Các gói hàng (lon nhôm) chỉ có thể tiếp xúc với sách, móng vuốt của Clawbot và Bến xếp hàng.
- Nếu một gói hàng bị rơi xuống đất trong kho, bạn phải đặt lại trường và bắt đầu lại.
- Thời gian cho mỗi lần chạy bắt đầu ngay khi robot di chuyển.
- Thời gian sẽ dừng lại ngay khi gói hàng cuối cùng được thả xuống Bến xếp hàng.
- Khi thiết lập lại trường, mọi thứ phải được trả về đúng vị trí ban đầu.
- Chúc vui vẻ!
Mẹo dành cho giáo viên
-
Tăng sự tương tác bằng cách tạo ra câu chuyện hoặc mục đích cho nhà kho! Đây là loại kho nào? Có những loại bao bì nào trong kho? Ai là chủ sở hữu nhà kho?
-
Cho phép học sinh tạo ra nhiều tuyến đường hoặc chiến lược khác nhau giúp vận chuyển lon hiệu quả hơn.
-
So sánh không chỉ thời gian hoàn thành để quyết định người chiến thắng trong thử thách này (nếu bạn tổ chức để cạnh tranh) mà còn cả các kỹ thuật điều hướng được sử dụng để học sinh có thể xem xét giải pháp của các đội khác.
Hộp công cụ giáo viên
-
Giải pháp
Có thể tìm thấy tiêu chí đánh giá học sinh theo chương trìnhtại đây.
Sau đây là một giải pháp khả thi cho thách thức này. Giải pháp có thể khác nhau tùy thuộc vào vị trí bắt đầu của robot và đường đi được chọn. Có nhiều cách để di chuyển tất cả các gói hàng.
int main() {
// Khởi tạo cấu hình Robot. KHÔNG ĐƯỢC THÁO RA!
vexcodeInit();
// Chạy động cơ Claw một cách an toàn và nhấc gói hàng đầu tiên lên
ClawMotor.setTimeout(2, seconds);
Drivetrain.driveFor(forward, 900, mm);
Drivetrain.turnFor(right, 90, degrees);
ArmMotor.spinFor(forward, 315, degrees);
ClawMotor.spinFor(reverse, 180, degrees);
Drivetrain.driveFor(forward, 215, mm);
ClawMotor.spinFor(forward, 120, degrees);
// Lái xe đến Bến xếp hàng để thả gói hàng đầu tiên
Drivetrain.driveFor(reverse, 110, mm);
Drivetrain.turnFor(right, 90, degrees);
Drivetrain.driveFor(forward, 920, mm);
Drivetrain.turnFor(left, 90, degrees);
Drivetrain.driveFor(tiến, 2300, mm);
Drivetrain.turnFor(trái, 90, độ);
Drivetrain.driveFor(tiến, 750, mm);
ArmMotor.spinFor(đảo ngược, 315, độ);
ClawMotor.spinFor(đảo ngược, 120, độ);
// Nhặt gói thứ hai
Drivetrain.driveFor(đảo ngược, 200, mm);
Drivetrain.turnFor(trái, 170, độ);
Drivetrain.driveFor(tiến, 900, mm);
Drivetrain.turnFor(phải, 90, độ);
Drivetrain.driveFor(tiến, 2300, mm);
ArmMotor.spinFor(tiến, 315, độ);
ClawMotor.spinFor(tiến, 120, độ);
// Lái xe đến Bến xếp hàng để thả gói hàng thứ hai
Drivetrain.driveFor(tiến, 900, mm);
Drivetrain.turnFor(phải, 90, độ);
Drivetrain.driveFor(tiến, 960, mm);
ArmMotor.spinFor(đảo ngược, 315, độ);
ClawMotor.spinFor(đảo ngược, 120, độ);
// Nhấc gói hàng thứ ba
Drivetrain.driveFor(đảo ngược, 150, mm);
Drivetrain.turnFor(trái, 90, độ);
ArmMotor.spinFor(tiến, 315, độ);
Drivetrain.driveFor(tiến, 490, mm);
ClawMotor.spinFor(tiến, 120, độ);
// Lái xe đến Bến xếp hàng để thả gói hàng thứ ba
Drivetrain.driveFor(reverse, 490, mm);
Drivetrain.turnFor(right, 90, degrees);
Drivetrain.driveFor(forward, 150, mm);
ArmMotor.spinFor(reverse, 315, degrees);
ClawMotor.spinFor(reverse, 120, degrees);
}