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

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

20/01/2014 21:03

Bạn và bé đã tạo ra bàn cờ cho trò chơi đua ngựa cùng hai nhân vật: ngựa đỏ và ngựa xanh. Trò chơi đua ngựa sẽ bắt đầu với việc "gieo súc sắc", tức là lấy một số ngẫu nhiên.

Bạn có thể quy dịnh một phím để lấy số ngẫu nhiên cho ngựa đỏ, phím A chẳng hạn, và một phím khác để lấy số ngẫu nhiên cho ngựa xanh, có thể là phím L (nằm xa phím A để khỏi nhầm lẫn). Ta không thể dùng một phím duy nhất để lấy số ngẫu nhiên vì phải phân biệt lượt đi của ngựa đỏ với lượt đi của ngựa xanh.

Bạn có thể cho Sân khấu thực hiện kịch bản "gieo súc sắc". Bạn bấm vào Sân khấu trong khung nhân vật, chọn mục Kịch bản (chuyển qua kịch bản của Sân khấu). Để có số ngẫu nhiên khi phím A được ấn, chắc bạn nghĩ ngay đến thẻ Khi phím ... được ấn trong khung chứa thẻ Điều khiển. Sau khi kéo thẻ Khi phím ... được ấn vào khung kịch bản, bạn bấm vào dấu mũi tên chỉ xuống trong ô liệt kê của thẻ, chọn a (phím A). Bạn thử hỏi xem bé có thể hình dung những việc cần làm khi phím A được ấn hay không.

Có thể bé sẽ trả lời (nếu cần, bạn gợi ý bước đầu) rằng phải lấy một số ngẫu nhiên từ 1 đến 4 (theo dự định ban đầu) vào biến suc sac, cộng biến suc sac vào biến ngua do vì biến ngua do xác định vị trí của ngựa đỏ trên đường đua. Trong trường hợp gõ phím L, ta cũng làm tương tự, chỉ khác ở chỗ phải cộng biến suc sac vào biến ngua xanh. Bạn hãy giúp bé diễn đạt điều vừa nêu bằng kịch bản cụ thể như hình sau.



Theo kịch bản trong hình trên, sau khi thay đổi biến ngua do hoặc ngua xanh một mức bằng trị số của biến suc sac, ta cần phát ra thông báo thích hợp để các ô trên đường đua biết rằng phải thay đổi hình dạng của mình cho thích hợp với "diễn biến" mới. Để phát ra thông báo do (đỏ) trong lượt đi của ngựa đỏ, sau khi lắp thẻ Thông báo vào đúng chỗ, bạn bấm vào dấu mũi tên chỉ xuống trong ô liệt kê của thẻ đó, chọn mục Mới trong trình đơn vừa hiện ra, gõ từ do (đỏ) và bấm OK trong cửa sổ Tên thông điệp. Với lượt đi của ngựa xanh, bạn cho phát thông báo xanh.

Biến ngua do và biến ngua xanh quyết định chuyện thắng-thua. Bạn hướng dẫn bé lắp ráp thêm cụm thẻ như hình sau để diễn đạt những việc cần làm đối với hai biến đó khi bắt đầu và khi kết thúc trò chơi.

Nhìn vào hình trên, bạn và bé thấy rõ việc cần làm khi bắt đầu trò chơi là quy định rằng mọi biến phải chứa trị số 0. Trò chơi kết thúc ngay khi biến ngua do hoặc ngua xanh đạt đến trị số 40 (ứng với ô cuối cùng của đường đua). Ta cũng cần chú ý trường hợp biến ngua do hoặc ngua xanh vượt qua trị số 40. Chẳng hạn, biến ngua do hoặc ngua xanh có thể nhảy từ trị số 39 lên trị số 41 hoặc 42 hoặc 43. Với trường hợp như vây, ta cho biến "vượt rào" trở lại trị số 40. Nhờ vậy, ô thứ 40 của đường đua mới biết rằng phải hiển thị hình ngựa đỏ hoặc ngựa xanh.

Mỗi nhân vật gắn với một ô trong đường đua phải có một biến để ghi nhớ vị trí của mình (số thứ tự của ô trong đường đua). Khi một ô đường đua nhận được thông báo do (đỏ), nó phải so sánh biến ngua do với số thứ tự của mình. Nếu trùng khớp, ô đường đua đó lấy hình dạng "ngựa đỏ". Tương tự, trong lượt đi của ngựa xanh, khi một ô đường đua nhận ra biến ngua xanh trùng khớp với số thứ tự của mình, nó phải chuyển qua hình dạng "ngựa xanh".

Để tạo ra biến ghi nhớ số thứ tự của ô đường đua, bạn chọn Nhân vật1 (nhân vật gắn với ô đầu tiên của đường đua) trong khung nhân vật, chuyển qua khung chứa thẻ Các biến, bấm nút Tạo một biến, gõ tên biến là so thu tu (số thứ tự) trong cửa sổ Tên biến, chọn mục Chỉ đối với nhân vật này và bấm OK. Nhờ vậy, Nhân vật1 có được biến của riêng nó để ghi nhớ số thứ tự.

Chuyển qua kịch bản của Nhân vật1, bạn tạo cụm thẻ như hình sau để Nhân vật1 lấy hình dạng "trống rỗng" và biến so thu tu của nó có trị số là 1 khi trò chơi bắt đầu.

Sau này, khi bạn sao chép Nhân vật1 để tạo ra Nhân vật2, Nhân vật3,... gắn với các ô đường đua tiếp theo, mỗi bản sao đều có biến so thu tu dành riêng. Chắc bạn đoán ra ngay: ta sẽ phải cho biến so thu tu trong mỗi bản sao chứa trị số khác nhau, tương ứng với vị trí của chúng trong đường đua.

NGỌC GIAO

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

Lên đầu trang