Chào mừng các bạn trở lại với hành trình khám phá lập trình Scratch! Nếu ở bài trước, chúng ta đã làm quen với việc điều khiển một nhân vật đơn lẻ, thì hôm nay, chúng ta sẽ cùng nhau bước vào một thử thách thú vị hơn: tạo ra sự tương tác giữa hai nhân vật. Bài học này sẽ mở ra cánh cửa để bạn tự tay xây dựng những đoạn phim hoạt hình ngắn hay những trò chơi đơn giản với nhiều nhân vật, nơi chúng có thể trò chuyện và phản ứng với nhau một cách sinh động.

Từ ý tưởng đến dự án: Câu chuyện “Hoàng tử Ế”
Trong bài học này, chúng ta sẽ cùng thực hiện một dự án nhỏ mang tên “Hoàng tử Ế”. Đây là một cốt truyện quen thuộc và thú vị: Công chúa gặp hoàng tử và đặt ra câu hỏi “Chàng có phải là hoàng tử không?”. Điểm đặc biệt là câu trả lời không đến từ chính hoàng tử, mà lại phụ thuộc vào người xem – chính là chúng ta.
- Nếu bạn trả lời “Có”, hoàng tử sẽ xác nhận điều đó và công chúa vui mừng chạy đến hôn chàng.
- Nếu bạn trả lời “Không”, hoàng tử cũng sẽ lặp lại câu trả lời này, và công chúa tức giận bỏ đi.
Dự án này không chỉ giúp chúng ta ôn tập lại cấu trúc if-else mà còn giới thiệu một khái niệm quan trọng: cách truyền thông điệp (message) giữa các nhân vật để chúng có thể “nói chuyện” với nhau.
Chuẩn bị sân khấu và nhân vật
Mọi vở kịch hay đều cần một bối cảnh và những diễn viên phù hợp. Công việc đầu tiên của chúng ta là thiết lập môi trường và chọn lựa nhân vật cho câu chuyện.
- Tạo dự án mới: Đầu tiên, hãy tạo một file Scratch mới. Mặc định, nhân vật chú mèo sẽ xuất hiện. Chúng ta có thể xóa chú mèo này đi để chọn nhân vật khác phù hợp hơn.
- Chọn nhân vật: Chúng ta cần hai nhân vật: một hoàng tử và một công chúa.
- Vào thư viện Animals (Động vật) hoặc Fantasy (Fantasy) để tìm và thêm nhân vật hoàng tử.
- Tiếp tục vào thư viện People (Con người) để tìm và thêm nhân vật công chúa.
- Thiết lập phông nền: Để câu chuyện thêm phần lãng mạn, hãy chọn một khung cảnh phù hợp, chẳng hạn như một tòa lâu đài hay khu rừng thơ mộng từ thư viện Backdrops.

Một điểm quan trọng cần nhớ: Mỗi nhân vật sẽ có một bảng mã (script) riêng biệt. Bạn có thể chuyển đổi giữa các bảng mã bằng cách nhấp vào hình đại diện của nhân vật đó ở khu vực phía dưới bên phải màn hình.
Lập trình hành động cho từng nhân vật
Bây giờ, chúng ta sẽ lần lượt “cài đặt” hành vi cho từng nhân vật, bắt đầu từ hoàng tử.
Phần mã cho Hoàng tử
Chúng ta muốn hoàng tử xuất hiện ở một vị trí cố định trên tảng đá ngay khi chương trình bắt đầu.
1. Tại bảng mã của nhân vật hoàng tử, kéo khối khi nhấn vào lá cờ xanh từ nhóm Sự kiện (Events).
2. Gắn vào đó khối đến x: ... y: ... từ nhóm Chuyển động (Motion). Tọa độ này sẽ được xác định bằng cách kéo nhân vật hoàng tử đến vị trí mong muốn trên sân khấu, Scratch sẽ tự động điền tọa độ vào khối lệnh.
Như vậy, cứ mỗi khi lá cờ xanh được nhấn, hoàng tử sẽ luôn xuất hiện tại đúng vị trí mà chúng ta đã đặt.
Phần mã cho Công chúa
Hành trình của công chúa sẽ phức tạp hơn một chút. Cô ấy sẽ bắt đầu từ bên ngoài khung hình, di chuyển vào và đặt câu hỏi.
1. Thiết lập ban đầu: Gắn khối khi nhấn vào lá cờ xanh với hai khối lệnh:
– đến x: ... y: ... để đặt công chúa ở vị trí bắt đầu bên ngoài khung hình.
– chuyển sang trang phục ... từ nhóm Hình dạng (Looks) để chọn biểu cảm khuôn mặt đầu tiên (ví dụ: biểu cảm tò mò, ngạc nhiên). Bạn có thể vào mục Trang phục (Costumes) để xem và chỉnh sửa các biểu cảm khác nhau của nhân vật.
2. Di chuyển vào giữa sân khấu: Sau khi đã ở vị trí ban đầu, chúng ta muốn công chúa di chuyển vào trung tâm để đối diện với hoàng tử.
– Sử dụng khối trượt ... giây tới x: ... y: ... từ nhóm Chuyển động.
– Để lấy tọa độ trung tâm, bạn chỉ cần kéo nhân vật công chúa đến vị trí mong muốn giữa màn hình, Scratch sẽ tự động điền tọa độ mới vào khối lệnh.

