|
不错啊!没有仔细看你的代码. 不过我觉得你的程序旋转那些figure的过程看起来挺别扭.而且应该在旋转之前判断旋转后是否会超出边界,这部分的确有bug. 我以前也用VB写了此游戏.以下是旋转的代码,仅供参考:
Public Sub bRot()
'判断是否可旋转
Dim i, j As Integer
Dim bRotate As Boolean
bRotate = True
If nPart <> 5 Then
If Ccws = True Then '判断是否为逆时针旋转
Call TmpRotate((nTheta + 90) Mod 360) ' 先在一个临时的二维数组里模拟旋转并判断是否有阻止旋转的其它方块或边界
Else
Call TmpRotate((nTheta + 270) Mod 360)
End If
...(其它的就省略了)
'旋转(我的思路是从将当前figure读入另一个数组里面,但是横纵坐标都发生变换,我想这应该是实现旋转的最简单办法)
Public Sub Rotate(ByVal Theta As Integer)
Dim i, j As Integer
If nPart = 10 Then
Call GenUnknownPart
End If
Select Case Theta
Case 0
CurPrt = p(nPart)
Case 90
For i = 0 To 3
For j = 0 To 3
CurPrt.b((3 - j) * 4 + i) = p(nPart).b(i * 4 + j)
Next
Next
Case 180
For i = 0 To 3
For j = 0 To 3
CurPrt.b((3 - i) * 4 + 3 - j) = p(nPart).b(i * 4 + j)
Next
Next
Case 270
For i = 0 To 3
For j = 0 To 3
CurPrt.b(j * 4 + 3 - i) = p(nPart).b(i * 4 + j)
Next
Next
End Select
End Sub
vcsubman 于 2007-10-21 09:38:11.0 编辑
[回复该贴]
|