?? terminus_check.cls
字號:
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "terminus_check"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
'可以用downmove代替
'Public module_type As Integer
'Public module_top_x As Integer
'Public module_top_y As Integer
'Public module_color_type As Integer
'未達到終點向downmove傳遞變量
'Public terminus_top_x As Integer
'Public terminus_top_y As Integer
'Public terminus_type As Integer
'Public terminus_color_type As Integer
'一達到終點刷新布局記錄內的記錄值
Private line1(0 To 3) As Integer
'line中記錄要消的行數,不要用line(3)如果這樣的話,產生編譯錯誤,因為有一個函數line_full_check產生歧義,這可能是VB系統有問題
Public line_number As Integer '要消的總共行數
'判斷方塊是否到達終點,以及結束是否
Public Function terminus_check(x As Integer, y As Integer, type1 As Integer, record As records) As Integer
Select Case type1
Case 1:
If record.get_records_value(x + 3, y) = 0 And record.get_records_value(x + 2, y + 1) = 0 And x + 3 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
Case 2:
If record.get_records_value(x + 1, y) = 0 And record.get_records_value(x + 1, y + 2) = 0 And record.get_records_value(x + 2, y + 1) = 0 And x + 2 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
Case 3:
If record.get_records_value(x + 3, y) = 0 And record.get_records_value(x + 2, y - 1) = 0 And x + 3 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
Case 4:
If record.get_records_value(x + 2, y) = 0 And record.get_records_value(x + 2, y + 1) = 0 And record.get_records_value(x + 2, y - 1) = 0 And x + 2 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
Case 5:
If record.get_records_value(x + 3, y - 1) = 0 And record.get_records_value(x + 2, y) = 0 And x + 3 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
Case 6:
If record.get_records_value(x + 1, y) = 0 And record.get_records_value(x + 2, y + 2) = 0 And record.get_records_value(x + 2, y + 1) = 0 And x + 2 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
Case 7:
If record.get_records_value(x + 2, y) = 0 And record.get_records_value(x + 3, y + 1) = 0 And x + 3 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
Case 8:
If record.get_records_value(x + 2, y) = 0 And record.get_records_value(x + 1, y + 1) = 0 And record.get_records_value(x + 2, y) = 0 And x + 2 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
Case 9:
If record.get_records_value(x + 3, y) = 0 And record.get_records_value(x + 1, y + 1) = 0 And x + 3 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
Case 10:
If record.get_records_value(x + 1, y) = 0 And record.get_records_value(x + 1, y + 1) = 0 And record.get_records_value(x + 2, y + 2) = 0 And x + 2 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
Case 11:
If record.get_records_value(x + 3, y) = 0 And record.get_records_value(x + 3, y - 1) = 0 And x + 3 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
Case 12:
If record.get_records_value(x + 2, y) = 0 And record.get_records_value(x + 2, y + 2) = 0 And record.get_records_value(x + 2, y + 1) = 0 And x + 2 <= record.height_number - 1 And x + 2 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
Case 13:
If record.get_records_value(x + 3, y + 1) = 0 And record.get_records_value(x + 1, y) = 0 And x + 3 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
Case 14:
If record.get_records_value(x + 2, y) = 0 And record.get_records_value(x + 2, y - 1) = 0 And record.get_records_value(x + 2, y - 2) = 0 And x + 2 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
Case 15:
If record.get_records_value(x + 3, y) = 0 And record.get_records_value(x + 3, y + 1) = 0 And x + 3 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
Case 16:
If record.get_records_value(x + 2, y) = 0 And record.get_records_value(x + 1, y + 2) = 0 And record.get_records_value(x + 1, y + 1) = 0 And x + 2 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
Case 17:
If record.get_records_value(x + 2, y) = 0 And record.get_records_value(x + 2, y + 1) = 0 And x + 2 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
Case 18:
If record.get_records_value(x + 4, y) = 0 And x + 4 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
Case 19:
If record.get_records_value(x + 1, y) = 0 And record.get_records_value(x + 1, y + 1) = 0 And record.get_records_value(x + 1, y + 2) = 0 And record.get_records_value(x + 1, y + 3) = 0 And x + 1 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
Case 20:
If record.get_records_value(x + 1, y) = 0 And x + 1 <= record.height_number - 1 Then
terminus_check = 0
Else
terminus_check = 1
End If
End Select
End Function
'判斷游戲是否結束
Public Function end_check(x As Integer) As Integer
If x < 0 Then
end_check = 1
Else
end_check = 0
End If
End Function
'這兩個程序實際上可以用downmove代替
'方塊未到達終點處理即向downmove傳遞變量
'Public Sub no_terminus_communicate(x As Integer, y As Integer, type1 As Integer, color_type As Integer)
'module_top_x = x + 1
'module_top_y = y
'module_type = type1
'module_color_type = color_type
'End Sub
'方塊一到達終點處理即刷新布局記錄內的記錄值
'Public Sub yes_terminus_refresh__record(x As Integer, y As Integer, type1 As Integer, color_type As Integer)
'terminus_top_x = x
'terminus_top_y = y
'terminus_type = type1
'terminus_color_type = color_type
'End Sub
'判斷某一行是否整行記錄都為1,即可消行
Private Function line_full_check(x As Integer, record As records) 'x代表行數
Dim i As Integer, j As Integer
For i = 0 To record.width_number - 1
j = record.get_records_value(x, i)
If j = 0 Then
line_full_check = 0
Exit For
End If
Next i
If i = 10 Then
line_full_check = 1
End If
End Function
Private Sub public_apply(x As Integer, module_line_number As Integer, record As records)
Dim i As Integer
line_number = 0
For i = x To x + module_line_number - 1
If line_full_check(i, record) = 1 Then
line1(line_number) = i
line_number = line_number + 1
End If
Next i
End Sub
'判斷消行的行,將它放入數組line1(3)中,并返回總共消去的行數line_number
Public Sub line_clear_numberline(x As Integer, type1 As Integer, record As records)
Dim i As Integer
Select Case type1
Case 1, 3, 5, 7, 9, 11, 13, 15
public_apply x, 3, record
Case 2, 4, 6, 8, 10, 12, 14, 16, 17
public_apply x, 2, record
Case 19, 20
public_apply x, 1, record
Case 18
public_apply x, 4, record
End Select
End Sub
'獲得要消的行號碼
Public Function get_clear_line_number(i As Integer)
get_clear_line_number = line1(i)
End Function
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -