手机版

用实现魔方游戏 NET (1)任意阶魔方的表示

时间:2021-09-17 来源:互联网 编辑:宝哥软件园 浏览:

第一部分是魔方的简单表示。

任何N阶魔方都有六个曲面,每个曲面都有N*N个正方形。在面向对象编程中,我们可以把立方体、立方体的曲面和块看作对象。

魔方的定义:六个面存储在一个数组中。

“摘要”代表指定顺序的魔方' '/摘要公共类魔方类''''摘要' ' ' '魔方顺序' '/摘要公共魔方排序为整数' ' ' '摘要' ' ' '魔方的六个面' '/。总结公共曲面数组(5)作为立方体曲面类立方体曲面定义:正方形存储为N*N个二维数组。

“summary”代表魔方的面' '/Summary Public Class cubessurface Class ' ' ' Summary ' ' '魔方表面的块数据' '/Summary Public Block Data(,)As CubeBlockClass立方体定义:每个块都有自己的颜色。

' summary ' ' '代表魔法面上的框' '/summary公共类cubebackclass''' summary ' ' '当前块的颜色' ' ' '/。总结公共块颜色为颜色公共x为整数'列数公共y为整数'行数End Class以上,我们完成了魔方类的简单定义,建立了它们之间的从属关系。这里需要注意的是,BlockClass指的是魔方的单一色块。

因此,N阶立方体应该有6*N*N个色块,例如三阶立方体应该有54个色块类。

-

第二部分,曲面之间的空间关系。

魔方的六个面不是独立的,而是有一定的空间关系。在之前的立方体类中,SurfaceArray()被定义为代表魔方的六个面。现在,索引0~5分别表示魔方的顶面、底面、左面、右面、正面和背面。

表面阵列(0):顶层。

表面阵列(1):底层。

左侧表面阵列(2):

右表面阵列(3):

:前面的表面阵列(4)。

:后面的表面阵列(5)。

图2.1魔方六个面的空间位置。

因此,确定了每个曲面的空间方向,并将以下定义添加到SurfaceClass中:

“summary”“当前表面层的相邻表面层(顶部、底部、左侧、右侧、前部和后部)”“”/summary public邻域(5)作为立方体表面类。

bourface()的索引从0到5依次表示前部的顶部、底部、左侧、右侧、前部和后部。以图2.1中的“右侧”为例,它的NeibourSurface()。

应该是

内表面(0):顶层。

内表面(1):底层。

内表面(2):正面。

内表面(3):后部。

内表面(4):在右边,每张脸的“前面”就是它自己。

内表面(5):左侧。

但上面默认的是‘对’,而‘顶’就是顶层。所以我们仍然需要。

严格定义每个面的“顶部”:

图2.2魔方六面空间位置_平面展开。

图2.3魔方六个面的方向‘上’。

从上面,我们可以确定表面之间的空间关系:

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,5,4,4},'空间相邻关系矩阵此矩阵的行值是指SurfaceArray()中某个曲面的索引,列数表示该曲面的索引上面提到的每个面的“正面”都是本身,矩阵的第五列依次是从0到5。

在CubeClass类中添加以下方法,并在构造函数中调用它:

' ' summary ' ' '初始化表面层之间的空间邻接' '/Summary Public subnit Surface()DimTempArray(),As Integer={{2,3,4,5,0,1},{3,2,4,5,1,0},{1,0,0,0}。3}、{0,1,4,5,3,2}、{0,1,2,3,4,5}、{0,1,3,2,5,4 } ' I=0到5的空间邻接矩阵对于j=0到5的表面阵列(I)。邻面(j)=表面阵列(模板阵列(I,j))下一个末端子

第三节魔方初始化。

CubeClass的构造函数:六边的颜色标准:顶白、底黄、左橙、右红、前绿、后蓝。

''摘要'''新建一个指定阶的魔方' '/摘要'''参数名='nRank '指定的阶数/param public Sub New(按值排列为整数)Dim colorar()As Color={ Color .白色,彩色。黄色,彩色。橙色,彩色。红色,彩色。绿色,彩色。蓝色}对于i=0到5表面数组(i)=新的立方体表面类(nRank,I,ColorArr))下一个立方体表面=nRankInitSurface()结束子魔方面(立方体表面类)的构造函数:

''摘要'''当前魔方的阶数'/摘要公共立方体链接为整数'''摘要' ' '魔方表层的数据' '/摘要公共块数据(,)作为立方体块类'''摘要'''当前表层的相邻表层(顶、底、左、右、前和后)' '/摘要公共邻域曲面(5)As cubessurface类公共索引As Integer public Sub New(n rank As Integer,nIndex As Integer,n Color As Color)ReDim块数据(n rank-1,n rank-1)立方体rank=n rank Index=n indexdim rnd As New random for I=0 To n rank-1 for j=0 To n rank-1块数据(I,j)=New cubesblockclass(I,j)块数据(I,j).ParentIndex=IndexBlockData(i,j).块颜色=nColorNextNextEnd Sub魔方块(立方体块类)的构造函数:

公共父索引为整数'''摘要'''当前块的颜色' '/摘要公共块颜色为颜色公共x为整数'所在列数'公共y为整数'所在行数公共子新(nX为整数,nY为整数)x=nXy=nYEnd Sub至此,一个任意阶的魔方已可以被表示,并且在此基础上将可以实现魔方的扭动逻辑。

以上所述是针对。网实现魔方游戏(一)之任意阶魔方的表示,希望对大家有所帮助。

版权声明:用实现魔方游戏 NET (1)任意阶魔方的表示是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。