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

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

08/10/2013 16:52

Bạn đã lập trình cho "cá đồ chơi" bơi lội tung tăng. Ta cần làm cho "cá" giống thực hơn nữa.


Trước hết, "bể cá" trên màn hình của bạn chắc vẫn còn dùng màu nền trắng. Bạn nên chuyển qua màu xanh dịu mắt. Cụ thể, bạn chọn Sân khấu trong khung nhân vật, chọn mục Hình nền và bấm nút Chỉnh sửa. Trong cửa sổ Môi trường vẽ, bạn chọn màu ở bảng màu, chọn "thùng sơn", bấm vào nền trắng để tô màu, rồi bấm OK.

Nếu bạn có bể cá thực sự, bạn có thể chụp hình bể cá từ bên trên (chỉ có sỏi và vật trang trí, chưa thả cá) và dùng hình ấy làm hình nền (trong khung Các hình nền, bạn bấm nút Nhập và chọn hình trong thư mục nào đó).

Khi quan sát cá thật trong bể cá, bạn thấy cá bơi khi nhanh, khi chậm, có khi đổi hướng bất ngờ. Hành vi của cá khó đoán định, có vẻ ngẫu nhiên vì ta không thể biết cá cảm thấy điều gì. Để "cá đồ chơi" của bạn gần giống cá thật, cần đưa vào những yếu tố ngẫu nhiên.

Trước hết, ta có thể cho số bước (số điểm ảnh) trong thẻ di chuyển là số ngẫu nhiên. Bạn chọn nhân vật cá trong khung nhân vật bên dưới sân khấu. Trong khung chứa thẻ Các biến, bạn bấm nút Tạo một biến. Trong cửa sổ nhỏ vừa hiện ra, bạn gõ buoc (bước), chọn Chỉ đối với nhân vật này và bấm OK. Bằng cách đó, bạn tạo ra biến buoc dành riêng cho con cá hiện có. Sau này, khi bạn tạo ra thêm cá bằng cách sao chép từ con cá hiện có, mỗi con cá sẽ có biến buoc riêng.

Bạn kéo biến buoc từ khung chứa thẻ Các biến, thả vào ô trị số của thẻ Di chuyển (có hai thẻ như vậy trong kịch bản của cá, thuộc cụm thẻ thứ hai). Bạn kéo thẻ Đặt buoc là 0, đưa vào trong thẻ Lặp mãi mãi, ở trên thẻ Nếu chạm vào biên. Chuyển qua khung chứa thẻ Các phép toán, bạn kéo thẻ Lấy ngẫu nhiên, thả vào ô trị số của thẻ Đặt buoc là. Bạn sửa trị số trong thẻ Lấy ngẫu nhiên như hình sau. Nhờ vậy, trị số của biến buoc sẽ thường xuyên thay đổi. Đó là trị được lấy một cách ngẫu nhiên từ 0 đến 5, làm cho cá bơi nhanh chậm khác nhau "tùy hứng".

Sau khi giải thích cho bé hiểu rõ ý nghĩa của việc dùng biến buoc, bạn nên đề nghị bé thực hiện điều tương tự đối với góc quay của cá. Nếu cá luôn luôn quay một góc 15 độ thì "máy móc" quá, cần làm cho góc quay trở nên ngẫu nhiên (xem như cá "ngó ngang ngó dọc" tìm mồi vậy mà). Có lẽ bé sẽ hiểu ngay rằng cần tạo một biến ghi nhớ góc quay (tạo thêm biến goc) dành riêng cho con cá hiện có.

Có một điều bạn nên nhắc bé: khi quy định khoảng trị số ngẫu nhiên, nên lấy từ trị âm đến trị dương. Nghĩa là góc quay có thể âm hoặc dương, làm cho cá quay phía này hoặc phía kia tùy lúc.

Với số lần lặp lại của thẻ Di chuyển, bạn cũng nên đề nghị bé chuyển số đó thành số ngẫu nhiên như gợi ý ở hình sau (tạo thêm biến lap dành riêng cho con cá hiện có).

Gõ phím Enter và quan sát cá bơi, có lẽ bạn sẽ nhận thấy có điều cần được cải tiến: khi không chạm biên, cá luôn bơi thẳng. Để cá tỏ ra "bất định" hơn nữa, bạn nên thêm thẻ lệnh Nếu như trong hình sau (thẻ được đóng khung màu đỏ). Thẻ lệnh như vậy "nói" rằng: khi biến buoc có trị số nhỏ hơn 2, cá sẽ quay một góc ngẫu nhiên nào đó. Nghĩa là cá không chỉ quay khi chạm biên, mà còn quay mỗi khi bơi chậm lại. Khi cá bơi chậm lại, rất có thể nó "thay đổi ý định" về hướng bơi. Bạn có nghĩ vậy không?

Bạn chú ý, để tạo ra điều kiện buoc < 2 trong thẻ Nếu, bạn kéo thẻ có dấu "nhỏ hơn" trong khung chứa thẻ Các phép toán, thả vào ô điều kiện của thẻ Nếu, kéo biến buoc từ khung chứa thẻ Các biến vào ô bên trái của thẻ "nhỏ hơn", bấm vào ô bên phải và gõ số 2.

Lại gõ phím Enter và quan sát cá bơi, bạn thấy con cá của mình "lanh lợi" hơn trước, gần giống cá thật, đại khái như hình sau. Bạn không thể biết trước nó sẽ bơi về hướng nào, như thể nó thường phát hiện điều gì đó trong "bể cá" mà bạn không thấy được.

NGỌC GIAO


Bài liên quan:
Ý kiến bạn đọc (0)
Tên   Email

Lên đầu trang