图2.1 魔方六面的空间位置
由此确定了各个面的空间方位,给SurfaceClass添加如下定义:
- <summary>
- 当前表层的相邻表层(顶、底、左、右、前和后)
- </summary>
- Public NeibourSurface(5) As CubeSurfaceClass
![155707yqimqyjninzxl81n.png](https://di.gameres.com/attachment/forum/201602/17/155707yqimqyjninzxl81n.png)
由上,我们可以确定各面之间的空间关系:
- Dim TempArray(,) As Integer = {{2, 3, 4, 5, 0, 1},
- {3, 2, 4, 5, 1, 0},
- {1, 0, 4, 5, 2, 3},
- {0, 1, 4, 5, 3, 2},
- {0, 1, 2, 3, 4, 5},
- {0, 1, 3, 2, 5, 4}} 空间相邻关系矩阵
- {0, 1, 2, 3, 4, 5},
- {0, 1, 4, 5, 3, 2},
- {1, 0, 4, 5, 2, 3},
- {3, 2, 4, 5, 1, 0},
该矩阵行数值指某个面在SurfaceArray()中的索引,列数表示这个面相邻的面在SurfaceArray()的索引。前面提到每一个面的“前”就是它自身,矩阵的第五列从0依次到5。
在CubeClass类中添加如下方法,并在构造函数中调用:
- <summary>
- 初始化各个表层间的空间相邻关系
- </summary>
- Public Sub InitSurface()
- Dim TempArray(,) As Integer = {{2, 3, 4, 5, 0, 1},
- {3, 2, 4, 5, 1, 0},
- {1, 0, 4, 5, 2, 3},
- {0, 1, 4, 5, 3, 2},
- {0, 1, 2, 3, 4, 5},
- {0, 1, 3, 2, 5, 4}} 空间相邻关系矩阵
-
- For i = 0 To 5
- For j = 0 To 5
- SurfaceArray(i).NeibourSurface(j) = SurfaceArray(TempArray(i, j))
- Next
- Next
- End Sub
- Next
- Next
- SurfaceArray(i).NeibourSurface(j) = SurfaceArray(TempArray(i, j))
- For j = 0 To 5
-
- {0, 1, 3, 2, 5, 4}} 空间相邻关系矩阵
- {0, 1, 2, 3, 4, 5},
- {0, 1, 4, 5, 3, 2},
- {1, 0, 4, 5, 2, 3},
- {3, 2, 4, 5, 1, 0},
- Dim TempArray(,) As Integer = {{2, 3, 4, 5, 0, 1},
- Public Sub InitSurface()
- </summary>
- 初始化各个表层间的空间相邻关系
第三节 魔方的初始化
魔方(CubeClass)的构造函数:六面的颜色标准:顶-白色,底-,左-橙色,右-红色,前-绿色,后-蓝色
- <summary>
- 新建一个指定阶的魔方
- </summary>
- <param name=nRank>指定的阶数</param>
- Public Sub New(ByVal nRank As Integer)
- Dim ColorArr() As Color = {Color.White, Color.Yellow, Color.Orange, Color.Red, Color.Green, Color.Blue}
- For i = 0 To 5
- SurfaceArray(i) = New CubeSurfaceClass(nRank, i, ColorArr(i))
- Next
- CubeRank = nRank
- InitSurface()
- End Sub
- InitSurface()
- CubeRank = nRank
- Next
- SurfaceArray(i) = New CubeSurfaceClass(nRank, i, ColorArr(i))
- For i = 0 To 5
- Dim ColorArr() As Color = {Color.White, Color.Yellow, Color.Orange, Color.Red, Color.Green, Color.Blue}
- Public Sub New(ByVal nRank As Integer)
- <param name=nRank>指定的阶数</param>
- </summary>
- 新建一个指定阶的魔方
魔方面(CubeSurfaceClass)的构造函数:
- <summary>
- 当前魔方的阶数
- </summary>
- Public CubeRank As Integer
- <summary>
- 魔方表层的数据
- </summary>
- Public BlockData(,) As CubeBlockClass
- <summary>
- 当前表层的相邻表层(顶、底、左、右、前和后)
- </summary>
- Public NeibourSurface(5) As CubeSurfaceClass
- Public Index As Integer
- Public Sub New(nRank As Integer, nIndex As Integer, nColor As Color)
- ReDim BlockData(nRank - 1, nRank - 1)
- CubeRank = nRank
- Index = nIndex
- Dim rnd As New Random
- For i = 0 To nRank - 1
- For j = 0 To nRank - 1
- BlockData(i, j) = New CubeBlockClass(i, j)
- BlockData(i, j).ParentIndex = Index
- BlockData(i, j).BlockColor = nColor
- Next
- Next
- End Sub
- Next
- Next
- BlockData(i, j).BlockColor = nColor
- BlockData(i, j).ParentIndex = Index
- BlockData(i, j) = New CubeBlockClass(i, j)
- For j = 0 To nRank - 1
- For i = 0 To nRank - 1
- Dim rnd As New Random
- Index = nIndex
- CubeRank = nRank
- ReDim BlockData(nRank - 1, nRank - 1)
- Public Sub New(nRank As Integer, nIndex As Integer, nColor As Color)
- Public Index As Integer
- Public NeibourSurface(5) As CubeSurfaceClass
- </summary>
- 当前表层的相邻表层(顶、底、左、右、前和后)
- <summary>
- Public BlockData(,) As CubeBlockClass
- </summary>
- 魔方表层的数据
- <summary>
- Public CubeRank As Integer
- </summary>
- 当前魔方的阶数
魔方块(CubeBlockClass)的构造函数:
- Public ParentIndex As Integer
- <summary>
- 当前块的颜色
- </summary>
- Public BlockColor As Color
- Public x As Integer 所在列数
- Public y As Integer 所在行数
- Public Sub New(nX As Integer, nY As Integer)
- x = nX
- y = nY
- End Sub
- y = nY
- x = nX
- Public Sub New(nX As Integer, nY As Integer)
- Public y As Integer 所在行数
- Public x As Integer 所在列数
- Public BlockColor As Color
- </summary>
- 当前块的颜色
- <summary>
至此,一个任意阶的魔方已可以被表示,并且在此基础上将可以实现魔方的扭动逻辑。
资源分享:中国石油大学(华东)公开课:魔方和数学建模(课程涉及的方法与上述不同,另一个思路供大家参考。)
相关阅读:数独游戏求解:解法适用于任意阶数的数独
![锐亚教育](http://www.insideria.cn/files/default/2017/03-19/164933d4e4bd117214.jpg)
锐亚教育,游戏开发论坛|游戏制作人|游戏策划|游戏开发|独立游戏|游戏产业|游戏研发|游戏运营| unity|unity3d|unity3d官网|unity3d 教程|金融帝国3|8k8k8k|mcafee8.5i|游戏蛮牛|蛮牛 unity|蛮牛
- 还没有人评论,欢迎说说您的想法!