使用VB.Net GDI+编程编写的3D魔方游戏程序

最近学习了.net下的GDI+编程,下面小秀一下成果,使用GDI+编写的桌面魔方程序,今天把源代码放上,欢迎大家下载,如果机器上有.net环境的话可以直接运行bin目录下的MagicCube.exe进行游戏。



源代码下载地址

http://www.lidaren.com/code/magiccube/magiccube.zip



下面方式几个重要的算法程序

1,魔方正面九宫格90度翻转,这个只要细心观察翻转前和翻转后的魔方,你就可以得到答案

左转90度:以(0,0)(2,2)为对称轴翻转后,再以(1,0)(1,2)为对称轴翻转

右转90度:以(0,2)(2,0)为对称轴翻转后,再以(1,0)(1,2)为对称轴翻转

算法如下:







'正方形数据交换

Private Sub RevertRectangleLeft(ByVal id As Integer)



'要实现左转90度

'先对角线转置

Dim i, j As Integer

For i = 1 To Me.DIMCOUNT - 1

For j = 0 To i - 1

'交换数据

Dim temp As Integer

temp = Me.Matrix3D(id)(i)(j)

Me.Matrix3D(id)(i)(j) = Me.Matrix3D(id)(j)(i)

Me.Matrix3D(id)(j)(i) = temp

Next

Next

''后水平翻转

For i = 0 To Me.DIMCOUNT - 1

'交换数据

Dim temp As Integer

temp = Me.Matrix3D(id)(0)(i)

Me.Matrix3D(id)(0)(i) = Me.Matrix3D(id)(Me.DIMCOUNT - 1)(i)

Me.Matrix3D(id)(Me.DIMCOUNT - 1)(i) = temp

Next

End Sub



'正方形数据交换

Private Sub RevertRectangleRight(ByVal id As Integer)



'要实现右转90度

'先对角线转置

Dim i, j As Integer

For i = 0 To Me.DIMCOUNT - 1

For j = 0 To Me.DIMCOUNT - 1 - i - 1

'交换数据

Dim temp As Integer

temp = Me.Matrix3D(id)(i)(j)

Me.Matrix3D(id)(i)(j) = Me.Matrix3D(id)(Me.DIMCOUNT - 1 - j)(Me.DIMCOUNT - 1 - i)

Me.Matrix3D(id)(Me.DIMCOUNT - 1 - j)(Me.DIMCOUNT - 1 - i) = temp

Next

Next

''后水平翻转

For i = 0 To Me.DIMCOUNT - 1

'交换数据

Dim temp As Integer

temp = Me.Matrix3D(id)(0)(i)

Me.Matrix3D(id)(0)(i) = Me.Matrix3D(id)(Me.DIMCOUNT - 1)(i)

Me.Matrix3D(id)(Me.DIMCOUNT - 1)(i) = temp

Next

End Sub



2,魔方正面的4个侧面的翻转,这个实现相对较难,方法也很多,CG这里使用了队列保存所有方块信息,然后再次存回数组的方式来实现,另外为了统一方向,CG使用了面相交边的参数来控制队列的进出,实现比较复杂,但是可以节省很多控件,如果大家有好的方法,欢迎分享



'''


''' 初始化各个面对应的边

'''

'''

Private Sub InitEdge()

'+/- 10 + 100 + 1000 + X 用于记录对应变的交换方式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值