经典俄罗斯方块演示: 代码如下: Dim Type_Now As Integer '目前方块的类型 Dim Type_Next As Integer '下个方块的类型 Dim intRotate As Integer '方块旋转的状态 Function Get_X_Value() If GetValue(1, 2) Then 'Get X Value If MaxX - MinX >= 2 Then If MaxX - CurX <= 1 Then Adjust_Left = MaxX - 2 - 1 Else Adjust_Left = CurX - 1 End If Get_X_Value = True Exit Function End If End If Get_X_Value = False End Function Function GetValue(nType As Integer, nWid As Integer) Call GetCoor On Error Resume Next Dim OKCount, EmptyCount As Integer MinX = Xs(1).cX MaxX = Xs(1).cX MinY = Xs(1).cY MaxY = Xs(1).cY For i = 2 To 4 If MinX > Xs(i).cX Then MinX = Xs(i).cX If MaxX < Xs(i).cX Then MaxX = Xs(i).cX If MinY > Xs(i).cY Then MinY = Xs(i).cY If MaxY < Xs(i).cY Then MaxY = Xs(i).cY Next For i = MinX To MaxX For j = MinY To MaxY If Total(i, j) Then GetValue = False Exit Function End If Next Next If nType = 0 Then 'Get Y Value EmptyCount = 0 'Get MinY OKCount = 0 For i = MinY - 1 To MinY - (nWid - 1) Step -1 For j = MinX To MaxX If Total(j, i) = False Then OKCount = OKCount + 1 Next If OKCount >= picPictureNow.Width And OKCount >= picPictureNow.Height Then EmptyCount = EmptyCount + 1 OKCount = 0 Else Exit For End If Next MinY = MinY - EmptyCount If MinY < 1 Then MinY = 1 EmptyCount = 0 'GetMaxY OKCount = 0 For i = MaxY + 1 To MaxY + nWid - 1 For j = MinX To MaxX If Total(j, i) = False Then OKCount = OKCount + 1 Next If OKCount >= picPictureNow.Width And OKCount >= picPictureNow.Height Then EmptyCount = EmptyCount + 1 OKCount = 0 Else Exit For End If Next MaxY = MaxY + EmptyCount If MaxY > 20 Then MaxY = 20 Else 'Get X Value EmptyCount = 0 'Get MinX OKCount = 0 For ...