Khác biệt giữa các bản “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
(Tạo trang mới với nội dung “Category:Scratch nâng cao ==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.…”)
 
 
Dòng 12: Dòng 12:
 
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:
 
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:
 
    
 
    
[[Tập tin:bai9-1.jpg|120px|nhỏ|giữa|Hình 1: Trang web wifi.chipfc.com]]
+
[[Tập tin:bai9-1.png|120px|nhỏ|giữa|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:
 
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:
 
   
 
   
[[Tập tin:bai9-2.jpg|120px|nhỏ|giữa|Hình 2: Sau khi chọn vào mục Hình ảnh và Âm thanh]]
+
[[Tập tin:bai9-2.png|120px|nhỏ|giữa|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===
 
===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
 
Từ cửa sổ chương trình chính của Scratch, chọn Tải đối tượng lên
  
[[Tập tin:bai9-3.jpg|120px|nhỏ|giữa|Hình 2: Tải nhân vật xe tăng tự động lên]]  
+
[[Tập tin:bai9-3.png|120px|nhỏ|giữa|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
 
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
 
   
 
   
[[Tập tin:bai9-4.jpg|120px|nhỏ|giữa|Hình 4: Tải xe tăng tự động (đối tượng tank_xanh) lên chương trình]]  
+
[[Tập tin:bai9-4.png|120px|nhỏ|giữa|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
 
Đầ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
 
   
 
   
[[Tập tin:bai9-5.jpg|120px|nhỏ|giữa|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]]
+
[[Tập tin:bai9-5.png|120px|nhỏ|giữa|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).
 
Chương trình này được hiện thực cho xe tăng tự động (đối tượng tank_xanh).
Dòng 36: Dòng 36:
 
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.
 
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.
 
    
 
    
[[Tập tin:bai9-6.jpg|120px|nhỏ|giữa|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]]
+
[[Tập tin:bai9-6.png|120px|nhỏ|giữa|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===
 
===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.
 
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.
 
    
 
    
[[Tập tin:bai9-7.jpg|120px|nhỏ|giữa|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]]
+
[[Tập tin:bai9-7.png|120px|nhỏ|giữa|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:
 
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:
Dòng 50: Dòng 50:
 
Bản đồ trò chơi được tạo ra sẽ như sau:
 
Bản đồ trò chơi được tạo ra sẽ như sau:
 
   
 
   
[[Tập tin:bai9-8.jpg|120px|nhỏ|giữa|Hình 8: Bản đồ trò chơi được tạo ra: Tránh các vị trí của 2 xe tăng]]
+
[[Tập tin:bai9-8.png|120px|nhỏ|giữa|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===
 
===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'''''.
 
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'''''.
 
   
 
   
[[Tập tin:bai9-9.jpg|120px|nhỏ|giữa|Hình 9: Tạo mảnh ghép mới cho xe tăng tự động]]
+
[[Tập tin:bai9-9.png|120px|nhỏ|giữa|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:
 
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:
 
   
 
   
[[Tập tin:bai9-10.jpg|120px|nhỏ|giữa|Hình 10: Chương trình di chuyển cho xe tăng tự động]]
+
[[Tập tin:bai9-10.png|120px|nhỏ|giữa|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 ý:
 
Những điểm khác nhau cần lưu ý:
Dòng 71: Dòng 71:
 
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:
 
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:
 
   
 
   
[[Tập tin:bai9-11.jpg|120px|nhỏ|giữa|Hình 11: Một kịch bản di chuyển cho robot tự động]]
+
[[Tập tin:bai9-11.png|120px|nhỏ|giữa|Hình 11: Một kịch bản di chuyển cho robot tự động]]

Bản hiện tại lúc 05:53, ngày 10 tháng 11 năm 2018


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