Bạn đã bao giờ mệt mỏi với những dòng code Scratch dài dằng dặc và lặp đi lặp lại? Bài viết này sẽ hướng dẫn bạn một kỹ thuật nâng cao giúp “đóng gói” các khối lệnh, biến chương trình của bạn trở nên gọn gàng, rõ ràng và dễ quản lý hơn bao giờ hết: đó là tạo và sử dụng khối lệnh tùy chỉnh (My Blocks).

Tại sao cần tạo khối lệnh (Block) riêng?
Sau khi đã thành thạo phần lớn các khối lệnh có sẵn trong Scratch, bạn sẽ nhận thấy chúng có hai đặc điểm chính:
– Mỗi lệnh có một chức năng riêng biệt để điều khiển nhân vật, hình nền và có thể tái sử dụng nhiều lần.
– Lệnh có thể có tham số đầu vào (như di chuyển ... bước, thay đổi kích cỡ ...) hoặc không cần tham số (như khi nhấp vào cờ, hình ảnh tiếp theo).
Tuy nhiên, khi dự án trở nên phức tạp, việc sử dụng hàng loạt lệnh lặp lại sẽ khiến code trở nên rối rắm và khó kiểm soát. Đây là lúc tính năng Make a Block trong mục My Blocks phát huy sức mạnh. Nó cho phép bạn tự định nghĩa những lệnh mới với chức năng riêng, giúp chương trình ngắn gọn và rõ ràng hơn.

Về bản chất, khái niệm Block này tương tự như hàm hay chương trình con trong các ngôn ngữ lập trình chuyên nghiệp. Việc nắm vững nó sẽ rèn luyện cho bạn tư duy phân chia công việc lớn thành các phần nhỏ – một kỹ năng thiết yếu để xử lý các dự án Scratch phức tạp.
Hướng dẫn chi tiết cách tạo và sử dụng My Blocks
1. Tạo một Block cơ bản (không tham số)
Giả sử chúng ta có một chuỗi hành động đơn giản: chú mèo di chuyển ngang, sau đó xoay và tiếp tục di chuyển. Trong chuỗi này, có hai khối lặp lại giống hệt nhau.

Để tối ưu, chúng ta sẽ tạo 2 Block mới: Move (Di chuyển) và Rotate (Xoay) không có tham số.
1. Vào mục My Blocks, nhấn Tạo Khối Lệnh.
2. Đặt tên cho Block, ví dụ: “Move”.
3. Nhấn OK. Một khối định nghĩa Move sẽ xuất hiện.
4. Kéo và thả khối lặp lại thứ nhất từ chương trình chính vào khối định nghĩa Move này.
5. Lặp lại các bước để tạo Block “Rotate” với khối lặp lại thứ hai.

Sau khi định nghĩa xong, trong chương trình chính, bạn chỉ cần sử dụng hai lệnh Move và Rotate vừa tạo. Lập tức, chương trình sẽ trông gọn gàng và có cấu trúc rõ ràng hơn. Mọi điều chỉnh về số bước di chuyển hay góc xoay giờ đây chỉ cần thực hiện trong khối định nghĩa của từng Block.
2. Tạo Block với một hoặc nhiều tham số
Sức mạnh thực sự của My Blocks nằm ở khả năng truyền tham số. Hãy xem xét tình huống chú mèo cần di chuyển với số lần lặp khác nhau trong mỗi lần gọi lệnh.

- Khi tạo Block, nhấn nút “Thêm đầu vào số hoặc văn bản”.
- Đặt tên cho tham số, ví dụ: “n”.
- Trong khối
định nghĩa, bạn sử dụng tham sốnnày như một biến số, chẳng hạn đưa nó vào khốilặp lại ... lần. - Lưu ý quan trọng: Tham số này chỉ có tác dụng trong phạm vi khối
định nghĩacủa Block và không thể sử dụng bên ngoài.

