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

Trò chơi "du hành vũ trụ" (bài 18)

10/09/2013 09:08

Trong trò chơi "du hành vũ trụ" mà bạn và bé đã tạo ra bằng Scratch, sau khi trang bị tên lửa cho tàu vũ trụ, có thể bắt đầu tính đến việc tạo ra thử thách ở mức cao hơn.

Để tăng độ khó của trò chơi, chắc bạn nghĩ ngay đến việc gia tăng số lượng thiên thạch. Muốn vậy, bạn chỉ cần bấm-phải vào thiên thạch trong khung nhân vật, chọn mục Tạo bản sao trong trình đơn vừa hiện ra. Lập tức, bạn có thiên thạch thứ hai. Bạn nên đề nghị bé lặp lại thao tác như bạn vừa làm để có thiên thạch thứ ba, thứ tư,... Bạn hướng dẫn bé kéo các thiên thạch trên sân khấu, sắp xếp thành "cấu hình" tùy ý, rồi gõ phím Enter để bắt đầu chơi. Cuộc "du hành vũ trụ" bỗng trở nên khó khăn ghê gớm. Nếu không nhanh tay bắn tan các thiên thạch thì... "chết như chơi"!

Bạn thấy đó, việc sao chép một nhân vật thành nhiều nhân vật có kịch bản giống nhau được tiến hành rất dễ dàng. Do vậy, bạn đừng lưu phiên bản trò chơi "nhiều thiên thạch" hiện có. Ta hãy làm cho trò chơi tinh tế hơn nữa. Sau này, bạn có thể "nhân bản" thiên thạch bất cứ lúc nào.

Để trò chơi tinh tế hơn, bạn hãy hình dung về "rô-bốt không gian" được trang bị vũ khí. Rô-bốt xuất hiện ngẫu nhiên ở cạnh dưới sân khấu và bay thẳng từ dưới lên trên. Rô-bốt sẽ quay súng về phía "vật thể lạ" (tức tàu vũ trụ của ta) và nhả đạn! Khác với thiên thạch, đây là mối nguy hiểm "cao cấp" hơn vì có "trí khôn" nhất định. Khi bạn đã tạo được một rô-bốt hoàn chỉnh, sẽ chẳng khó khăn chi việc dàn dựng "cuộc chiến với binh đoàn rô-bốt".

Việc tạo nhân vật rô-bốt như vậy dường như rất phức tạp. Nếu bình tĩnh phân tích, bạn sẽ thấy được từng bước đơn giản để đạt đến mục tiêu đã định. Trước hết, yêu cầu "rô-bốt xuất hiện ngẫu nhiên ở cạnh dưới sân khấu và bay thẳng từ dưới lên trên" không có gì xa lạ nếu bạn và bé đã từng thực hiện trò chơi "gõ phím nhanh". Bạn có thể lấy nhân vật "phím" trong trò chơi đó và "tân trang" thành rô-bốt.

Bạn bấm nút Mở. Khi Scratch đề nghị Bạn muốn lưu dự án hiện tại?, bạn bấm nút Không và mở trò chơi "gõ phím nhanh". Bấm-phải vào nhân vật "phím" bất kỳ trong khung nhân vật, bạn chọn mục Xuất nhân vật này. Trong cửa sổ Xuất nhân vật, bạn mở thư mục dành riêng cho những "con rối" tự tạo của mình (My sprites chẳng hạn), gõ tên gì đó trong ô Tên tệp mới (có thể đặt tên là robot) và bấm OK.

Bạn mở lại trò chơi "du hành vũ trụ" (phiên bản "một thiên thạch"), bấm nút Thêm nhân vật mới. Trong cửa sổ Nhân vật mới, bạn tìm chọn nhân vật "phím" (robot) vừa lưu.

Khi đã thấy nhân vật "phím" trên sân khấu, bạn chọn mục Hình dạng và bấm nút Chỉnh sửa. Trong cửa sổ Môi trường vẽ, bạn xóa "hình dạng phím" và nhờ bé vẽ rô-bốt có súng. Bé không cần vẽ rô-bốt hình người, chỉ cần vẽ hình dạng tròn tròn, có cái que (khẩu súng) hướng sang phải như sau là được.

