您的位置:首页 > 理论基础 > 数据结构算法

2011-1-9迷宫课程设计

2012-01-29 15:17 134 查看
      这次的课程设计,我感触很深啊,一时我也说不清,所以想写下来,有机会的话也许你会读到,但也无所谓这些了,只是想说出来,,,呵呵

    首先说说我学习MFC的进度吧,上学期做的画线的课程设计,那时候还对MFC不了解,所以做的很烂了,对MFC更本就没有一个系统的了解。本来我是不想再学MFC了,因为它是微软的东东,运行平台局限,而且由于个人理想,我也青睐做开源的东西,所以这一学期我根本没再学下去。之间08的延帅同学他很希望我能和他一起研习MFC,但是我一直不知道怎么学,书是借了一本又一本,但是还是看不懂啊。。。可以说是放弃了的。。。到学期末吧,就是我和你聊天说我开始学MFC的时候,那是因为班里蒋南、石洋同学想在班里组建一个MFC 兴趣小组,我被他俩就邀请参加了。那时候我们都还不怎么会MFC。但是我终于在班里找到愿意学习技术的人了,很是开心啊,所以也放下了学PHP开始和他们一起学习MFC。在一起交流我学到了很多,原本不清晰地原理,和他们一起讨论了几次,就明白了。而且最重要的是他们共享给我一个MFC的视频。这对我来说意义非凡。

怎么说呢,我其实不怎么聪明,但是我愿意花比别人多的时间去学,看视频是我学技术的开始,每个视频我可以看4、5遍,我只要不玩游戏,就可以沉下心来一步一步跟着做。这时候也就到了数据结构考试的那段时间了,也没看多少视频,但是可以把去年的划线的课程设计做到完美了。后来做迷宫这个题的时候,很多功能都是看完视频在用自己的办法实现,也挺纠结。

     现在好好说说我可爱的迷宫小程序吧:

       首先我并没有从贴图开始做,我先实现的是显示时间和菜单,这个问题我就想了很多天,到底用基于对话框做呢,还是用单文档来实现。我使用过对话框,但是怎么都弄不出来菜单和状态栏,书上有一些零星的算法,我写上去就报错,搞不懂。。。后来就用单文档来实现的。确定用单文档写后,我就把时间的功能加进去,那个就是当选择某菜单项时,时间状态为1,状态栏开始运行时间。

       然后就是贴图,贴图主要就是要搞清楚贴图的过程,先创建位图,创建兼容DC,将位图选到兼容DC中,将兼容DC贴到当前DC中,如果不按照这个过程,就会出错。但这个也比较简单,迷宫数组建立好之后,两个for循环就搞定贴图,没什么特别难的。问题就在于到底写在哪个函数里面,教程上使用OnEraseBkgnd贴的图,我用OnDraw和OnPaint都试过,在重绘的时候总是出现问题。不是老鼠贴不上就是全部都贴不上。还有就是有很多贴图的方法,我不知道该如何选择,有时候用CClientDC 来贴,有时候用用CDC来帖,很乱,没有改好,后来我全部统一用一种方式贴的图。

      贴好图就开始键盘的消息响应,这个比较简单,响应键盘触发的事件,然后设置不同的位置贴图和覆盖走过的路。 就是用到地图数组的时候有问题,数组中的[x][y]在屏幕中就要用成[y][x],不然位置就不对,因为设备坐标和数组还是不相同的,最后给试出来了。。。但是地图是个很麻烦的问题,因为键盘响应必须用到地图数组,而贴图也要用到地图数组,所以我想专门用一个类来写地图。哎。。。其实这样设计很不科学,我想的是后面要对地图载入、保存,所以必须要建立一个类,但其实后来实现存储载入的时候还是在Frame类里面实现,因为菜单类不能让一个基本类来响应。所以Map类就没啥意义。

      用到时间的时候,就得把Frame类里面的状态栏关联到View类的游戏开始和结束,这就很纠结了,想了很多种办法,在View类调用Frame类的时间吧,然是还得再调用回去,所以很麻烦,最后就用全局变量来实现时间的状态了,手动就到这里结束了。

      然后没有先实现自动,而是先实现了路变墙、墙变路,这个实现起来比较简单,鼠标单击响应时间,然后取光标坐标,用switch判断,然后贴图就OK了。

      载入、存入地图,这个功能感觉很难啊,但事实上很简单啊,把地图的数组用文件存起来就OK了,视频上刚好讲了文件操作,挺简单,不过每次在载入地图的时候,需要对窗口重绘。

      自动走实现起来很麻烦,因为书上的代码我调了N久没成功,然后就用08届邢海蓉的迷宫算法,但是她的代码有个重大的BUG,每次走到十字型出口的时候,就总少走一条路,算法我跟着走了很久,还是绕不过来,原来原理知道也不一定能实现啊,,,想了很久,终于找到问题所在- -!每次压走过路得栈都把方向给压错了。。。然后自己又重新压栈+出栈一次,把方向给压对了。。。然后终于出来了,全部路径都可遍历了:) 就弄这个直接弄到早上7点啊。。。不过栈的算法大多不是自己写的,写不出来啊。。。路径走对了,贴图就比较容易了,小小调整了一下,全部就搞定了。

      感觉这几天都不瞌睡啊,元旦玩了3天游戏,嘿嘿。然后开始做课程设计,5天下来,平均早上5、6点睡觉,12点起来,学MFC、做迷宫。。。下午玩游戏到晚上1点断网,然后开始课程设计。基本没怎么睡觉。虽然我知道游戏不是啥好东西,但是就是戒不掉啊。。。玩了同一个游戏有6年了,还在玩- -!热爱的不行,纠结的不行。。。

      感觉这学期没做多少事情,就做了个简单的PHP网站,连后台都没加;给10的培训了网页制作,讲了2周课;然后熬了几天做课程设计;别的啥也没做啊。。。花了我所有积蓄和助学金买了个电脑,几乎没怎么好好利用啊,,,还又玩起了游戏。。。哎~~~~~~

     打算放假回家实习去,不然天天呆家里就没日没夜的游戏了。。。还是要努力奋斗啊,现在努力努力半辈子,现在不努力努力一辈子啊,嘿嘿。。。说得对的呢,不过我要奋斗到死!。。。:)

     嘿嘿,很开心那,自己的努力能被认可,我还是要向绝影的精神努力啊~嘿嘿。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息