翻转棋游戏的规则就是点击某个棋子,该棋子和相临的棋子都会一起翻动一次,游戏的目标是将混乱的开局,翻回到一致的颜色,比如,请试着将下面的棋子全部翻成蓝色。
MC相临关系的判断是这里的一个关键,我想了一个简单的办法,就是在给MC设定实例名时,就将行列号写记录到元件的实例名中,比如上面的游戏中,显示的元件标题,就是该元件的实例名。
对于上面的游戏,相临关系比较的简单,上下左右四个相临块分别对应的是行号减一、行号加一、列号减一、列号加一的位置。
但在下面这种情况就会有些复杂。
在蜂窝状的排列(上下半部完全对称,行数为奇数)中,相临块最少是三块,最多是六块,因为它依旧是二维平面排列,所以仍然可以采用前面的实例名排列方式,代码结构也是完全相同的,只是在判断条件上多出一些判断。
对比前一图形结构,可以发现,列号不变,行号减一、行号加一,这两个相临块多数情况下一直存在,左右两侧的相临块也和前面相同。
所不同的是,当MC位于水平中线以上部分的时候,另外多出来的两个相临块,表示形式是行列号同时减一,行列号同时加一。
当MC位于水平中线以下部分的时候,另外多出来的两个相临块,表示形式是行号减一、列号加一;行号加一、列号减一。
当MC位于水平中线位置时,另外多出来的两个相临块,表示形式是行号行号减一、列号减一;行号加一、列号减一。
通过这样的分析,可以知道,根据行列号就可以清楚的表示出相临块的关系,因此,这个游戏的排列关系问题就解决了。其余的代码,结构比较简单,大家自己看源文件吧。
做为游戏来讲,这里的两个示例并不完整,主要用来演示相临关系,大家可以自由发挥,比如做一个由正面全翻到背面的游戏。
回复Comments
作者:
{commentrecontent}