Khi sử dụng trong chương trình chính, Block Move của bạn giờ đây sẽ có một ô trống để bạn nhập giá trị, ví dụ: Move (5) hoặc Move (10).
Đối với các Block phức tạp hơn, bạn có thể thêm nhiều tham số. Ví dụ, Block Move có thể cần cả tham số về số bước (step) và số lần lặp (n). Block Rotate có thể cần số lần lặp (n) và góc xoay (degree). Khi sử dụng, bạn cần truyền giá trị vào đúng thứ tự tham số đã định nghĩa.
3. Tùy chọn “Chạy không làm mới màn hình”
Một tùy chọn nâng cao khác khi tạo Block là Run without screen refresh (Chạy không làm mới màn hình).

- Nếu KHÔNG chọn: Các hoạt động của nhân vật trong Block sẽ được hiển thị tuần tự, từng bước một trên màn hình.
- Nếu CÓ chọn: Toàn bộ hoạt động trong Block sẽ chạy ngầm và chỉ hiển thị kết quả cuối cùng. Nó giống như lệnh
đến x: ... y: ..., nhân vật sẽ “nhảy” tới vị trí mới mà không hiển thị quá trình di chuyển.
Bạn nên thử nghiệm tạo một Block di chuyển và chạy thử ở cả hai chế độ để thấy sự khác biệt rõ ràng. Tùy chọn này rất hữu ích để tối ưu hiệu ứng cho các hoạt động phức tạp, giúp chương trình chạy mượt mà hơn.
Ứng dụng thực tế: Tối ưu hóa chương trình vẽ hình
Hãy xem xét một ví dụ thực tế từ bài học vẽ hình bằng công cụ Pen. Chương trình vẽ nhiều hình như hình tròn, vuông, tam giác và bông hoa. Tất cả đều dựa trên nguyên lý lặp lại của việc vẽ một đa giác đều.

Thay vì viết đi viết lại các khối lệnh vẽ đa giác, chúng ta tạo một Block tên là Draw với hai tham số: Số cạnh (Side) và Độ dài cạnh (Len).

Trong khối định nghĩa Draw, chúng ta đặt bút, sau đó lặp lại Side lần việc di chuyển Len bước và xoay một góc thích hợp, cuối cùng nhấc bút.

Khi đó, chương trình chính trở nên cực kỳ đơn giản và dễ đọc:
1. Thiết lập vị trí, màu bút.
2. Draw (20, 8) để vẽ hình tròn (đa giác 20 cạnh).
3. Draw (4, 50) để vẽ hình vuông.
4. Draw (3, 60) để vẽ hình tam giác.
5. Dùng vòng lặp và Draw để vẽ từng cánh hoa.

So sánh với phiên bản không dùng Block, bạn sẽ thấy code ngắn gọn, có cấu trúc rõ ràng và dễ dàng chỉnh sửa thông số từng hình hơn rất nhiều.
Kết luận và bài tập thực hành
Bài học này đã cung cấp cho bạn công cụ mạnh mẽ để nâng cấp tư duy lập trình Scratch: khối lệnh tùy chỉnh (My Blocks). Bạn đã biết cách tạo Block không tham số, có tham số và sử dụng tùy chọn chạy ngầm. Việc quyết định tạo Block nào, với bao nhiêu tham số phụ thuộc vào mục đích và độ phức tạp của dự án.

Để thành thạo kỹ thuật này, hãy thử sức với hai bài tập thực hành sau:
1. Tạo chương trình xe ô tô tự lái: Xe di chuyển trên đường và phải dừng lại khi gặp chướng ngại vật. Hãy thử tạo các Block như di_chuyển_xe(), kiểm_tra_vật_cản().
2. Làm game “Đập chuột” (Whack-a-Mole): Tạo Block cho hành động chuột xuất hiện ngẫu nhiên và biến mất khi bị click.
Hãy bắt đầu áp dụng My Blocks vào các dự án hiện tại của bạn. Bạn sẽ bất ngờ về khả năng tổ chức code và sự chuyên nghiệp mà nó mang lại. Chúc bạn học tập và sáng tạo thật vui vẻ!
