📄 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 + -