Bài 9: Thêm đối tượng xe tăng tự động

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

Trong bài này, chúng ta sẽ thêm một xe tăng tự động. Mục đích của xe tăng tự động này là tìm diệt xe tăng người chơi. Xe tăng tự đoạn di chuyển, bắn đạn một cách ngẫu nhiên và không có bất kì sự can thiệp nào từ phía người chơi.

Tải nhân vật từ trên mạng về bộ nhớ máy tính

Trước tiên, chúng ta có thể tìm và tải một hình ảnh xe tăng từ trên mạng Internet. Chúng ta có thể vào trang http://wifi.chipfc.com như sau:

Hình 1: Trang web wifi.chipfc.com

Tìm đến mục Scratch nâng cao, và chọn vào đường dẫn đầu tiên để tải hình ảnh (phần âm thanh sẽ dùng cho bài sau) và lưu về bộ nhớ của máy tính:

Hình 2: Sau khi chọn vào mục Hình ảnh và Âm thanh

Thêm xe tăng tự động vừa tải vào chương trình

Từ cửa sổ chương trình chính của Scratch, chọn Tải đối tượng lên

Hình 2: Tải nhân vật xe tăng tự động lên

Chọn tới đường dẫn lưu hình ảnh cho xe tăng tự động, và chọn nó để tải lên chương trình

Hình 4: Tải xe tăng tự động (đối tượng tank_xanh) lên chương trình

Đầu tiên, chúng ta cần cho xe tăng này ẩn đi, chỉ khi nào nhận được thông báo bắt đầu trò chơi thì nó mới được hiện lên như đã trình bày ở Bài 8

Hình 5: Ẩn xe tăng tự động khi bắt đầu trò chơi, và hiện lại khi có thông báo bắt đầu trò chơi

Chương trình này được hiện thực cho xe tăng tự động (đối tượng tank_xanh).

Hiệu chỉnh chương trình di chuyển của xe tăng người chơi

Xe tăng mà người chơi điều khiển bằng 4 phím mũi tên (đối tượng tank) không được phép đi chuyển đè lên xe tăng tự động. Chúng ta cần thêm một câu lệnh điều kiện để kiểm tra xem xe tăng màu đỏ có chạm và xe tăng xanh hay không.

Hình 6: Chương trình di chuyển của xe tăng đỏ: Không được di chuyển đè lên xe tăng xanh

Hiệu chỉnh chương trình tạo ra vật cản

Chúng ta cũng cần thay đổi chương trình sinh ra vật cản trong trò chơi, để vật cản không được đè lên xe tăng tự động. Chúng ta cần nhấp đôi vào đối tượng vật cản (đối tượng Button3) và sửa lại chương trình cho nó. Trước khi tạo ra bản sao của vật cản, chúng ta phải xét thêm xem nó có chạm vào đối tượng tank_xanh hay không.

Hình 7: Đoạn chương trình kiểm tra điều kiện có chạm vào tank_xanh hay không

Như vậy, cho đến lúc này, để một vật cản được tạo ra cần phải có 3 điều kiện:

  • Phần tử tương ứng trong danh sách có giá trị là 1
  • Không chạm vào xe tăng đỏ (đối tượng tank)
  • Không chạm vào xe tăng xanh (đối tượng tank_xanh)

Bản đồ trò chơi được tạo ra sẽ như sau:

Hình 8: Bản đồ trò chơi được tạo ra: Tránh các vị trí của 2 xe tăng

Chương trình di chuyển tự động của xe tăng

Tương tự như xe tăng màu đỏ, chúng ta cũng tạo ra một khối lệnh mới, tên là DiChuyenTuDong. Chúng ta vào lại mục Thêm nhiều Khối lệnh, nhấn vào nút Tạo một mảnh ghép, nhập tên và nhấn OK.

Hình 9: Tạo mảnh ghép mới cho xe tăng tự động

Chương trình di chuyển của xe tăng xanh hoàn toàn giống với xe tăng người chơi, chúng ta có thể hiện thực như sau:

Hình 10: Chương trình di chuyển cho xe tăng tự động

Những điểm khác nhau cần lưu ý:

  • Chúng ta không cần chơi âm thanh cho xe tăng tự động.
  • Xe tăng tự động di chuyển mỗi lần chỉ 5 bước, chậm hơn so với xe tăng người chơi, nhằm tạo lợi thế di chuyển cho người chơi.
  • Tương tự với xe tăng người chơi, xe tăng tự động không đi xuyên qua vật cản cũng như không đi xuyên qua xe tăng người chơi.
  • Thay vì không di chuyển khi chạm biên như xe tăng người chơi, xe tăng tự động sẽ ngay lập tức chuyển hướng nếu chạm vào biên của bản đồ.

Xây dựng kịch bản cho xe tăng di chuyển tự động

Trong việc di chuyển của xe tăng màu đó, hướng di chuyển được quyết định bởi 4 phím mũi tên. Tương ứng với các phím mũi tên trái phải lên xuống, chúng ta có 4 hướng là -90, 90, 0 và 180. Do đó, chúng ta có thể tạo ra 1 biến số ngẫu nhiên có giá trị -1, 0, 1 và 2. Sau đó nhân với 90 để có 1 hướng di chuyển ngẫu nhiên cho xe tăng tự động. Trước tiên, chúng ta tạo ra một biến Huong, gán cho nó giá trị ngẫu nhiên. Sau đó cho xe tăng tự động xoay về hướng ngẫu nhiên này trước khi gọi khối lệnh DiChuyenTuDong. Chương trình gợi ý như sau:

Hình 11: Một kịch bản di chuyển cho robot tự động