Cùng bé lập trình Scratch

Trò chơi "Nuôi cá cảnh" (bài 23)

24/10/2013 16:14

Bạn đã lập trình cho một con cá trong bể biết tìm thức ăn. Để chuẩn bị tạo ra nhiều cá, ta có những việc cần làm…

Khi bấm chuột để thả "thức ăn" vào "bể cá" trên màn hình và quan sát cá lao đến chỗ bấm chuột, có thể bạn sẽ nhận ra thẻ lệnh Hướng về phía Thuc an trong kịch bản của cá đôi khi hoạt động không chính xác: cá không đến đúng chỗ có thức ăn, tiếp tục lao về phía thành bể cá và kẹt ở đó. Để cá luôn hướng về phía thức ăn cho đến khi chạm vào thức ăn mới thôi, bạn chỉ cần đưa thẻ Hướng về phía Thuc an vào trong vòng lặp Lặp cho tới khi chạm vào Thuc an.

Tuy nhiên, hiện tượng cá đớp hụt thức ăn lại có vẻ giống thật hơn, vì vậy bạn nên bổ sung vào kịch bản của cá như hình dưới đây: bên trong vòng lặp Lặp cho tới khi chạm vào Thuc an, thẻ Hướng về phía Thuc an chỉ được thi hành khi cá chạm vào biên.

Gõ phím Enter và thử cho cá ăn, bạn sẽ thấy có trường hợp rất vui: cá đớp hụt thức ăn, lao thẳng vào thành bể, rồi quay lại, tiếp tục lao về phía thức ăn.

Ngoài ra, kịch bản cho cá vẫn còn một vấn đề nữa phải giải quyết. Bạn thử hình dung: khi ta tạo ra nhiều cá bằng cách sao chép con cá hiện có, mọi con cá trong đàn hoạt động theo cùng kịch bản. Khi có thức ăn, chỉ một con cá chạm được vào thức ăn và trở lại trạng thái bình thường (bơi lội nhẩn nha). Những con cá không chạm được vào thức ăn sẽ không thể trở về trạng thái bình thường, tiếp tục di chuyển nhanh do tác dụng của thẻ Di chuyển 10 bước (để tìm mẩu thức ăn đã biến mất!).

Để tránh tình trạng như vậy, bạn nên thêm vào kịch bản của cá như hình sau: khi biến an (ăn) có trị số là 0, hoạt động của cụm thẻ Khi tôi nhận thông báo an chấm dứt (dù cá chưa chạm được vào thức ăn). Nhờ vậy, khi một con cá nào đó đớp được thức ăn, những con cá khác bình thản trở lại, không còn nháo nhào nữa.

Bạn cũng nên cải tiến kịch bản cho mẩu thức ăn. Hiện tại, khi bạn thả mẩu thức ăn vào bể cá, mẩu thức ăn "đứng im" tại chỗ. Sẽ thật hơn nếu ta cho mẩu thức ăn trôi chậm theo hướng ngẫu nhiên. Nhờ vậy, trường hợp cá đớp hụt thức ăn sẽ xảy ra nhiều hơn. Càng vui!

Cụ thể, bạn bổ sung vào kịch bản của mẩu thức ăn như hình sau. Theo đó, sau khi hiện ra, mẩu thức ăn được định hướng một cách ngẫu nhiên và di chuyển chầm chậm cho tới khi nào trị số của biến an là 0 (con cá nào đó đã chạm vào mẩu thức ăn).

Bạn hãy bấm nút Lưu dự án này để lưu lại mọi việc đã làm. Sau khi giải thích cho bé hiểu rõ mọi chi tiết của kịch bản, bạn hướng dẫn bé sao chép con cá hiện có để tạo ra nhiều cá. Chỉ cần bấm-phải vào con cá hiện có, chọn mục Tạo bản sao trên trình đơn vừa hiện ra và bấm vào đâu đó trong bể cá. Con cá mới sẽ xuất hiện tại chỗ được bấm. Cứ thế, bé tạo ra chừng chục con cá cho... đông vui.

Khi bé gõ phím Enter để chạy chương trình và bấm chuột để cho cá ăn, đàn cá tranh nhau mẩu thức ăn, trông sinh động như thật. Tuy mọi con cá hoạt động theo kịch bản giống nhau, mỗi con cá ở từng thời điểm có hành vi riêng biệt.

Nếu muốn giữ lại đàn cá để hôm khác xem lại, bạn nên lưu với tên tập tin khác, đừng cho ghi đè lên phiên bản "một con cá". Nếu không, mỗi khi muốn cải tiến hoạt động của cá, bạn sẽ phải chỉnh sửa trong từng con cá (hoặc xóa từng con cá cho đến khi còn lại một con, rồi chỉnh sửa con cá "làm mẫu" trước khi "gầy dựng" lại đàn cá).

NGỌC GIAO


Ý kiến bạn đọc (0)
Tên   Email

Lên đầu trang