Bạn bấm nút OK để đóng cửa sổ Môi trường vẽ, sửa tên nhân vật mới thành Robot, sửa luôn tên của hình dạng vừa vẽ thành robot.

Bạn chọn tàu vũ trụ trong khung nhân vật (chuyển qua khung Hình dạng của tàu vũ trụ), lần lượt kéo từng "hình dạng nổ" từ khung hình dạng của tàu vũ trụ, thả vào rô-bốt trong khung nhân vật.

Chọn rô-bốt trong khung nhân vật, bạn thấy ngoài hình dạng robot, giờ đây có thêm các "hình dạng nổ". Bạn hiểu ngay: rô-bốt cũng có khi nổ tung chứ!

Chọn mục Kịch bản (chuyển qua khung Kịch bản của rô-bốt), bạn bấm-phải vào thẻ Khi phím... được ấn, chọn mục Xóa. Ta chỉ để lại cụm thẻ như hình sau.

Bạn chú ý, kịch bản vừa "nhập khẩu" từ trò chơi "gõ phím nhanh" có dùng một số biến. Các biến ấy cũng được mang vào trò chơi hiện hành. Bấm nút Các biến, bạn thấy rõ có ba biến: Buoc (bước), Diem (điểm) và Hien (hiện). Biến BuocHien cần thiết cho kịch bản của rô-bốt. Biến Diem sẽ cần cho việc tính điểm.

Cũng như trước, ta hãy giao cho sân khấu nhiệm vụ tạo lập trị ban đầu thích hợp cho các biến. Bạn chọn Sân khấu trong khung nhân vật, chọn mục Kịch bản (chuyển qua khung Kịch bản của sân khấu) và ráp cụm thẻ như hình sau (biến Buoc có trị ban đầu là 1, biến Diem có trị ban đầu là 0).

Gõ phím Enter để chạy thử chương trình, bạn sẽ thấy rô-bốt bay từ dưới lên trên như mong đợi. Nếu rô-bốt bị kẹt ở biên trên sân khấu, bạn xem tọa độ y của nó là gì và sửa "tọa độ kẹt" trong kịch bản của rô-bốt cho thích hợp. Chẳng hạn, bạn thấy rô-bốt bị kẹt ở tọa độ y khoảng 175, bạn sửa điều kiện Nếu vị trí y > 179 thành Nếu vị trí y > 175 trong kịch bản của rô-bốt để rô-bốt biến mất khi đến gần biên trên của sân khấu, thay vì kẹt ở đó.

Sau khi tạo được "rô-bốt không gian" bay liên tục trong sân khấu từ dưới lên trên, ta hãy tiếp tục thực hiện dự định: rô-bốt tự động hướng về phía tàu vũ trụ và nhả đạn! Với "kinh nghiệm" bắn tên lửa từ tàu vũ trụ, có lẽ bạn nghĩ ra ngay cách làm: cần có một nhân vật mới gọi là "đạn". Tương tự như tên lửa được lập trình để bay đi từ tàu vũ trụ khi "phím cách" được ấn, đạn sẽ bay đi từ rô-bốt khi nhận được thông báo "bắn". Nghĩa là để nhả đạn, rô-bốt chỉ cần gửi đi thông báo "bắn" (rô-bốt bắn đạn một cách tự động chứ không theo sự điều khiển của người dùng như trường hợp tàu vũ trụ bắn tên lửa).

Cụ thể, chuyển qua khung kịch bản của rô-bốt, bạn gắn thêm cụm thẻ như hình sau (cụm thẻ được đóng khung), gồm hai thẻ điều kiện Nếu. Thẻ Nếu thứ nhất được gắn thêm "nói" rằng: nếu tọa độ y của rô-bốt bằng 0 (rô-bốt bay đến giữa sân khấu), rô-bốt sẽ hướng về phía tàu vũ trụ và phát ra thông báo "bắn". Bạn nhớ, sau khi gắn thẻ Thông báo, để tạo ra thông báo mới, bạn bấm vào ô trong thẻ Thông báo, chọn mục Mới, rồi gõ thông báo tùy ý trong cửa sổ vừa hiện ra.

