Bài 6: Tương tác giữ Đạn – Vật cản trong trò chơi

Từ ChipFC Wiki
Phiên bản vào lúc 05:42, ngày 10 tháng 11 năm 2018 của Sncarem (Thảo luận | đóng góp)
(khác) ← Phiên bản cũ | xem phiên bản hiện hành (khác) | Phiên bản mới → (khác)
Bước tới: chuyển hướng, tìm kiếm


Mục tiêu

  • Học sinh hiểu được kĩ thuật tương tác giữa nhiều đối tượng.
  • Học sinh sử dụng được kĩ thuật “gửi tin nhắn”.
  • Học sinh áp dụng được các kĩ thuật này để áp dụng vào trò chơi.

Nội dung chi tiết

Sửa bài tập về nhà

Ở Bài 5, chúng ta cần hiện thực thêm chức năng tạo ra bản đồ như sau: Chúng ta sẽ không tạo ra viên gạch nếu nó đang chạm vào xe tăng. Do đó, chúng ta cần kiểm tra thêm điều kiện có đang chạm vào xe tăng hay không trước khi tạo ra một bản sao. Như vậy, một vật cản chỉ được tạo ra nếu như giá trị trong danh sách tương ứng là 1 và nó phải không chạm vào xe tăng. Đoạn chương trình để kiểm tra 2 điều kiện này như sau:

Hình 1: Chương trình kiểm tra phần tử trong danh sách và chạm vào xe tăng

Bài tập trên lớp: Giáo viên cho học sinh hiện thực chương trình hoàn chỉnh sau đây. Đoạn chương trình này cũng chính là đáp án của bài tập về nhà ở Bài 5.

Hình 2: Chương trình vẽ ra bản đồ tránh xe tăng

Sau khi chạy chương trình, giáo viên có thể cho học sinh di chuyển vị trí của xe tăng. Chúng ta có thể thấy, vật cản sẽ không được tạo ra khi có xe tăng ở đó (xem . Điều này cũng hợp lý với mục đích của trò chơi, xe tăng cần khoảng trống để di chuyển.

Hình 3: Vật cản được tạo ra không trùng với vị trí của xe tăng

Tương tác giữa viên đạn và vật cản

Theo như yêu cầu của trò chơi này, xe tăng có thể bắn để “dọn dẹp” vật cản. Với chương trình hiện tại, mỗi khi viên đạn được bắn ra (nhấn phím khoảng trắng), nó đang “đi xuyên” qua vật cản. Chúng ta cần cải tiến chương trình để khi viên đạn chạm vào vật cả, cả 2 cùng biến mất.

Đầu tiên, chúng ta sẽ viết chương trình cho vật cản trước. Cần lưu ý ở đây, mỗi vật cản thật ra chỉ là 1 bản sao từ bản gốc của chúng mà thôi (trong chương trình, chúng ta đang dùng câu lệnh tạo ra bản sao từ bản thân tôi). Do đó, chúng ta sẽ hiện thực chức năng trong sự kiện khi 1 bản sao được tạo ra. Chúng ta cần một vòng lặp mãi mãi để kiểm tra xem bản sao (chính là vật cản) có chạm vào viên đạn hay không. Chương trình gợi ý như sau:

Hình 4: Chương trình vật cản bị mất khi chạm vào viên đạn

Lưu ý: Đây là chương trình cho vật cản, nên chúng ta cần nhấp đôi vào vật cản (đối tượng Button3) để hiện thực đoạn chương trình này.

Ẩn viên đạn khi đụng vật cản

Với chương trình hiện tại, vật cản đã mất đi mỗi khi viên đạn đụng phải. Tuy nhiên, viên đạn vẫn tiếp tục bay đi và làm mất đi những vật cản phía sau. Chúng ta cần cải tiến chương trình để cho viên đạn biến mất khi nó gặp phải vật cản đầu tiên. Để làm được việc này, chúng ta cần 2 bước.

Bước 1: Trước khi xóa bản sao của vật cản, chúng ta cần tạo ra 1 tin nhắn gửi đến viên đạn. Chúng ta sẽ dùng câu lệnh thông báo, và tạo một tin nhắn mới (nhấn vào kí hiệu tam giác ở góc của câu lệnh thông báo), một hộp hoại thoại hiện ra cho phép chúng ta đặt tên cho thông báo, ví dụ là DanChamGach (viết tắt của Đạn Chạm Gạch), như hình vẽ dưới đây:

Hình 5: Tạo một tin nhắn mới

Chương trình hoàn thiện cho vật cản như sau:

Hình 6: Chương trình cho vật cản

Bước 2: Cập nhật chương trình cho viên đạn (đối tượng Ball): Khi nhận được thông báo thì ngừng hoạt động của viên đạn, để nó không bay nữa, và ẩn nó đi.

Hình 7: Cập nhật thêm chương trình cho viên đạn

Lưu ý: Đây là chương trình cho viên đạn, nên phải nhấp đôi vào đối tượng viên đạn để hiện thực thêm đoạn chương trình này. Học sinh cần lưu ý màu của các câu lệnh để tìm cho đúng và hiệu chỉnh lại các thông số bằng cách nhấn vào phím mũi tên màu đen ở góc bên phải của các câu lệnh.