Clone trong Scratch (nâng cao)

Trong bài viết trước Clone trong Scratch cơ bản, chúng ta đã đề cập đến cách sử dụng Clone để tạo ra những bản sao có hành động tương tự nhau. Ở bài viết này, chúng ta sẽ sử dụng clone một cách cao cấp hơn. Đó là phân biệt các clone với nhau và lập trình hành động riêng biệt cho các clone khác nhau.

Sprite (nhân vật) sẽ được hiểu là bản chính. Clone là các bản sao mà Sprite (bản chính) sinh ra.

  • Bản chính thì có thể sử dụng mọi câu lệnh Event trong mục Event như thông thường. Bản chính thì sẽ sử dụng câu lệnh “create clone of myself” để tạo bản sao.
  • Các hành động của bản sao thì sẽ được lập trình bên dưới câu lệnh Event “When I start as a clone” nghĩa là “Khi tôi bắt đầu là một bản sao”. Việc lập trình hành động cho bản sao thì có thể thực hiện tương tự như nhân vật bình thường
  • Sau khi bản sao hoàn thành nhiệm vụ, chúng ta cần xoá chúng đi. Lưu ý: không ẩn (hide) các bản sao đã hoàn thành nhiệm vụ. Khi chương trình có quá nhiều clone thì sẽ dẫn đến hiện tượng lag.

Có thể phân biệt các bản sao (Clone) với nhau không?

Có! Chúng ta có thể dùng costume (hình dáng) khác nhau để phân biệt các bản sao với nhau. Do đó, chúng ta cũng có thể dựa vào hình dáng khác nhau của Clone để lập trình các hành động khác nhau cho Clone.

Chúng ta sẽ thực hiện một ví dụ nhỏ để làm rõ điều này. Chú mèo Scratch sẽ có 4 costume là 4 màu sắc khác nhau. Chúng ta sẽ lập trình để mèo Scratch tạo ra 4 clone và mỗi clone sử dụng một costume khác nhau.

Trong đoạn chương trình trên, chú mèo Scratch lần lượt di chuyển ra từng vị trí, đổi costume rồi tạo clone. Sau đó lại tiếp tục lặp lại công việc di chuyển ra vị trí mới, đổi cosutme rồi tạo clone. Như vậy chú mèo đã tạo ra 4 clone với 4 costume khác nhau.

Lưu ý: Trên màn hình kết quả, chỉ là 4 clone do chú mèo vừa tạo ra. Bản chính đã bị ẩn.

Cách phân biệt các clone (bản sao)

Chúng ta sẽ tạo ra một đoạn chương trình nữa. Đoạn chương trình này sẽ kiểm tra xem clone có đang được click vào hay không. Nếu nó đang được click vào thì chúng ta sẽ tiếp tục kiểm tra xem costume của nó là costume số mấy. Và sau đó clone sẽ nói ra màu tương ứng với màu da của nó.

Nếu các clone có màu khác nhau nói ra màu khác nhau thì có nghĩa là chúng ta có thể phân biệt các clone với nhau. Các bạn hãy cùng ấn lá cờ xanh phía dưới để thử nhé!

Thật vui là chúng ta có thể phân biệt được các clone nhờ costume khác nhau! Dựa vào ứng dụng này, chúng ta có thể lập trình cho các clone làm các hành động khác nhau.

Sự thật thú vị!

Ngoài cách lập trình như trên, ta hoàn toàn có thể sử dụng Event When this sprite click để nhận diện clone có đang được click vào hay không.

Chúng ta có thể thay thế Event When I start as a clone, vòng lặp forever kết hợp với kiểm tra chạm trỏ chuột + click chuột bằng event When this sprite click mà không ảnh hưởng đến kết quả. Như vậy, trong một số trường hợp, Clone cũng có thể sử dụng được các event như nhân vật bình thường.

Lưu ý: trong đoạn chương trình trên, khi sử dụng Event when this sprite click thì không cần có vòng lặp bên ngoài câu lệnh If. Khi clone được click, chúng ta có thể ngay lập tức kiểm tra xem clone đang ở costume nào và đưa ra câu nói tương ứng. Việc kiểm tra này chỉ cần thực hiện một lần duy nhất ngay khi clone được click vào.

Project demo: https://scratch.mit.edu/projects/401120330/

Project ứng dụng Clone với nhiều costume khác nhau: https://scratch.mit.edu/projects/384752662/

Share

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *