Trò chơi “Zic – Zac”

Một phần của tài liệu _p_d_ng_l_thuy_t_game_x_y_d_ng_m_t_s_tr_ch_i (Trang 38 - 44)

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

Một phần của tài liệu _p_d_ng_l_thuy_t_game_x_y_d_ng_m_t_s_tr_ch_i (Trang 38 - 44)

Tải bản đầy đủ (DOC)

(54 trang)
w