SỐ 141
KINH NGHIỆM LẬP TRÌNH

Tự tạo trò chơi học số tiếng Anh
NGÔ BẢO KHOA (Tân Bình, TP.HCM)

Có rất nhiều chương trình học ngoại ngữ, nhưng thật thú vị nếu ta học ngoại ngữ từ một chương trình “made in... tự tui”. Bạn hãy cùng tôi “chíp” một trò chơi giúp học số tiếng Anh bằng VB6. Khi hoàn tất, ta có thêm kinh nghiệm lập trình, lại thu được một công cụ để vừa chơi vừa học tiếng Anh. Thế là “nhất cử... tam tiện”, phải không bạn?

Luật chơi

Trò chơi giúp rèn luyện khả năng nghe hiểu nhanh các số tiếng Anh. Trong khoảng thời gian nhất định (5 phút), máy sẽ lần lượt đọc các số bất kỳ trong khoảng từ 1 đến 9999 và người chơi phải nhập vào số mà mình nghe được. Mỗi số nhập đúng, người chơi được thêm một điểm. Người chơi bị trừ một điểm nếu nhập sai hoặc bỏ qua. Số điểm cuối cùng sẽ hiện ra khi hết giờ hoặc khi ngưng cuộc chơi.

Thiết kế giao diện

Bạn tạo một dự án mới dạng Standard EXE rồi thêm vào biểu mẫu các điều khiển, đặt tên và bố trí chúng như hình 1. Đối với Timer1, bạn quy định thuộc tính [Enabled: False, Interval: 1000].


Hình 1

Bạn chọn Project > Components để mở hộp thoại Components, đánh dấu kiểm ở dòng Microsoft Voice Text và ấn OK. Nhờ vậy, ta có thêm biểu tượng điều khiển TextToSpeech trong ToolBox. Sau đó, bạn thêm điều khiển này vào biểu mẫu, đặt tên là TTS.

Phần mã chương trình

1. Thủ tục cmdStart_Click

Trò chơi bắt đầu khi người chơi ấn nút Start. Trong thủ tục cmdStart_Click (đoạn mã 1), bạn cần:

- Thay đổi thuộc tính các đối tượng phù hợp với trạng thái đã bắt đầu trò chơi, thiết lập các giá trị ban đầu cho trò chơi.

- Tạo ra một số ngẫu nhiên (biến SoCanDoan) và phát âm số này để người chơi nghe.

- Đổi thuộc tính Enabled của Timer1 thành True để bắt đầu tính thời gian.

Đoạn mã 1
Private Sub cmdStart_Click()
...
Randomize
SoCanDoan = Int(Rnd * 9999) + 1
TTS.Speak SoCanDoan
ThoiGian = ThoiGianToiDa
Timer1.Enabled = True
txtNhapSo.SetFocus
End Sub

Phương thức Speak của điều khiển TextToSpeech nhận một chuỗi và đọc chuỗi này bằng tiếng Anh. Trong đoạn mã 1, tuy SoCanDoan là biến Integer nhưng điều khiển TextToSpeech vẫn hiểu được.

2. Thủ tục Timer1_Timer

Trong thủ tục Timer1_Timer, biến ThoiGian (thời gian người chơi còn lại) sẽ được giảm từng giây (thuộc tính Interval của Timer1 là 1000). Khi biến ấy giảm đến 0 thì gọi thủ tục KetThucTroChoi.

Đoạn mã 2
Private Sub Timer1_Timer()
ThoiGian = ThoiGian - 1
lblThoiGian.Caption = ThoiGian
If ThoiGian = 0 Then KetThucTroChoi
End Sub

3. Thủ tục KetThucTroChoi

Thủ tục KetThucTroChoi (đoạn mã 3) có nhiệm vụ:
- Thay đổi thuộc tính các đối tượng phù hợp khi không chơi.
- Ngưng đếm thời gian.
- Thông báo số điểm (bằng số từ đoán đúng trừ đi số từ đoán sai).

Đoạn mã 3
Private Sub KetThucTroChoi()
...
Timer1.Enabled = False
txtNhapSo.Enabled = False
lblSoDiem.Caption = TuDung - TuSai
End Sub

4. Thủ tục XuLyDoanSo

Thủ tục XuLyDoanSo (đoạn mã 4) được gọi khi người chơi đoán số (ấn nút Guess hoặc ấn Enter sau khi nhập số). Thủ tục này có nhiệm vụ:

- Đọc giá trị người chơi nhập trong ô txtNhapSo và so sánh với SoCanDoan để xem người chơi đoán đúng hay sai.

- Sau đó, tạo ra một số ngẫu nhiên mới và đọc lên cho người chơi nghe.

Đoạn mã 4
Private Sub XuLyDoanSo()
Dim s As String
s = Str(SoCanDoan)
If Right(s, Len(s) - 1) = txtNhapSo.Text Then
TuDung = TuDung + 1
lblTuDung.Caption = TuDung
Else
TuSai = TuSai + 1
lblTuSai.Caption = TuSai
End If
Randomize
SoCanDoan = Int(Rnd * 9999) + 1
TTS.Speak SoCanDoan
txtNhapSo.Text = ""
txtNhapSo.SetFocus
End Sub

Nếu ta đổi txtNhapSo.Text sang kiểu Integer để so sánh với SoCanDoan thì bắt buộc txtNhapSo phải chứa các số. Nhưng lỡ người chơi nhập chữ cái hoặc để trống ô txtNhapSo, chương trình sẽ gặp lỗi. Tránh trường hợp này, chúng ta nên đổi SoCanDoan sang kiểu String để so sánh. Dòng lệnh s = Str(SoCanDoan) nhằm gán cho biến s giá trị của SoCanDoan dưới dạng String. Bạn lưu ý, ký tự đầu tiên của biến s là dấu đại số của số (+ /-) nên khi so sánh cần loại bỏ ký tự này.

Bạn hãy bổ sung những ý tưởng sáng tạo của mình để phát triển trò chơi. Với điều khiển TextToSpeech, bạn "tha hồ" tạo ra những ứng dụng khác trợ giúp việc học tiếng Anh. Bạn đọc e-CHÍP đang chờ bạn giới thiệu những ứng dụng mới đó. Chúc bạn thành công!

[Đầu trang]
Trang chủ
Nội lực "Peter Pan"
Cầu nối Intel Việt Nam
Chuyện trong tuần
Cõi người ta
Bình luận thị trường
Cõi Mô-bai
Chuyên đề
Bổ ngửa
Túi càn khôn IT
Hồ lô biến
Cảm về Game
Nhật ký e-CHÍP
Bản quyền Công ty Phần mềm & Truyền thông VASC
 99 Triệu Việt Vương HN; Tel: (04) 9782235 • email: echip@vasc.com.vn
Mọi chi tiết về kinh doanh và quảng cáo xin liên hệ Phòng Quảng cáo. Tel: (04) 9782077 kd@vasc.com.vn