Robot thoát mê cung trong Scratch: cảm biến màu, lệnh điều kiện và thuật toán bám tường
Dự án Scratch robot thoát mê cung cho học sinh lớp 4–6: chấm cảm biến màu, vòng lặp đến khi, phép không, thuật toán bám tường phải, mô phỏng đường đi và trường hợp đi vòng mãi.
Robot hút bụi, xe tự lái hay robot trong kho hàng đều phải tự tìm đường. Chúng "nhìn" bằng cảm biến rồi quyết định bằng các câu lệnh điều kiện. Dự án này cho học sinh lớp 4–6 làm một robot thoát mê cung trong Scratch: robot dùng một chấm cảm biến màu để biết phía trước có tường hay không, và đi theo quy tắc bám tường phải. Qua dự án, trẻ luyện vòng lặp "lặp lại đến khi", phép "không", khối cảm biến màu và cách nghĩ ra một thuật toán.
1. Ý tưởng: cảm biến màu thay cho mắt robot
Robot thật có cảm biến khoảng cách hoặc cảm biến dò vạch. Trong Scratch, có thể giả lập cảm biến bằng màu sắc:
- tường của mê cung tô màu đen, ô đích tô màu xanh lá;
- robot có một chấm nhỏ màu đỏ ở phía trước;
- khối "màu đỏ chạm màu đen?" trả lời đúng hoặc sai: đúng nghĩa là ô phía trước là tường.
Tên khối trong bài dịch theo nghĩa tiếng Việt; chữ trên giao diện Scratch có thể khác đôi chút giữa các phiên bản.
2. Chuẩn bị sân khấu và nhân vật

- Phông nền: chọn sân khấu, mở thẻ Phông nền, dùng công cụ hình chữ nhật tô kín màu đen để vẽ tường. Mỗi ô của mê cung rộng 40 bước (sân khấu Scratch rộng 480, cao 360 bước). Mê cung trong hình có 9 x 7 ô. Tô ô đích màu xanh lá.
- Nhân vật robot: vẽ một hình nhỏ hơn ô (khoảng 30 bước) để robot không chạm tường khi đứng giữa ô. Thêm một chấm tròn nhỏ màu đỏ cách tâm robot khoảng 30 bước, ở bên phải hình robot. Scratch coi hình vẽ trong trình vẽ là đang nhìn về hướng 90 độ (sang phải), nên khi robot quay về hướng 0 độ (lên trên), chấm đỏ sẽ nằm phía trước.
- Đặt tâm trang phục đúng giữa thân robot, để robot quay tại chỗ.
Chấm đỏ cách tâm 30 bước, còn mép tường của ô bên cạnh chỉ cách tâm 20 bước. Vì vậy khi ô phía trước là tường, chấm đỏ nằm hẳn trong vùng màu đen; khi ô phía trước trống, chấm đỏ nằm trên nền trắng.
3. Chương trình bám tường phải

Quy tắc bám tường phải rất dễ nói thành lời: "Mỗi khi tới một ô mới, thử rẽ phải trước. Không được thì đi thẳng. Không được nữa thì rẽ trái. Đường cụt thì quay đầu." Chương trình viết quy tắc đó bằng một mẹo gọn:
- "xoay phải 90 độ": luôn thử hướng bên phải trước.
- "lặp lại đến khi < không < màu đỏ chạm màu đen? > >: xoay trái 90 độ": nếu phía trước là tường thì xoay trái, thử tiếp. Lần xoay trái thứ nhất đưa robot về hướng thẳng, lần thứ hai về bên trái, lần thứ ba về phía sau. Robot ngừng xoay khi phía trước trống.
- "di chuyển 40 bước": đi đúng một ô. "đợi 0.3 giây" để mắt người kịp theo dõi.
- Vòng lặp ngoài cùng dừng khi robot chạm màu xanh lá, tức đã tới đích.
4. Robot đi như thế nào?

Với mê cung trong hình, robot đi 30 ô thì tới đích. Ngay bước đầu, robot rẽ phải vào một ngõ cụt, xoay trái ba lần rồi quay đầu đi ra. Thoạt nhìn có vẻ "dại", nhưng đó chính là cách robot không bao giờ bỏ sót đường: tay phải của nó luôn sờ vào tường.
Cho trẻ dùng bút chì tô theo đường đi của robot trên một bản in mê cung, rồi so với lúc chạy chương trình.
5. Khi nào cách bám tường không thoát được?

Bám tường chỉ chắc chắn tới đích khi đích nằm sát phần tường nối liền với chỗ xuất phát. Ở mê cung bên phải, tường bao quanh đích là một "hòn đảo" tách rời. Lối vào đảo nằm bên trái đường đi, mà robot bám tường phải thì không bao giờ rẽ trái khi còn đường khác, nên cứ đi vòng ngoài mãi.
Đây là bài học quý: một thuật toán đúng ở trường hợp này có thể sai ở trường hợp khác. Lập trình viên luôn phải thử nhiều trường hợp.
6. Thử thách mở rộng
- Bám tường trái: đổi "xoay phải" thành "xoay trái" và ngược lại. Với mê cung ở mục 2, đường nào ngắn hơn?
- Đếm bước: tạo biến "số bước", tăng 1 sau mỗi lần di chuyển. Quá 200 bước thì robot nói "Cần cách khác!" và dừng.
- Bẫy màu vàng: vẽ vài ô màu vàng. Nếu robot chạm màu vàng thì quay về chỗ xuất phát.
- Tự vẽ mê cung: mỗi bạn vẽ một mê cung cho bạn khác thử. Ai vẽ được mê cung làm robot đi vòng mãi?
7. Gợi ý cho phụ huynh và giáo viên
- Chơi không máy trước: kẻ mê cung bằng băng dính trên sàn. Một bạn bịt mắt làm robot, tay phải luôn chạm "tường" (bạn khác cầm thước làm tường), một bạn đọc lệnh. Trẻ sẽ tự phát hiện ra quy tắc bám tường.
- Kiến thức: vòng lặp có điều kiện dừng, phép "không", cảm biến và quyết định, kiểm thử với nhiều trường hợp.
- Độ tuổi: lớp 4–6, đã làm quen với Scratch. Học sinh nhỏ hơn có thể dùng mê cung có sẵn, chỉ ghép chương trình.
- Thời lượng: 2 buổi 45 phút: buổi 1 vẽ sân khấu, nhân vật và chạy chương trình; buổi 2 phân tích đường đi và làm thử thách.
8. Xem thêm
- Trò chơi robot và người lập trình trên bảng ô vuông (chơi không cần máy tính trước khi làm bài này)
- Scratch là gì? Bắt đầu với ScratchJr và Scratch cho học sinh lớp 4–5
- 5 dự án Scratch đầu tiên cho trẻ
- Dạy vòng lặp và điều kiện cho trẻ không cần máy tính
- Với mạch thật, robot dò line dùng cảm biến hồng ngoại để đi theo vạch đen: thanh cảm biến dò line 5 kênh TCRT5000 với ESP32.
Xem thêm