Bài 11: Tương tác giữa đạn của xe tăng tự động và các đối tượng khác

Từ ChipFC Wiki
Bước tới: chuyển hướng, tìm kiếm


Mục tiêu

  • Học sinh hiểu được tư tưởng lập trình cho một đối tượng vận hành tự động.
  • Học sinh hiểu được “trí thông minh” của xe tăng tự động.
  • Học sinh có thể tương tác được nhiều đối tượng trong trò chơi.

Nội dung chi tiết

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

Đầu tiên, cũng tương tự như viên đạn của xe tăng đỏ, viên đạn của xe tăng xanh cũng có khả năng xóa một vật cản trên bản đồ. Để làm chức năng này chúng ta có 2 bước như sau:

Bước 1: Trong chương trình của vật cản, kiểm tra xem nó có chạm vào viên đạn xe tăng màu xanh hay không (đối tượng Basketball). Nếu nó có chạm vào viên đạn này, thì ẩn vật cản đi, đồng thời gửi 1 thông báo tới viên đạn của xe tăng màu xanh. Cách tạo một thông báo mới giáo viên có thể nhắc lại cho học sinh ở bài trước. Chương trình gợi ý cho chức năng này như sau:

Hình 1: Vật cản ẩn đi khi viên đạn của xe tăng màu xanh (đối tượng Basketball) chạm vào

Bước 2: Đối với viên đạn của xe tăng xanh, khi nhận được thông báo DanXanhChamGach thì nó cũng được ẩn đi. Chương trình gợi ý như sau:

Hình 2: Chương trình viên đạn của xe tăng màu xanh

Tương tác giữa 2 xe tăng

Đối với 2 xe tăng, khi viên đạn của đối phương chạm vào nó, thì nó cũng phải ẩn đi. Đầu tiên, chúng ta sẽ hiện thực chương trình cho viên đạn của xe tăng đỏ. Khi nó được bắn ra bằng cách nhấn phím khoảng trắng, chương trình sẽ kiểm tra xem nó có chạm vào xe tăng màu xanh hay không (đối tượng tank_xanh). Nếu có, nó sẽ ẩn đi và đồng thời gửi 1 thông báo tới xe tăng màu xanh (ví dụ: DanDoChamTankXanh – viết tắt không dấu của Đạn Đỏ Chạm Tank Xanh). Xe tăng màu xanh nhận thông báo này, sẽ ẩn đi khỏi bản đồ trò chơi.

Chương trình gợi ý cho viên đạn của xe tăng đỏ như sau:

Hình 3: Chương trình viên đạn của xe tăng màu đỏ

Một đoạn kiểm tra điều kiện xem viên đạn có chạm vào đối tượng tank_xanh hay không. Nếu có thì ẩn viên đạn này đi, đồng thời gửi thông báo đến xe tăng màu xanh.

Chương trình cho xe tăng màu xanh khi nhận được thông báo này sẽ như sau:

Hình 4: Xe tăng xanh ẩn đi khi nhận được thông báo

Lưu ý: Chúng ta phải chọn cho đúng thông báo ở câu lệnh khi tôi nhận được thông báo.

Bài tập trên lớp: Học sinh tự hiện thực chương trình theo chiều ngược lại: Khi viên đạn của xe tăng màu xanh chạm vào xe tăng đỏ, nó cũng mất đi. Đồng thời, xe tăng đỏ cũng ẩn đi khỏi bản đồ trò chơi. Học sinh có thể cải tiến là nếu xe tăng đỏ chạm đạn, toàn bộ chương trình sẽ dừng lại.

Đáp án: Chương trình cho viên đạn của xe tăng xanh như sau:

Hình 5: Chương trình cho viên đạn xe tăng xanh

Lưu ý: Một thông báo mới được tạo ra trong trường hợp này, là thông báo DanXanhChamTankDo (viết tắt của Đạn Xanh Chạm Tank Đỏ).

Chương trình cho xe tăng đỏ sẽ chờ nhận thông báo này, và sẽ ngừng tất cả để kết thúc trò chơi:

Hình 6: Dừng toàn bộ chương trình khi xe tăng đỏ bị bắn trúng

Bài tập về nhà

Hiện tại, khi xe tăng xanh mất đi, viên đạn của nó vẫn còn tự động bắn ra. Học sinh hãy hiện thực thêm chương trình để khắc phục lỗi này.

Gợi ý: Tạo thêm 1 biến, ví dụ Còn Sống, có giá trị ban đầu là 0. Khi xe tăng xanh trúng đạn (nhận được thông báo DanDoChamTankXanh) thì gán giá trị cho biến này là 1. Trong kịch bản di chuyển của xe tăng xanh, kiểm tra biến này có bằng 0 hay không. Nếu bằng không mới gửi thông báo TankXanhBanDan. Chương trình liên quan đến việc xử lý này như sau:

Hình 7: Chương trình cho xe tăng xanh (lưu ý các mũi tên màu đỏ)

Học sinh thiết kế màn hình kết thúc trò chơi (GAME OVER). Màn hình này sẽ hiện lên khi xe tăng đỏ trúng đạn. Trên màn hình có nút để bắt đầu lại trò chơi.