Tại sao rô-bốt phải bay đến giữa sân khấu mới được bắn? Nói cho đúng, ta rất cần chọn một "vị trí bắn" nào đó cho rô-bốt, không nhất thiết ở giữa sân khấu. Nếu để rô-bốt nhả đạn liên tục ở mọi vị trí thì "phe ta" chắc chắn thua, không "làm ăn" gì được!

Điều kiện Nếu thứ hai được thêm vào nhằm tính đến trường hợp rô-bốt chạm vào tên lửa. Khi đó, rô-bốt "xử sự" giống như thiên thạch, nghĩa là phát ra thông báo "trúng" để tên lửa nổ tung. Nhưng khác với thiên thạch, ta không cho rô-bốt biến đi trong trường hợp trúng tên lửa, mà đưa nó đến vị trí ngẫu nhiên ở cạnh dưới sân khấu, xem như một rô-bốt khác vừa xuất hiện.

Nếu ta không tính đến trường hợp rô-bốt chạm vào tên lửa như vậy, tên lửa sẽ không thể làm nổ rô-bốt, người chơi không có cách chi chống trả rô-bốt ngoài việc lái tàu né đạn.

Việc lập trình cho rô-bốt xem như ổn rồi đó, bạn chỉ cần thêm nhân vật "đạn" nữa thôi. Vì đạn hoạt động khá giống tên lửa, bạn nên sao chép từ tên lửa: bấm-phải vào tên lửa trong khung nhân vật, chọn mục Tạo bản sao. Bạn sửa tên nhân vật mới thành Dan (đạn) trong ô phía trên khung kịch bản. Chuyển qua khung Hình dạng của đạn, bạn cũng sửa tên hình dạng đầu tiên thành dan. Bạn nên bấm nút Chỉnh sửa ứng với hình dạng đó để sửa hình dạng của đạn sao cho khác với tên lửa. Trong cửa sổ Môi trường vẽ, bạn có thể bấm nút Co hình để thu nhỏ hình dạng tên lửa, tạo thành đạn.

Chuyển qua khung Kịch bản của đạn (hiện có nội dung giống hệt tên lửa), bạn sửa kịch bản sao cho giống như hình sau. Bạn chú ý xem kỹ những thay đổi nhé. Theo kịch bản mới, khi nhận được thông báo "bắn" (do rô-bốt phát ra), đạn chuyển đến vị trí của rô-bốt, định hướng theo rô-bốt rồi di chuyển theo hướng đó. Ngoài trường hợp đạn chạm vào biên, ta còn phải tính đến trường hợp chạm vào tàu. Khi đạn chạm vào tàu, muốn cho tàu nổ tung, chỉ cần phát ra thông báo "chạm" (thiên thạch cũng làm như vậy khi chạm vào tàu).


Để tạo ra thêm thẻ điều kiện Nếu chạm vào Tau như ở hình trên, bạn có thể sao chép thẻ Nếu chạm vào biên: bấm-phải vào thẻ Nếu chạm vào biên, chọn mục Tạo bản sao, đặt bản sao ngay dưới thẻ Nếu chạm vào biên và bấm chuột một phát. Trong thẻ Nếu vừa tạo ra, bạn thay biên bởi Tau (bấm vào biên, chọn Tau) và đưa vào thêm thẻ Thông báo cham.

Bạn nhớ giải thích thật rõ cho bé về hoạt động của rô-bốt và đạn, rồi đề nghị bé gõ Enter để chơi thử. Bé sẽ thấy rô-bốt trôi dần đến giữa sân khấu, đột nhiên quay về phía tàu vũ trụ và nhả đạn rất chính xác. Trò chơi giờ đây hồi hộp giống như một cuộc... đấu súng, phải nhanh tay bắn trước mới sống sót!

NGỌC GIAO

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

Lên đầu trang