课程设计终于是告了一段落。这东西自新建文件夹以来已经捣鼓了整整一个月,除了中途休息过几天,大多数时间不是在实际动手就是在考虑如何动手,而最终才做出来了一点点小东西。作为课程设计作业是能获得一个不错的评价吧,但与相比而言一个月时间花费得实在有点长。
统计了一下代码量,去掉注释和实质上的空行(比如只有大括号的行)后,大概有3000多行。好像是不少,但又怀疑这点东西是不是真的需要堆这么多代码来实现。但总之是不打算再加什么新功能了,最多优化一点小细节,修一修bug之类的。其实想加的东西还有不少,然而目前的代码已经比想象中要臃肿,这次算是体会到了一点维护屎山的感觉了。现在才真切知道做软件写代码可远不止学一门编程语言然后做做习题这么简单,经过这一个月的煎熬,程序的设计和工程部分在我心目中已经被拔高到神圣的地位了(*´∀`) 在继续往里面加东西之前,至少得先把整个架构重新设计好,而这不是现在的自己能马上做到的,所以这个课程设计就到这里暂时告一段落了。
回顾一下整个历程……一开始花了一两天来决定迷宫的数据结构,因为数据结构老师说什么要把重心放在数据结构的选择上,所以不敢马虎。然而每种方案好像都各有优缺点,优柔寡断地决定不下来,甚至前期和后期用的是完全不同的两套方案。不得不说教科书上的东西确实是经历过筛选留下来的,后期放弃了二维数组,改用书上的图邻接表,确实是用得非常顺手。
然后在研究绘图上又花了不少时间。C#图像部分老师好像跳过了,说好像是因为后面我已经没怎么听了,可能他讲了一点点我也不知道(;´Д`),但就算他讲了,因为我都没在听所以到头来也是一样。花时间自学了书上的两种绘图方式,然而因为没能满足性能上的需求,结果还是自己网上找了第三种方式,真是要命。花在研究和调试绘图上的时间绝对是占了2/3以上,底层的算法思路明确很顺利就写好了,就是在不停折腾绘图上磨蹭了好多时间。前面说得代码臃肿就是画图方面的代码开始乱套了,这方面真的没什么经验。
再就是迷宫的生成算法。网站倒是有一个很好的网站,但一大面的英语啃起来真让人感觉压力。最终实现的也就只有其中3、4种,想着真要全部做的话一个更完善的代码结构还是必须的。
接着是万恶的C++与C#混合编程。这东西查资料摸索就花了好多时间,最后才勉强凑合实现了出来,用的是PInvoke机制。原以为底层用C++这么高大上,运行速度应该能更快,结果因为需要封送大量数据,反而还更慢了……这也是不打算强行往下加东西的原因之一,因为想改成纯C#了。这次毕竟是没办法,因为核心数据结构用C++描述是课程设计要求。大量数据的封送原本该是避免的,能避免的话传说中的性能提升或许就能实现了吧。
最后好像没有最后了,有的话还是软件工程方面的问题吧。为了应对不断变化的需求,一个好的设计真的非常非常重要。或许是该去找本书来看了。
距离开学还有差不多一个月,要不是开学就要考试,想必这一个月一定能过得相当愉快。现在最多就能愉快两星期吧,因为还要留些时间复习和预习。而两星期什么的眨眼就没了・゚( ノд`゚)