- Đặt câu hỏi: Đây là bước then chốt. Chúng ta sử dụng khối
hỏi ... và chờtừ nhóm Cảm biến (Sensing).- Xóa văn bản mặc định “What’s your name?” và thay bằng câu hỏi của chúng ta: “Chàng có phải là hoàng tử không?”.
- Lưu ý quan trọng: Khi chạy thử, bạn trả lời “Có” nhưng hoàng tử không phản ứng. Điều này xảy ra vì công chúa và hoàng tử là hai thực thể độc lập. Câu trả lời của người dùng hiện chỉ được lưu trong biến
câu trả lờicủa riêng công chúa. Hoàng tử chưa hề nhận được thông tin này!
Kết nối các nhân vật: Sức mạnh của “Tin nhắn” (Messages)
Để hai nhân vật có thể tương tác, chúng ta cần một cơ chế truyền tin. Scratch cung cấp công cụ hoàn hảo cho việc này: Tin nhắn (Messages) trong nhóm Sự kiện (Events).
Bước 1: Công chúa gửi câu hỏi
Sau khi đặt câu hỏi, chúng ta cần công chúa “gửi tin nhắn” thông báo về câu hỏi đó tới hoàng tử.
1. Trong bảng mã của công chúa, sau khối hỏi, thêm khối gửi tin nhắn ... từ nhóm Sự kiện.
2. Nhấp vào menu thả xuống, chọn tin nhắn mới… và đặt tên cho tin nhắn, ví dụ: Câu hỏi.
Bước 2: Hoàng tử nhận và trả lời
Bây giờ, chúng ta phải lập trình cho hoàng tử lắng nghe tin nhắn này.
1. Chuyển sang bảng mã của hoàng tử.
2. Kéo khối khi nhận được tin nhắn ... và chọn tin nhắn Câu hỏi vừa tạo.
3. Gắn vào khối nói ... trong 2 giây từ nhóm Hình dạng. Thay vì nói một câu cố định, chúng ta muốn hoàng tử nói ra đáp án của người dùng.
4. Kéo biến câu trả lời từ nhóm Cảm biến và lồng vào khối nói. Bây giờ, hoàng tử sẽ lặp lại chính xác những gì bạn gõ vào.

Bước 3: Hoàng tử gửi lại đáp án
Sau khi trả lời, hoàng tử cần gửi lại đáp án đó cho công chúa để cô ấy biết và phản ứng.
1. Trong phần mã vừa tạo cho hoàng tử, sau khối nói (câu trả lời), thêm khối gửi tin nhắn ... mới. Đặt tên tin nhắn này là Trả lời.
Bước 4: Công chúa xử lý đáp án và hành động
Đây là phần thú vị nhất, nơi chúng ta sử dụng cấu trúc if-else để tạo ra hai kết cục khác nhau.
1. Quay lại bảng mã của công chúa. Thêm khối khi nhận được tin nhắn ... và chọn tin nhắn Trả lời.
2. Kéo khối nếu ... thì ... nếu không ... từ nhóm Điều khiển (Control).
3. Điều kiện: Chúng ta cần kiểm tra xem câu trả lời có bằng “Có” hay không. Kéo khối ... = ... từ nhóm Toán tử (Operators) (có hình lục giác) vào ô điều kiện của khối nếu.
– Ô bên trái: kéo biến câu trả lời vào.
– Ô bên phải: gõ chữ “Có”.
4. Phần “Thì” (Nếu đúng): Nếu câu trả lời là “Có”, công chúa sẽ vui mừng.
– Thêm lệnh di chuyển (trượt ... giây tới x: ... y: ...) đến gần hoàng tử.
– Thay đổi trang phục (costume) sang biểu cảm hạnh phúc (ví dụ: costume B).
– Nhớ vào mục Trang phục để lật hình (flip) nếu cần, đảm bảo công chúa đang hướng mặt về phía hoàng tử.
5. Phần “Nếu không” (Nếu sai): Nếu câu trả lời là bất cứ thứ gì khác “Có” (ví dụ: “Không”), công chúa sẽ tức giận.
– Thay đổi trang phục sang biểu cảm tức giận.
– Di chuyển (trượt ... giây tới x: ... y: ...) ra khỏi khung hình.

Hoàn thiện và chia sẻ dự án
Sau khi đã lập trình xong tất cả các phần, hãy nhấn lá cờ xanh và thử nghiệm thành quả của mình! Đừng quên những bước cuối cùng quan trọng:
– Đặt tên cho dự án: Ở góc trên bên trái, hãy đặt tên cho project của bạn, ví dụ: “Hoàng tử Ế”.
– Lưu lại: Nhớ lưu dự án để có thể chỉnh sửa hoặc chia sẻ sau này.
– Sáng tạo: Bạn hoàn toàn có thể thay đổi nhân vật, câu hỏi, câu trả lời và hành động để tạo ra câu chuyện của riêng mình.
Kết luận
Qua bài học “Tương tác giữa hai nhân vật” này, chúng ta đã nắm vững ba kỹ thuật then chốt trong Scratch:
1. Quản lý nhiều nhân vật với các bảng mã độc lập.
2. Sử dụng Tin nhắn (Messages) để tạo kênh liên lạc giữa các nhân vật, giúp chúng phối hợp hành động.
3. Kết hợp cấu trúc rẽ nhánh if-else với biến câu trả lời để tạo ra nhiều kịch bản tương tác khác nhau dựa trên lựa chọn của người dùng.
Đây chính là nền tảng để bạn tiến xa hơn trong việc sáng tạo những trò chơi hay câu chuyện phức tạp với 3, 4 nhân vật hoặc nhiều hơn nữa. Hãy thử sức, sáng tạo không ngừng và đừng quên chia sẻ tác phẩm của mình với cộng đồng nhé! Chúc các bạn lập trình vui vẻ.
