Ta tìm hiểu kỹ hơn code của
Bạn cần đăng nhập để thấy link
.
Đầu tiên, dòng code 5~12:
'Khi block duoc hien thi, phat sinh di chuyen => tang tuoi tho cho cac o block
For i = 19 To 35
For j = 2 To 18
If Cells(i, j) >= 1 Then
Cells(i, j) = Cells(i, j) + 1
End If
Next j
Next i
Bắt đầu tiến hành xử lý, tuổi thọ của các khối Block được lưu ở B20~R35.
Tiếp theo ở dòng code 65~66:
Cells(Y, X).Interior.ColorIndex = 5
Cells(Y + 17, X) = 1 'Tuoi tho cua block
Những cells được tô màu xanh sẽ điền 1 vào đó.
Ở vòng lặp, dòng code 5~12, giá trị các cells đã được tăng lên 1.
Bằng xử lý như trên, từ lúc các khối block (cells) được tô màu xanh cho tới hiện tại đã trải qua bao nhiêu lần xử lý, ta hoàn toàn có thể hiểu được vì giá trị của cells được tăng lên 1 sau mỗi lần xử lý (vòng lặp).
Khi đã nắm được số lần xử lý (vòng lặp), ta có thể xóa các khối block (cells màu xanh) ở khoảng thời gian tùy ý theo ý muốn.
Tiếp theo hãy nhìn dòng code 14~22:
'So sanh "cnt" voi tuoi tho cua khoi block va xoa bo mau
For i = 19 To 35
For j = 2 To 18
If cnt < Cells(i, j) Then
Cells(i - 17, j).Interior.ColorIndex = xlNone 'Clear color'
Cells(i, j) = 0
End If
Next j
Next i
Ở đây có một biến số là
cnt.
Biến số này đã được khai báo ngay quá trình
Bạn cần đăng nhập để thấy link
.
Biến số
cnt sẽ ghi số block màu đỏ mà rắn đã ăn được.
Chú ý, giá trị khởi tạo của nó không phải là 0, mà bắt đầu được thiết định là 1.
If cnt < Cells(i, j) Then : Hãy thử suy nghĩ điều kiện thực thi này.
Ngay khi game bắt đầu thì
cnt đượcc gán là 1.
Ở dòng code 65~66: Những cells đã được tô màu xanh sẽ nạp vào đó giá trị là 1.
Tương ứng với cells C3, cells lưu trữ thông tin cho nó là cells C20 hay cells(20,3).
Ở vòng lặp dòng code 5~12: cells(20,3) + 1 nên giá trị sẽ là 2.
cnt < Cells(20, 3): Điều kiện được thỏa mãn cho nên Cells(20, 3) được gán là 0.
Ngoài ra ở Cells(20 - 17, 3), tức là cells C3, sẽ được làm trong suốt-không còn màu.
Đây là trạng thái trước khi con rắn ăn được cells màu đỏ.
Vậy, bây giờ hãy thử suy nghĩ trạng thái mà con rắn đã 3 lần ăn được khối màu đỏ.
Độ dài của con rắn sẽ là 4 khối (4 cells) màu xanh.
Chúng ta hãy tạo xử lý đối với cnt khi con rắn đã ăn được khối màu đỏ.
Hãy nhìn dòng code 43~45:
'Khi con ran di chuyen vao khoi block mau do (san moi) thi:
If Cells(Y, X).Interior.ColorIndex = 3 Then
cnt = cnt + 1
Đây là xử lý khi con rắn đã ăn được mồi (khối màu đỏ).
Tọa độ của con rắn sau khi đi ra khối màu đỏ, lúc này cnt tăng lên 1:
cnt =
cnt + 1.
Dòng code 65 thực hiện việc tô đè màu xanh lên cells màu đỏ.
Khi rắn đã 3 lần ăn mồi thì
cnt sẽ được gán là 4.
Điều kiện để khối block biến mất là cnt < Cells(20, 3) : Điều kiện này thỏa mãn là cần thiết. Đây là thời điểm khối block đã có tuổi thọ là 5.
Cho tới khi điều kiện này còn chưa được thỏa mãn thì tuyệt đối khối block này không được biến mất, tiếp tục hiển thị là màu xanh.
Bạn có thể trì hoãn quá trình xóa khối block (xóa dấu vết di chuyển- con rắn đã đi qua) sau 3 vòng lặp.
(
Còn nữa)