15. Tạo lời thoại
15.1 Sử dụng lệnh wait (đợi)
Cách dễ nhất để tạo lời thoại giữa 2 nhân vật là sử dụng khối lệnh wait.
Ý tưởng là: cho 2 nhân vật luân phiên “nói” rồi “yên lặng”.
Cụ thể:
- Nhân vật 1 nói một câu, rồi “yên lặng” trong 2 giây
- Nhân vật 2 sẽ “yên lặng” trong 2 giây, rồi nói
- Cứ luân phiên, lặp lại liên tục giữa 2 nhân vật.
Ví dụ: Bạn cùng lập trình theo hướng dẫn sau.
- Xóa nhân vật mèo (Cat)
- Thêm 2 nhân vật (tùy ý), ví dụ Hen và Duck
- Chọn nhân vật Hen (con gà), và lập trình như sau
Mã Scratch | Giải thích |
when green flag clicked | Khi nhấn nút Bắt đầu (Lá cờ xanh) |
set rotation style [left-right] | Bạn gà đang quay mông vào bạn vịt, vậy không lịch sự khi nói chuyện. Thiết lập kiểu xoay [trái - phải], chứ không phải xoay trên - dưới (xoay trên dưới sẽ làm nhân tật bị cắm đầu) |
point in direction -90 | Quay người -90 độ |
say [chào Vịt] for 2 second | Gà chào Vịt trước (cho 2 giây để nói) |
wait 2 seconds | Yên lặng trong 2 giây, để Vịt nói |
say [đi đâu vậy] for 2 second | Hỏi Vịt đi đâu vậy (cho 2 giây để hỏi) |
wait 2 seconds | Yên lặng trong 2 giây, để Vịt nói |
- Chọn nhân vật Duck (con vịt), và lập trình như sau
Mã Scratch | Giải thích |
when green flag clicked | Khi nhấn nút Bắt đầu (Lá cờ xanh) |
wait 2 seconds | Yên lặng trong 2 giây, để Gà nói trước |
say [chào Gà] for 2 second | Vịt chào lại Gà (cho 2 giây để nói) |
wait 2 seconds | Yên lặng trong 2 giây, để Gà nói |
say [đi bắt cua hoàng đế về ăn] for 2 second | Vịt trả lời câu hỏi “đi đâu vậy” của Gà (cho 2 giây để hỏi) |
15.2 Sử dụng Bộ đếm thời gian
Ở phần trước, bạn đã biết cách sử dụng khối lệnh wait để tạo đoạn hội thoại giữa 2 nhân vật.
Phần này, chúng ta sẽ học thêm một cách hay hơn để tạo đoạn hội thoại là sử dụng Bộ đếm thời gian (timer).
Mỗi dự án Scratch đều có một bộ đếm thời gian. Khi chương trình bắt đầu, bộ đếm thời gian sẽ bắt đầu tăng dần.
Bạn hãy đánh dấu chọn vào lệnh timer (nằm trong khối lệnh Sensing), Bộ đếm thời gian sẽ hiển thị trên màn hình kết quả.
Chúng ta sẽ thực hiện từng bước để lập trình cho 2 nhân vật Cat và Gobo nói chuyện với nhau (Bạn có thể thay Cat và Gobo bằng 2 nhân vật tùy ý).
Đoạn mã 1. Lập trình cho nhân vật Cat di chuyển:
Mã Scratch | Giải thích |
when green flag clicked | Bắt đầu thực hiện các lệnh bên dưới khi nhấn vào lá cờ xanh |
set rotation style [left-right] | Thiết lập kiểu xoay là "trái-phải". Điều này giúp nhân vật không bị lộn ngược đầu khi quay hướng |
repeat until <timer > 10> | Lặp lại các hành động bên trong cho đến khi bộ đếm thời gian (timer) lớn hơn 10 giây thì dừng lại |
move (25) steps | Di chuyển nhân vật về phía trước 25 bước |
next costume | Chuyển sang trang phục kế tiếp để tạo hiệu ứng nhân vật đang bước đi |
if on edge, bounce | Nếu nhân vật chạm vào cạnh của sân khấu, nó sẽ tự động bật ngược trở lại |
wait (.2) seconds | Tạm dừng trong 0.2 giây để chuyển động trông mượt mà và không quá nhanh |
stop [all] | Dừng tất cả các kịch bản đang chạy sau khi vòng lặp kết thúc |
Đoạn mã 2. Lập trình cho nhân vật Cat nói chuyện:
(đoạn mã 2 đặt song song với đoạn mã 1)
Mã Scratch | Giải thích |
when green flag clicked | Bắt đầu kịch bản đối thoại khi nhấn lá cờ xanh |
say [Chào bạn cá!] for 2 seconds | Nhân vật Cat nói "Chào bạn cá" trong vòng 2 giây |
wait until <timer > 4> | Tạm dừng kịch bản, đợi cho đến khi Bộ đếm thời gian lớn hơn 4 giây mới tiếp tục |
say [Chơi liền, game gì?] for 2 seconds | Nói câu "Chơi liền, game gì" trong vòng 2 giây |
wait until <timer > 8> | Tiếp tục đợi cho đến khi Bộ đếm thời gian lớn hơn 8 giây |
say [Okie] for 2 seconds | Nói câu cuối cùng "Okie" trong vòng 2 giây |
Đoạn mã 3. Lập trình cho nhân vật Gobo
Chọn nhân vật Gobo, lập trình theo hướng dẫn sau:
Mã Scratch | Giải thích |
when green flag clicked | Bắt đầu kịch bản khi nhấn vào lá cờ xanh |
wait until <timer > 2> | Tạm dừng kịch bản, đợi cho đến khi Bộ đếm thời gian (timer) lớn hơn 2 giây mới tiếp tục |
say [Chào mèo, chơi game không?] for 2 seconds | Nhân vật nói câu "Chào mèo, chơi game không?" trong vòng 2 giây |
wait until <timer > 6> | Tiếp tục đợi cho đến khi Bộ đếm thời gian lớn hơn 6 giây mới thực hiện lệnh tiếp theo |
say [Roblox] for 2 seconds | Nhân vật nói từ "Roblox" trong vòng 2 giây để kết thúc đoạn thoại |
Dialog
Use simple wait blocks
The simplest way to make a dialog between two sprites, is to use wait blocks. Here we have Scratchy the cat and Gobo the blowfish talk to each other.
Each sprite needs to respect the other sprite’s timing.
-----