注册 登录
编程论坛 C++教室

关于连连看,问问大家的意见

StarWing83 发布于 2007-12-30 02:53, 2896 次点击
上次说要写一个连连看。没想到这么复杂。光资源DLL包装就用了一个星期时间……刚刚写完了连连看的判断算法。有一个小问题咨询下大家。算法可以正常工作了,但是不一定是最优解。对于这个游戏,有求出最优解的必要吗?因为不算最解的话,从代码上看要快很多(推测,未证实)大家怎么看?
PS 使用的是迭代的方法,非递归……
21 回复
#2
Lonelie2007-12-30 03:00
不是吧,你写到现在……
#3
StarWing832007-12-30 03:03
真正核心的算法只花了三个小时左右,时间都花在钻研DirectMusic放音乐和GDI+内存显示图片了……惨啊……
#4
Lonelie2007-12-30 03:08
看来我也要加倍努力……
#5
StarWing832007-12-30 03:10
给个建议嘛……马上就要封装成类了(我喜欢用纯C写代码,然后再封装成C++),到底是要效率还是要最优解……
#6
Lonelie2007-12-30 03:27
何不兼而得之呢,做成两个版本的,就像Windows一样,就看使用者的喜爱了,想要效率的话可以effective版本,最优的话可以是optimize版本,就像的debug和release版本一样,改一下就能换版本
#7
Lonelie2007-12-30 03:35
不熬了,再搞就天亮了,睡觉
注意身体啊,兄弟!
#8
StarWing832007-12-30 03:48
好吧,就这样办。还有几个技术难题了。快熬到头了…………
#9
StarWing832007-12-30 04:15
好了,全部功能都实现了……我去睡觉……明天再包装……
#10
雨中飞燕2007-12-30 10:59
算最优解和算出一个可行解在格子数并不多的时候几乎没有差别,不就是DFS和BFS的差别么。
当然,由于题目的特殊性你可以用双向BFS的变形,可以找到最稳优解并且比单纯的DFS或者BFS都要快

嘛。。。。这么简单的算法问题搞三个小时,有必要么??
还要指出你一个误区:迭代和递归都不是具体算法描述,是算法的表现方式
事实上你所谓的迭代和递归究竟是什么算法?我搞不懂
算法复杂度并不以你的算法表现形式决定
#11
随心2007-12-30 11:11
学习了
#12
StarWing832007-12-30 21:27
回复 10# 的帖子
其实我没有使用图的算法。我只是在两个点的范围内穷举了横竖的路径(也就是横坐标之差+纵坐标之差条,肯定比搜索算法要快……)……觉得这么个小问题用DFS或者BFS夸张了点,因为连连看限制了拐弯的次数,个人觉得使用搜索算法不是很合适。正是因为是穷举路径,所以有个先后的问题,最先得到的合法路径不一定是最优的……
这么描述可以吗?……
呵呵,其实逻辑很简单,第一遍编译就过了。就是代码很搞人,那些LEFT啊RIGHT的很麻烦……所以弄了很久……
#13
StarWing832007-12-30 21:28
还有,我其实挺菜的……
#14
hero20072008-01-01 16:26
“资源DLL包装”、“封装成类”
谁讲讲.DLL、封装,我还没有这些的概念呢
#15
sunkaidong2008-01-01 19:13
我也不懂这些概念,看来要走的路还有很远啊.
#16
StarWing832008-01-01 21:48
哦,整个程序分两部分,一部分是一个DLL文件,里面有所有的图片,声音等,(现在大概1.5M),里面有四个类,分别是CImageLoader图片载入类,CThemeLoader主题的图片载入类,CMidiLoader,Midi音乐载入和播放类,CSoundLoader游戏音效播放类
另外一部分是可执行文件,内含四个类,CFrameWindow,这个是框架类,提供菜单,音乐等支持,CLLKPlane,连连看的托盘类,主要是操作控制,用来接收鼠标或键盘消息。CLLKIcon类,显示那些小图片,提供一些特效(比如说半透明啊,烟花什么的……),CLLKCore类,核心类,判断是否可以消除。以及查找消除的图片对,以及打乱,输赢判断都是在这里处理的……
贴两张图来……资源是用的CBC版块那位大哥的,在这里先谢谢一声~~
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录
#17
zjl1382008-01-04 18:39
做这个要学MFC吗?
#18
StarWing832008-01-06 11:27
我用的WTL
#19
hero20072008-01-15 17:24
WTL?
我才刚开始看MFC
#20
雨中飞燕2008-01-15 18:29
原帖由 [bold][underline]StarWing83[/underline][/bold] 于 2007-12-30 21:27 发表 [url=http://bbs.bccn.net/redirect.php?goto=findpost&pid=1166247&ptid=195079][/url]
其实我没有使用图的算法。我只是在两个点的范围内穷举了横竖的路径(也就是横坐标之差+纵坐标之差条,肯定比搜索算法要快……)……觉得这么个小问题用DFS或者BFS夸张了点,因为连连看限制了拐弯的次数,个人觉得使用搜索算法 ...

你这个不是搜索的话那是什么?还说肯定比搜索算法要快。。。
自己比自己更快?
#21
StarWing832008-03-13 03:12
:-P 现在才看到你的回答哦,哈哈。感觉这几个月来自己进步挺大的,现在看看自己以前写的程序,很多地方都可以优化的~
PS 这个也算是搜索的一种么……那算是DFS还是BFS呢……
PPS 如果使用双头BFS,有没有标程可看呢~~
#22
youqingd2008-03-14 09:53
百度一下吧,应该有解释的。
1