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

Trò chơi "Đua ngựa" (bài 38)

11/02/2014 18:18

Nếu "chơi ăn thua" trò "Đua ngựa" với bé, bạn thấy ngay một nhược điểm cần khắc phục: mỗi khi bé nóng ruột muốn thắng, giữ rịt phím A (hoặc phím L), ngựa của bé chạy "một lèo" đến đích, bất chấp luật lệ, không đợi tới lượt đi.

Hiện tượng như vậy là do cụm thẻ Khi phím a được ấn và cụm thẻ Khi phím l được ấn luôn được thi hành khi phím A hoặc phím L được ấn, không có hạn chế nào (kể cả khi trò chơi kết thúc!).

Hiện thời, trong kịch bản của sân khấu, bạn đã có biến di truoc (đi trước) dùng để quy định ai đi trước khi bắt đầu trò chơi. Ta có thể dùng biến này trong suốt trò chơi để quy định lượt đi. Vẫn như trước, ta quy ước: trị số 1 của biến di truoc ứng với lượt đi của ngựa đỏ, trị số 2 ứng với lượt đi của ngựa xanh. Bạn hãy tạo ra cụm thẻ Nếu di truoc = 1 ... trái lại ... như trong hình sau. Ta sẽ đưa cụm thẻ đó vào thẻ lặp mãi mãi thuộc cụm thẻ Khi cờ xanh được ấn, nhưng tạm thời bạn cứ đặt nó nằm "mình ên" để dễ dàng giải thích cho bé hiểu rõ cụm thẻ đó diễn đạt điều gì.

Cụm thẻ bạn vừa thêm dùng để thiết lập "tôn ti trật tự". Nếu biến di truoc là 1 (lượt đi của ngựa đỏ), ta mới xét xem phím A có được ấn hay không. Lúc phím A được ấn, phải thay đổi trị của biến di truoc thành 2 để chuyển lượt đi qua ngựa xanh. Tương tự, khi biến di truoc không là 1 (lượt đi của ngựa xanh), ta mới xét xem phím L có được ấn hay không. Lúc phím L được ấn, trị của biến di truoc đổi thành 1 để chuyển lượt đi qua ngựa đỏ.

Bạn hãy kéo cụm thẻ gắn bên dưới thẻ Khi phím a được ấn, gắn cụm thẻ đó vào bên trong thẻ Nếu phím a được ấn?. Tương tự, bạn kéo cụm thẻ bên dưới thẻ Khi phím l được ấn, gắn vào bên trong thẻ Nếu phím l được ấn? (hình dưới đây). Khi biến di truoc là 1 (lượt đi của ngựa đỏ), chương trình chỉ chờ đợi xem phím A có được ấn hay không. Lúc ấy, bạn gõ phím L "nhiệt tình" đến đâu đi nữa cũng không có tác dụng gì hết. Khi biến di truoc không là 1 (lượt đi của ngựa xanh), tình thế đảo ngược: chương trình chỉ chờ đợi phím L được ấn, dù giữ rịt phím A cũng không "ăn thua".


Với ý tưởng lập trình mới, ta không còn cần đến thẻ Khi phím a được ấn và thẻ Khi phím l được ấn. Bạn có thể xóa hai thẻ đó đi.

Khi bé đã hiểu rõ ý nghĩa của cụm thẻ Nếu di truoc = 1 ... trái lại ... vừa tạo ra, bạn kéo cụm thẻ đó vào thẻ lặp mãi mãi thuộc cụm thẻ Khi cờ xanh được ấn (hình dưới đây). Phải làm như vậy, cụm thẻ vừa tạo mới được thi hành. Bạn gõ phím Enter để chơi thử, xem diễn biến của trò chơi có đúng như dự định không nha.

Khi chạy thử trò chơi, có khi bạn thấy hiện tượng kỳ lạ: sau khi bấm nút cờ xanh, ta thiếu mất ngựa đỏ hoặc ngựa xanh ở bên ngoài đường đua (lẽ ra phải có cả hai). Bạn hãy chuyển qua kịch bản của "ngựa đỏ ngoài đường đua" (Nhân vật41), thêm hai thẻ lệnh làm cho biến ngua do và biến di truoc trở về trị 0 (hình dưới đây).

Chuyển qua kịch bản của "ngựa xanh ngoài đường đua" (Nhân vật42), bạn thêm hai thẻ lệnh làm cho biến ngua xanh và biến di truoc trở về trị 0. Nhờ vậy, chương trình luôn khởi động "sạch sẽ". Nếu không làm vậy, các biến quan trọng của ta có thể lưu giữ trị số ngẫu nhiên nào đó, làm cho diễn biến của chương trình không đúng như dự định.

Bạn và bé thử nghĩ xem nên tiếp tục cải tiến trò chơi ra sao nha. Chẳng hạn, ta bổ sung luật mới: trò chơi chưa kết thúc khi có ngựa về đích, mà kết thúc khi có ngựa... về chuồng. Ngựa tại đích phải chờ súc sắc cho số 1 để vào chuồng (khi đó Nhân vật41 hoặc Nhân vật42 tái hiện), vẫn có thể bị "đá" trong lúc chờ. Rất hồi hộp!

NGỌC GIAO

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

Lên đầu trang