⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3dmaze.frm

📁 用vb实现的3d迷宫游戏的代码
💻 FRM
📖 第 1 页 / 共 5 页
字号:
          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
           

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -