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 37 - 42)

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

i = 2 'Ban đầu khởi tạo chạy xuống kq = 0

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

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 (adsbygoogle = window.adsbygoogle || []).push({});

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

End Sub

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 37 - 42)