?? 3dmaze.frm
字號(hào):
X0 = Rectangle(0, 0).X
Y0 = Rectangle(0, 0).Y
X1 = Rectangle(0, 1).X
Y1 = Rectangle(0, 1).Y
X2 = Rectangle(0, 2).X
Y2 = Rectangle(0, 2).Y
X3 = Rectangle(0, 3).X
Y3 = Rectangle(0, 3).Y
Call DisplayQuadrilateral(XMax, XOffset, YMax, X0, Y0, 0#, X1, Y1, 0#, X2, Y2, 0#, X3, Y3, 0#, PixelsPerX, PixelsPerZ, CosTilt, SinTilt, RelDistOfUserFromScreen, FloorColor)
X0 = Rectangle(1, 0).X
Y0 = Rectangle(1, 0).Y
X1 = Rectangle(1, 1).X
Y1 = Rectangle(1, 1).Y
X2 = Rectangle(1, 2).X
Y2 = Rectangle(1, 2).Y
X3 = Rectangle(1, 3).X
Y3 = Rectangle(1, 3).Y
Call DisplayQuadrilateral(XMax, XOffset, YMax, X0, Y0, 0#, X1, Y1, 0#, X2, Y2, 0#, X3, Y3, 0#, PixelsPerX, PixelsPerZ, CosTilt, SinTilt, RelDistOfUserFromScreen, FloorColor)
End If
X0 = Rectangle(2, 0).X
Y0 = Rectangle(2, 0).Y
X1 = Rectangle(2, 1).X
Y1 = Rectangle(2, 1).Y
X2 = Rectangle(2, 2).X
Y2 = Rectangle(2, 2).Y
X3 = Rectangle(2, 3).X
Y3 = Rectangle(2, 3).Y
Call DisplayQuadrilateral(XMax, XOffset, YMax, X0, Y0, 0#, X1, Y1, 0#, X2, Y2, 0#, X3, Y3, 0#, PixelsPerX, PixelsPerZ, CosTilt, SinTilt, RelDistOfUserFromScreen, FloorColor)
If Y < MaxY - 4 Then
X0 = Rectangle(3, 0).X
Y0 = Rectangle(3, 0).Y
X1 = Rectangle(3, 1).X
Y1 = Rectangle(3, 1).Y
X2 = Rectangle(3, 2).X
Y2 = Rectangle(3, 2).Y
X3 = Rectangle(3, 3).X
Y3 = Rectangle(3, 3).Y
Call DisplayQuadrilateral(XMax, XOffset, YMax, X0, Y0, 0#, X1, Y1, 0#, X2, Y2, 0#, X3, Y3, 0#, PixelsPerX, PixelsPerZ, CosTilt, SinTilt, RelDistOfUserFromScreen, FloorColor)
End If
For ObjectNum = 0 To 3
For VertexNum = 0 To 3
Rectangle(ObjectNum, VertexNum).Y = Rectangle(ObjectNum, VertexNum).Y + Sqrt3
Next VertexNum
Next ObjectNum
Y = Y + 4
Else
Rectangle(0, 0).X = BaseTriangle(1, 0).X
Rectangle(0, 0).Y = BaseTriangle(1, 0).Y
Rectangle(0, 1).X = BaseTriangle(1, 1).X
Rectangle(0, 1).Y = BaseTriangle(1, 1).Y
Rectangle(0, 2).X = BaseTriangle(2, 1).X
Rectangle(0, 2).Y = BaseTriangle(2, 1).Y
Rectangle(0, 3).X = BaseTriangle(2, 2).X
Rectangle(0, 3).Y = BaseTriangle(2, 2).Y
Rectangle(1, 0).X = BaseTriangle(0, 1).X
Rectangle(1, 0).Y = BaseTriangle(0, 1).Y
Rectangle(1, 1).X = BaseTriangle(1, 0).X
Rectangle(1, 1).Y = BaseTriangle(1, 0).Y
Rectangle(1, 2).X = BaseTriangle(2, 2).X
Rectangle(1, 2).Y = BaseTriangle(2, 2).Y
Rectangle(1, 3).X = BaseTriangle(3, 1).X
Rectangle(1, 3).Y = BaseTriangle(3, 1).Y
Rectangle(2, 0).X = BaseTriangle(0, 0).X
Rectangle(2, 0).Y = BaseTriangle(0, 0).Y
Rectangle(2, 1).X = BaseTriangle(0, 1).X
Rectangle(2, 1).Y = BaseTriangle(0, 1).Y
Rectangle(2, 2).X = BaseTriangle(3, 1).X
Rectangle(2, 2).Y = BaseTriangle(3, 1).Y
Rectangle(2, 3).X = BaseTriangle(3, 2).X
Rectangle(2, 3).Y = BaseTriangle(3, 2).Y
X = 0
State = 3
End If
If UsePalette Then
NumRealized = SelectPalette(frm3DMaze.hDC, OldPaletteHandle, 0)
End If
DoEvents
If State < 5 Then
Timer1.Enabled = True
End If
Case 3
If UsePalette Then
OldPaletteHandle = SelectPalette(frm3DMaze.hDC, PaletteHandle, 0)
NumRealized = RealizePalette(frm3DMaze.hDC)
End If
If X <= MaxX Then
For ObjectNum = 0 To 2
X0 = Rectangle(ObjectNum, 0).X
Y0 = Rectangle(ObjectNum, 0).Y
X1 = Rectangle(ObjectNum, 1).X
Y1 = Rectangle(ObjectNum, 1).Y
X2 = Rectangle(ObjectNum, 2).X
Y2 = Rectangle(ObjectNum, 2).Y
X3 = Rectangle(ObjectNum, 3).X
Y3 = Rectangle(ObjectNum, 3).Y
Call DisplayQuadrilateral(XMax, XOffset, YMax, X0, Y0, 0#, X1, Y1, 0#, X2, Y2, 0#, X3, Y3, 0#, PixelsPerX, PixelsPerZ, CosTilt, SinTilt, RelDistOfUserFromScreen, FloorColor)
X0 = Rectangle(ObjectNum, 0).X
Y0 = YMax - Rectangle(ObjectNum, 0).Y
X1 = Rectangle(ObjectNum, 1).X
Y1 = YMax - Rectangle(ObjectNum, 1).Y
X2 = Rectangle(ObjectNum, 2).X
Y2 = YMax - Rectangle(ObjectNum, 2).Y
X3 = Rectangle(ObjectNum, 3).X
Y3 = YMax - Rectangle(ObjectNum, 3).Y
Call DisplayQuadrilateral(XMax, XOffset, YMax, X0, Y0, 0#, X1, Y1, 0#, X2, Y2, 0#, X3, Y3, 0#, PixelsPerX, PixelsPerZ, CosTilt, SinTilt, RelDistOfUserFromScreen, FloorColor)
For VertexNum = 0 To 3
Rectangle(ObjectNum, VertexNum).X = Rectangle(ObjectNum, VertexNum).X + 3#
Next VertexNum
Next ObjectNum
X = X + 8
Else
YMod4 = 0
YOffset = 0#
Y = 0
State = 4
End If
If UsePalette Then
NumRealized = SelectPalette(frm3DMaze.hDC, OldPaletteHandle, 0)
End If
DoEvents
If State < 5 Then
Timer1.Enabled = True
End If
Case 4
If UsePalette Then
OldPaletteHandle = SelectPalette(frm3DMaze.hDC, PaletteHandle, 0)
NumRealized = RealizePalette(frm3DMaze.hDC)
End If
If Y <= MaxY Then
Select Case YMod4
Case 0
XMod8 = 0
For ObjectNum = 1 To 2
For VertexNum = 0 To 2
Triangle(ObjectNum, VertexNum).X = BaseTriangle(ObjectNum, VertexNum).X
Triangle(ObjectNum, VertexNum).Y = BaseTriangle(ObjectNum, VertexNum).Y + YOffset
Next VertexNum
Next ObjectNum
For VertexNum = 0 To 3
Rectangle(2, VertexNum).X = BaseRectangle(2, VertexNum).X
Rectangle(2, VertexNum).Y = BaseRectangle(2, VertexNum).Y + YOffset
Next VertexNum
For X = 0 To MaxX
Select Case XMod8
Case 2
SingleTriangle(0).X = Triangle(1, 0).X
SingleTriangle(0).Y = Triangle(1, 0).Y
SingleTriangle(1).X = Triangle(1, 1).X
SingleTriangle(1).Y = Triangle(1, 1).Y
SingleTriangle(2).X = Triangle(1, 2).X
SingleTriangle(2).Y = Triangle(1, 2).Y
Call OutputTriangle(XMax, XOffset, YMax, SingleTriangle(), PixelsPerX, PixelsPerZ, CosTilt, SinTilt, RelDistOfUserFromScreen, True, TriangleSSWNNEColor)
Case 4
SingleTriangle(0).X = Triangle(2, 0).X
SingleTriangle(0).Y = Triangle(2, 0).Y
SingleTriangle(1).X = Triangle(2, 1).X
SingleTriangle(1).Y = Triangle(2, 1).Y
SingleTriangle(2).X = Triangle(2, 2).X
SingleTriangle(2).Y = Triangle(2, 2).Y
Call OutputTriangle(XMax, XOffset, YMax, SingleTriangle(), PixelsPerX, PixelsPerZ, CosTilt, SinTilt, RelDistOfUserFromScreen, True, TriangleSSENNWColor)
Case Else
End Select
XMod8 = XMod8 + 1
If XMod8 >= 8 Then
XMod8 = 0
For ObjectNum = 1 To 2
For VertexNum = 0 To 2
Triangle(ObjectNum, VertexNum).X = Triangle(ObjectNum, VertexNum).X + 3#
Next VertexNum
Next ObjectNum
For VertexNum = 0 To 3
Rectangle(2, VertexNum).X = Rectangle(2, VertexNum).X + 3#
Next VertexNum
End If
Next X
XMod8 = 0
For ObjectNum = 1 To 2
For VertexNum = 0 To 2
Triangle(ObjectNum, VertexNum).X = BaseTriangle(ObjectNum, VertexNum).X
Triangle(ObjectNum, VertexNum).Y = BaseTriangle(ObjectNum, VertexNum).Y + YOffset
Next VertexNum
Next ObjectNum
For VertexNum = 0 To 3
Rectangle(2, VertexNum).X = BaseRectangle(2, VertexNum).X
Rectangle(2, VertexNum).Y = BaseRectangle(2, VertexNum).Y + YOffset
Next VertexNum
For X = 0 To MaxX
Select Case XMod8
Case 2
SingleTriangle(0).X = Triangle(1, 0).X
SingleTriangle(0).Y = Triangle(1, 0).Y
SingleTriangle(1).X = Triangle(1, 1).X
SingleTriangle(1).Y = Triangle(1, 1).Y
SingleTriangle(2).X = Triangle(1, 2).X
SingleTriangle(2).Y = Triangle(1, 2).Y
Call OutputTriangle(XMax, XOffset, YMax, SingleTriangle(), PixelsPerX, PixelsPerZ, CosTilt, SinTilt, RelDistOfUserFromScreen, False, TriangleSENWColor)
Case 3
If ComputerPage(Y, X) = 0 Then
SingleRectangle(0).X = Rectangle(2, 0).X
SingleRectangle(0).Y = Rectangle(2, 0).Y
SingleRectangle(1).X = Rectangle(2, 1).X
SingleRectangle(1).Y = Rectangle(2, 1).Y
SingleRectangle(2).X = Rectangle(2, 2).X
SingleRectangle(2).Y = Rectangle(2, 2).Y
SingleRectangle(3).X = Rectangle(2, 3).X
SingleRectangle(3).Y = Rectangle(2, 3).Y
Call OutputRectangle(XMax, XOffset, YMax, SingleRectangle(), PixelsPerX, PixelsPerZ, CosTilt, SinTilt, RelDistOfUserFromScreen, RectangleWEColor)
End If
Case 4
SingleTriangle(0).X = Triangle(2, 0).X
SingleTriangle(0).Y = Triangle(2, 0).Y
SingleTriangle(1).X = Triangle(2, 1).X
SingleTriangle(1).Y = Triangle(2, 1).Y
SingleTriangle(2).X = Triangle(2, 2).X
SingleTriangle(2).Y = Triangle(2, 2).Y
Call OutputTriangle(XMax, XOffset, YMax, SingleTriangle(), PixelsPerX, PixelsPerZ, CosTilt, SinTilt, RelDistOfUserFromScreen, False, TriangleSWNEColor)
Case Else
End Select
XMod8 = XMod8 + 1
If XMod8 >= 8 Then
XMod8 = 0
For ObjectNum = 1 To 2
For VertexNum = 0 To 2
Triangle(ObjectNum, VertexNum).X = Triangle(ObjectNum, VertexNum).X + 3#
Next VertexNum
Next ObjectNum
For VertexNum = 0 To 3
Rectangle(2, VertexNum).X = Rectangle(2, VertexNum).X + 3#
Next VertexNum
End If
Next X
Case 1
XMod8 = 0
For ObjectNum = 1 To 3 Step 2
For VertexNum = 0 To 3
Rectangle(ObjectNum, VertexNum).X = BaseRectangle(ObjectNum, VertexNum).X
Rectangle(ObjectNum, VertexNum).Y = BaseRectangle(ObjectNum, VertexNum).Y + YOffset
Next VertexNum
Next ObjectNum
For X = 0 To MaxX
Select Case XMod8
Case 1
If ComputerPage(Y, X) = 0 Then
SingleRectangle(0).X = Rectangle(1, 0).X
SingleRectangle(0).Y = Rectangle(1, 0).Y
SingleRectangle(1).X = Rectangle(1, 1).X
SingleRectangle(1).Y = Rectangle(1, 1).Y
SingleRectangle(2).X = Rectangle(1, 2).X
SingleRectangle(2).Y = Rectangle(1, 2).Y
SingleRectangle(3).X = Rectangle(1, 3).X
SingleRectangle(3).Y = Rectangle(1, 3).Y
Call OutputRectangle(XMax, XOffset, YMax, SingleRectangle(), PixelsPerX, PixelsPerZ, CosTilt, SinTilt, RelDistOfUserFromScreen, RectangleSWNEColor)
End If
Case 5
If ComputerPage(Y, X) = 0 Then
SingleRectangle(0).X = Rectangle(3, 0).X
SingleRectangle(0).Y = Rectangle(3, 0).Y
SingleRectangle(1).X = Rectangle(3, 1).X
SingleRectangle(1).Y = Rectangle(3, 1).Y
SingleRectangle(2).X = Rectangle(3, 2).X
SingleRectangle(2).Y = Rectangle(3, 2).Y
SingleRectangle(3).X = Rectangle(3, 3).X
SingleRectangle(3).Y = Rectangle(3, 3).Y
Call OutputRectangle(XMax, XOffset, YMax, SingleRectangle(), PixelsPerX, PixelsPerZ, CosTilt, SinTilt, RelDistOfUserFromScreen, RectangleSENWColor)
End If
Case Else
End Select
XMod8 = XMod8 + 1
If XMod8 >= 8 Then
XMod8 = 0
For ObjectNum = 1 To 3 Step 2
For VertexNum = 0 To 3
Rectangle(ObjectNum, VertexNum).X = Rectangle(ObjectNum, VertexNum).X + 3#
Next VertexNum
Next ObjectNum
End If
Next X
Case 2
XMod8 = 0
For ObjectNum = 0 To 3 Step 3
For VertexNum = 0 To 2
Triangle(ObjectNum, VertexNum).X = BaseTriangle(ObjectNum, VertexNum).X
Triangle(ObjectNum, VertexNum).Y = BaseTriangle(ObjectNum, VertexNum).Y + YOffset
Next VertexNum
Next ObjectNum
For VertexNum = 0 To 3
Rectangle(4, VertexNum).X = BaseRectangle(4, VertexNum).X
Rectangle(4, VertexNum).Y = BaseRectangle(4, VertexNum).Y + YOffset
Next VertexNum
For X = 0 To MaxX
Select Case XMod8
Case 0
SingleTriangle(0).X = Triangle(0, 0).X
SingleTriangle(0).Y = Triangle(0, 0).Y
SingleTriangle(1).X = Triangle(0, 1).X
SingleTriangle(1).Y = Triangle(0, 1).Y
SingleTriangle(2).X = Triangle(0, 2).X
SingleTriangle(2).Y = Triangle(0, 2).Y
Call OutputTriangle(XMax, XOffset, YMax, SingleTriangle(), PixelsPerX, PixelsPerZ, CosTilt, SinTilt, RelDistOfUserFromScreen, True, TriangleSSWNNEColor)
Case 6
SingleTriangle(0).X = Triangle(3, 0).X
SingleTriangle(0).Y = Triangle(3, 0).Y
SingleTriangle(1).X = Triangle(3, 1).X
SingleTriangle(1).Y = Triangle(3, 1).Y
SingleTriangle(2).X = Triangle(3, 2).X
SingleTriangle(2).Y = Triangle(3, 2).Y
Call OutputTriangle(XMax, XOffset, YMax, SingleTriangle(), PixelsPerX, PixelsPerZ, CosTilt, SinTilt, RelDistOfUserFromScreen, True, TriangleSSENNWColor)
Case Else
End Select
XMod8 = XMod8 + 1
If XMod8 >= 8 Then
XMod8 = 0
For ObjectNum = 0 To 3 Step 3
For VertexNum = 0 To 2
Triangle(ObjectNum, VertexNum).X = Triangle(ObjectNum, VertexNum).X + 3#
Next VertexNum
Next ObjectNum
For VertexNum = 0 To 3
Rectangle(4, VertexNum).X = Rectangle(4, VertexNum).X + 3#
Next VertexNum
End If
Next X
XMod8 = 0
For ObjectNum = 0 To 3 Step 3
For VertexNum = 0 To 2
Triangle(ObjectNum, VertexNum).X = BaseTriangle(ObjectNum, VertexNum).X
Triangle(ObjectNum, VertexNum).Y = BaseTriangle(ObjectNum, VertexNum).Y + YOffset
Next VertexNum
Next ObjectNum
For VertexNum = 0 To 3
Rectangle(4, VertexNum).X = BaseRectangle(4, VertexNum).X
Rectangle(4, VertexNum).Y = BaseRectangle(4, VertexNum).Y + YOffset
Next VertexNum
For X = 0 To MaxX
Select Case XMod8
Case 0
SingleTriangle(0).X = Triangle(0, 0).X
SingleTriangle(0).Y = Triangle(0, 0).Y
SingleTriangle(1).X = Triangle(0, 1).X
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -