|
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! |
|
|