当我们在学习一门编程语言的时候,往往会做很多代码的练习,但是这些练习的代码都是孤立的,之间没有联系,而且练习的内容都是比较局部的问题,不能反应编程语言在整个软件的开发过程的应用,在我的课程里除了代码片段的练习,增加了一个完整的软件项目,贯穿到整个语言的学习过程,在讲解基础知识的同时,也讲述了基础知识的使用,以及软件开发的一般过程和思路。这个项目是一个游戏,见图
游戏的规则是这样的,点击一个球可以移动到不同的格子里,移动的时候必须延着没有球的格子滚过去,每移动一次随机出现3个球,把5个以上颜色相同的球联成一条线,就可以销掉得分.移动球的时候,程序要找两个点间的最短路径,是这个游戏里比较难的部分,在浙江大学的acm试题库里居然看到了这道题,在算法里不算很难,采用广度优先算法就可以了。
编写的过程,先是考虑数据如何存储,有了存储,就可以考虑逻辑的实现,就是算法的实现,实现算法,当然离不开函数,有了函数的定义才能更好的明确算法的边界,即条件和结果,然后才是考虑如何实现算法,这里一共有三个算法,随机放球,判断消球,寻找路径。最后,考虑采用什么样的界面,熟悉相应的函数库的使用。这个顺序和我的编程课程的顺序是完全一致的。这样下来,通过一个完整项目的实践,对语言的理解和驾驭都达到了较高的程度,这个项目除了C语言,JAVA,C#,JAVASCRIPT,PHP等各种语言都可以采用,这里面3个算法,都很典型,有一定难度,但都容易理解,有一定趣味,实现3个算法,已经说明你对语言的掌控能力已经过关了,界面在这里其实不是很重要,主要是用来学习如何使用类库,已经不是语言的范畴。
刚学过语言,想找个项目练习的同学,可以尝试着写一下这个游戏,巩固一下学习效果,对于看不清楚自己水平的同学,也可以做一下,来验证一下自己的水平。在编写的过程中,代码重构,单元测试等东西都会用到, 你是否用了,欢迎大家把自己的编写体验拿出来分享。