Thấy đa số box này do anh TD post, em cũng muốn góp 1 bài viết trò chơi tung chó bông bằng VB 6.0.
I .GIỚI THIỆU
Chắc hản ai cũng biết có một trò chơi khá đơn giản đó là có một quả bóng đập lung tung vào tường và người chơi phải dùng một cái bàn đỡ để hứng ko cho bị rơi xuống
Ban hãy thiết kế một cái shape1 ví dú là hình tròn , một cái Timer1 sau đó vào thuộc tính Timer1, chỉnh Interval = 100
rồi bạn gõ
Private Sub Timer1_Timer()
Shape1.left= Shape1.Left +100
End Sub
Sau đó bạn nhấn F5 để chạy bạn sẽ thấy một cái hình tròn chuyển đông sang trái và mất hút luôn phải không ? v.v.
Hoặc bạn biến đổi thêm biến
Dim L, T As Long
Roi Tao Mot
Private Sub Form_Load()
l = Shape1.Left
t = Shape1.Top
End Sub
Sau đó vào Timer1 gõ:
Private Sub Timer1_Timer()
L = L+100
T=T+100
Shape1.move L,T
End Sub
Bạn sẽ thấy một hình tròn bay chéo xuống dưới rồi mất hút luôn phải không , như vậy bạn chỉ cần ràng buộc thêm một chút là sẽ có một trái bóng bay đập lun gtung vào các thanh cửa sổ :
Bạn vẫn dùng đối tượng shape1 và Timer như cũ nhưng toàn bộ đoạn mã là như sau:
‘Phần khai bái biến toàn cục General
Dim l, t As Long
Dim kt1, kt2 As Boolean
‘Phần Thực hiện trước tiên
Private Sub Form_Load()
l = Shape1.Left
t = Shape1.Top
kt1 = True
kt2 = True
End Sub
' Đoạn Mã giành cho bộ định thời Timer1
Private Sub Timer1_Timer()
If l >= Form2.ScaleWidth - Shape1.Width Then kt1 = Not kt1 ‘giới han khi chạm thanh ngang
If l <= 0 Then kt1 = Not kt1
If t >= Form2.ScaleHeight - Shape1.Height Then kt2 = Not kt2 ‘gioi han khi cham thanh đứng
If t <= 0 Then kt2 = Not kt2
If kt1 Then
l = l + 100
Else
l = l - 100
End If
If kt2 Then
t = t + 100
Else
t = t - 100
End If
Shape1.Move l, t ‘Di Chuyển Theo Toạ Độ l , t
End Sub
Như vậy đó bấy giờ bạn chỉ việc thêm một cái bàn đỡ phía dưới " lữa là xong"
và bạn thêm một số chức năng như nế đỡ hụt 10 lần thì game over
đỡ được 10 lần thì tăng level cho người chơi
II .Thiết kế Chương trình
1. Bạn hãy khởi động Visual Basic rồi tạo form như sau
Xem Hình :

Trước hết bạn nhấp chuột vào form chính và chọn thuộc tính tạoi thanh cửa sổ thuộ tính chọn Keypreview là True
Bạn cũng có thể chọn hình nền cho form như trên tôi chọn hình nền winxp châúcẳng hạn
Các đối tượng là
Môt image là hình chú chó tôi đặt tên là : imgcho
Ba hộp textbox : txtlevel , txtdiem , txtloi
Bạn Tạo mộ nút thoát
Một đối tượng label là cái bàn đỡ chú chó bông tôi đặt tên là: lblbando
Cuối cùng là một bộ định thời Timer1
2. Thực hiện
Sau Khi thiết kế bànnhấp chuột phải vào form rồi chọn view code và đây là toàn bộ đoạn mã:
' Khai báo biến toàn cục Genneral
Dim l, t As Long
Dim kt1, kt2 As Boolean
Dim k As Long
Dim sodiem, soloi As Long
Dim level As Byte
‘ Đoạn mã cho sự kiện keydown
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Timer1.Enabled = True
If (KeyCode = vbKeyLeft) And (k > 0) Then
k = k - 200
End If
If (KeyCode = vbKeyRight) And (k < Form1.ScaleWidth - lblBando.Width) Then
k = k + 200
End If
lblBando.Move k
End Sub
‘Ñoán Maõ Xađy Döïng Form_Load()
Private Sub Form_Load()
Form1.KeyPreview = True
Timer1.Enabled = False
Timer1.Interval = 20
Imgcho.Left = Form1.ScaleWidth / 2 - Imgcho.Left
Imgcho.Top = 1
lblBando.Left = Form1.ScaleWidth / 2 - lblBando.Width / 2
lblBando.Top = Form1.ScaleHeight - lblBando.Height
l = Form1.ScaleWidth / 2 - Imgcho.Width / 2
t = 1
kt1 = True
kt2 = True
k = lblBando.Left
level = 1
soloi = 0
sodiem = 0
End Sub
' Đoạn mã thoát khỏi chương trình
Private Sub Image1_Click()
End
End Sub
' Đoạn mã cho bộ định thời Timer1
Private Sub Timer1_Timer()
Dim x As Byte
Timer1.Interval = 20 - level
If (l <= 0) Or (l >= Form1.ScaleWidth - Imgcho.Width) Then
kt1 = Not kt1
End If
If (t <= 0) Or (t >= Form1.ScaleHeight - Imgcho.Height) Then
kt2 = Not kt2
End If
If (Imgcho.Top >= lblBando.Top - Imgcho.Height) Then
If (Imgcho.Left >= lblBando.Left) And (Imgcho.Left <= lblBando.Left + lblBando.Width) Then
kt2 = Not kt2
sodiem = sodiem + 10
Else
soloi = soloi + 1
l = Form1.ScaleWidth / 2 - Imgcho.Width / 2
t = 1
lblBando.Left = Form1.ScaleWidth / 2 - lblBando.Width / 2
lblBando.Top = Form1.ScaleHeight - lblBando.Height
Timer1.Enabled = False
End If
End If
If kt1 Then
l = l + 100
Else
l = l - 100
End If
If kt2 Then
t = t + 100
Else
t = t - 100
End If
Imgcho.Move l, t
If sodiem = 100 * level Then
level = level + 1
x = MsgBox(" Ban Co Muon Sang level" + " " + Str(level) + " " + "Khong ?" + vbNewLine, vbYesNo + vbInformation, "Chu y")
If x = vbNo Then End
End If
If soloi = 10 Then
x = MsgBox("Ban Co Muon choi Lai Khong?", vbYesNo + vbExclamation, "Tro Choi Ket Thuc")
If x = vbYes Then
level = 1
sodiem = 0
soloi = 0
Else
End
End If
End If
txtlevel = level
txtdiem.Text = sodiem
txtloi.Text = soloi
End Sub
Nếu có cao thủ nào bức xúc xin chỉ giáo thêm.
This post has been edited by _pe_thy_: Apr 2 2006, 09:26 AM