小伙用VC.NET还原多阶魔方全过程,嗯,CPU的香味

本文介绍了如何使用VC.NET开发一款模仿人类还原多阶魔方的程序,采用逐步解决的策略,而非复杂的数学算法。程序在开发过程中面临了状态识别和调试的挑战,通过状态哈希函数简化了问题,并分享了在遇到bug时的调试技巧。对于初学者,文章还提供了学习C/C++过程中的问题咨询途径。
摘要由CSDN通过智能技术生成

魔方自动求解程序一般有两种方法,一种是按照人还原魔方的步骤,一步步来,另外一种是使用数学方法,魔方自有一套复杂的数学理论,其中较著名的是两阶段算法(压缩文件中的cube430.exe使用的就是数学方法,程序作者便是two-phase算法发明人,文档中有该算的介绍) 。

本程序还原魔法使用的便是第一种方法。界面仿wca的cube430.exe(文件夹中的wca-explorer.zip是完整程序) ,实现界面如下:

项目结构展示:

部分源码展示:

程序还有bug,程序可能自动生成一个ml文件,保存bug发生时的魔方状态。经验总结: 

当要处理的状态是很多可能状态之一,而识别出当前的状态是哪种状态又比较困难时,可以考虑构造hash函数,以区别每一种状态。求出所有可能状态的hash

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1。这个游戏具体要实现那些功能?<br/>第一步是建模,在计算机内建立魔方的模型。<br/>第二步是仿真,在屏幕上制造和真实场景一样的效果(游戏性)。<br/>第三步是智能化,利用算法或数据库来自动给用户提供拧魔方的步骤(实用性)。<br/>第四步是拓增其他功能和用途(离这一步我想还不是考虑的时候)。<br/>2。准备怎么分工合作?<br/>这里毕竟不是数学建模,不需要在三天内赶工。每个人根据自己的闲暇时间,编纂劳而有用的东西。每一人都应该有属于自己的代码,无论是自己首创还是改编自他人。每个人按照自己的能力编自己最感兴趣的部分或改编他人的代码。实现第一步并不难,我的建议是个人独立开发。<br/>日后合作为自行组织,在合作前必须统一我们的用语用词,定期发布自己在编写过程中所用到的词汇供大家讨论和参考。在互相交换代码模块时就不用大的修改。<br/>3。工程的划分?<br/>你参与了那个部分的建设,可以在论坛中声明,以发现志同道合者。<br/>模型建立专家:选用的模型并不非要采用我所给的那一个,把所有的模型都建立出来,多一种模型有多一种的好处。除了立方体魔方,世上还有一种立锥体魔方,4个顶点,6线,4个大面,每面分出9个小面,为等边三角形。请建立模型。<br/>代码专家:设计专门的函数,实现特定的功能。用户对魔方的动作分为:左转、右转、上翻、下翻、左翻、右翻(相对向前的面的动作);上顺拧、上逆拧、右顺拧、右逆拧、前顺拧、前逆拧、左顺拧(顺:顺时针,逆:逆时针)。其他如后顺拧等也开发出来,以备所需。<br/>界面专家:无论多么糟的界面,试着做一个,开创一下先河。不要用VB。列表显示数据库查询的两个数据间所走过的路径。<br/>数据库专家:设计数据的存储形式,用我的那个也可以。接着设计数据库生成的函数(链表的长度可以控制以防塞满硬盘),和查询语句。数据库可以提供最佳的步骤,一般说来20步以内可以拧成所有状态但魔方的状态总的数目相当大,建立一个完整的数据库要占用的硬盘G数,非一般人所能承受。<br/>算法专家:买一个魔方开始拧吧,将自己手工拧魔方的技术编成算法函数,输出拧法列表。打听别人的拧法应该是很快的选择。<br/>测试专家:赶紧下载最新的代码,debug一下,看是否代码有了冗余,如果实在做不来,请等待成品的出现。<br/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值