Ở bài học trước, bạn đã biết 2 cách để lập trình cho 2 nhân vật nói chuyện với nhau: cách 1 là dùng lệnh wait, cách 2 là dùng Bộ đếm thời gian (timer).
Trong phần này, chúng ta sẽ học thêm một số kỹ thuật khác để lập trình cho 2 nhân vật nói chuyện với nhau.
16.1 Sử dụng danh sách
Sử dụng danh sách (list) để lưu các lời thoại, rồi cho các nhân vật nói các lời thoại trong danh sách.
Ưu điểm của phương pháp này là bạn có thể thay đổi nội dung toàn bộ cuộc hội thoại một cách nhanh chóng, bằng cách thay đổi các phần tử trong danh sách mà không cần sửa lại các khối lệnh lập trình.
Để bắt đầu, bạn cần chuẩn bị hai thành phần sau:
[1] Một danh sách, đặt tên là LoiThoai để chứa các câu nói
[2] Một biến, đặt tên là i để làm "chỉ số" giúp máy tính biết đang đọc đến dòng thứ mấy
Cách thức hoạt động:
Chúng ta sẽ cho biến i chạy từ 1 và tăng dần. Quá trình này lặp lại cho đến khi i lớn hơn độ dài của danh sách (khi không còn câu thoại nào để đọc nữa).
Kỹ thuật phân chia lời thoại cho hai nhân vật:
Để hai nhân vật (ví dụ: Mèo và Cá Gobo) tự động biết khi nào đến lượt mình nói mà không cần dùng lệnh wait thủ công, chúng ta sử dụng phép toán mod (phép chia lấy dư) cho 2.
- Nếu i mod 2 = 1: Có nghĩa là i là số lẻ (1, 3, 5...). Đây là lượt nói của nhân vật thứ nhất
- Nếu i mod 2 = 0: Có nghĩa là i là số chẵn (2, 4, 6...). Đây là lượt nói của nhân vật thứ hai
16.2 Thực hành
Giả sử bạn có kịch bản đối thoại như sau:
1. Mèo: Cá ơi, bạn có biết tại sao nước biển lại mặn không?
2. Cá: Vì loài cá chúng tôi hay khóc mỗi khi bị mẹ mắng đó!
3. Mèo: Thật à? Tôi tưởng vì người ta làm rơi lọ muối xuống biển chứ?
4. Cá: Bạn xem phim hoạt hình ít thôi Mèo!
5. Mèo: Vậy bạn có biết tại sao tôi không bao giờ xuống nước chơi với bạn không?
6. Cá: Vì bạn sợ nước chứ gì?
7. Mèo: Không, vì tôi sợ ướt chứ không sợ nước!
8. Cá: Ôi trời, suýt chút nữa là tôi sặc nước vì lý do của bạn đấy!
9. Mèo: Thôi mà, hay là tí nữa tôi cho cậu ít bánh quy nha?
10. Cá: Đồng ý! Nhưng đừng câu tôi là được!
Bước 1: Chuẩn bị danh sách và biến đếm
- Vào mục Variables, chọn Make a List để tạo một danh sách, đặt tên là LoiThoai
- Nhấn dấu + ở góc danh sách LoiThoai trên sân khấu để nhập lần lượt 10 câu thoại trên vào
- Tạo một biến, đặt tên là i (dùng cho tất cả nhân vật)
Bước 2: Lập trình cho nhân vật Mèo
Bước 3: Lập trình cho nhân vật Cá Gobo
Dưới đây là các lệnh lập trình cho Cá:
Bạn chạy thử xem Mèo và Cá đã đối thoại (trong im lặng) với nhau được chưa?
Bước 4: Lập trình cho nhân vật Mèo đi lại khi nói chuyện
16. Use a list for dialog
If you have a lot of dialog, it’s best to use a list.
It’s easy to change the dialog. Just change the list items.
To start with, you need to create
- a list dialog to contain the dialog items
- a variable i to be used as list index
We iterate until the list index i is larger than the list length.
The mod operator returns the rest of the division by 2.
- i mod 2 = 1 means i is odd
- i mod 2 = 0 means i is even