1. Ý thưởng thuật toán:
- Một hình được vẽ ra hình dung như 1 con rắn đang đi săn mồi, 1 hình khác làm mồi cho con rắn đó. Cái mồi sẽ xuất hiện ngẫu nhiên ở 1 vị trí nào đó trên Form. Người chơi sẽ điều khiển con rắn để bắt con mồi. Nếu con rắn chạm vào con mồi thì người con rắn sẽ dài ra. Mỗi lần ăn được 1 mồi tương ứng với 1 điểm. Khi đã ăn được một mồi thì mồi sẽ xuất hiện ngẫu nhiên tại 1 trí khác. Con rắn mỗi lúc một dài ra. Nếu người chơi điều khiển con rắn không khéo léo đi ra khỏi không gian trò chơi thì trò chơi kết thúc.
- Để mỗi lần con rắn ăn được mồi, con rắn sẽ dài thêm ra. Do đó, sẽ xây dựng con rắn là một mảng các Shape, hình vuông. Ban đầu mảng này có 1 phần tử, cứ mỗi lần săn được mồi thì số phần tử của mảng này tăng lên.
2. Giao diện chương trình:
Giao diện gồm có:
- 1 bmButton: cmdBatdau: Bắt đầu trò chơi, khi trò chơi bắt đầu thì Nút này phải ẩn đi
- 1 Shape làm con mồi
- 1 mảng các Shape làm con rắn.
- 1 Image (ẩn) để cho con mồi chuyển động ngẫu nhiên cùng Image này: img - 1 Timer: để điều khiển trò chơi.
3. Code chương trình: -Các biến của chương trình: Dim i As Integer
Dim m As Integer Dim l As Integer Dim A(100) As Integer Dim b(100) As Integer Dim kq As Integer Dim t As Integer
- Khi bắt đầu trò chơi mới: Private Sub cmdBatdau_Click() cmdBatdau.Visible = False Timer1.Enabled = True Img.Visible = False End Sub
- Thủ tục dùng các phím mũi tên điều khiển:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyLeft And (i = 2 Or i = 8) Then i = 4 ' Key Left If KeyCode = vbKeyDown And (i = 4 Or i = 6) Then i = 2 ' Key Down If KeyCode = vbKeyUp And (i = 4 Or i = 6) Then i = 8 ' Key Up If KeyCode = vbKeyRight And (i = 2 Or i = 8) Then i = 6 ' Key Right End Sub
- Sự kiện Form_Load: Private Sub Form_Load() Me.Top = 0 Me.Left = 0 Var = 0 t = 49 l = 51 Shape2.Visible = True
kq = 0 lblTT.Caption = CStr(Val(kq)) Timer1.Enabled = False Img.Visible = False End Sub - Sự kiện Timer1_Timer: Private Sub Timer1_Timer() On Error Resume Next For Var = 0 To kq A(Var) = Shape1(Var).Top b(Var) = Shape1(Var).Left Next For Var = 1 To kq Shape1(Var).Top = A(Var - 1) Shape1(Var).Left = b(Var - 1) Next Var = 0 lblTT.Caption = CStr(Val(kq))
If Shape1(0).Top <= 30 Or Shape1(0).Top >= 7420 Or Shape1(0).Left <= 40 Or Shape1(0).Left >= 7700 Then
MsgBox "Bạn đã thua ! Trò chơi kết thúc " Unload Me
End If
If Img.Top <= 0 Or Img.Top >= 7420 Then t = -t If Img.Left <= 0 Or Img.Left >= 7700 Then l = -l Img.Top = Img.Top + t * 2
Img.Left = Img.Left + l * 2
If (Shape1(0).Left >= Shape2.Left - 420 And Shape1(0).Left <= Shape2.Left + 420) And (Shape1(0).Top >= Shape2.Top - 420 And Shape1(0).Top <= Shape2.Top + 420) Then kq = kq + 1
Load Shape1(kq)
Shape1(kq).Visible = True m = kq - 1
If i = 2 Then ' Neu chay xuong
Shape1(kq).Top = Shape1(m).Top - 420 ' 420: do rong cua cac Shape Shape1(kq).Left = Shape1(m).Left
End If
If i = 4 Then ' Neu chay trai Shape1(kq).Top = Shape1(m).Top Shape1(kq).Left = Shape1(m).Left + 420 End If
If i = 6 Then ' Neu chay phai Shape1(kq).Top = Shape1(m).Top Shape1(kq).Left = Shape1(m).Left - 420 End If
If i = 8 Then ' Neu chay len
Shape1(kq).Top = Shape1(m).Top + 420 Shape1(kq).Left = Shape1(m).Left End If Shape2.Left = Img.Left Shape2.Top = Img.Top End If
If i = 2 Then ' Neu chay xuong
Shape1(0).Top = Shape1(0).Top + Shape1(0).Width End If
If i = 6 Then ' Neu chay phai
Shape1(0).Left = Shape1(0).Left + Shape1(0).Width End If
If i = 4 Then ' Neu chay trai
Shape1(0).Left = Shape1(0).Left - Shape1(0).Width End If
If i = 8 Then ' Neu chay len
Shape1(0).Top = Shape1(0).Top - Shape1(0).Width End If