大约在11年前我从四川某市一所普通学校高中毕业,成绩只能说一般。当时,第一志愿电子科大沙河校区572分提档,而我差1分遗憾落败,遂被第二志愿的南京邮电大学软件工程专业录取。当然,无论是第一志愿还是第二志愿其实都跟计算机相关,因为父母一直关心未来的发展,托我一个在北京的亲戚分析打听得来的结论。
那时的我根本不懂软件编程到底是什么,只知道要好好学习,毕竟学什么不是学呢。还记得大一的C语言,同宿舍的另一个同学早就了解了什么是编程,在课堂上和老师对答如流。而我根本没有关于编程的概念,只知道,哦这个就是C语言,它需要用某种软件(VC++6.0),在里面编写C语言的代码,然后点击“run”,就能在一个地方看到“hello, world”。至于说什么编译阶段、链接阶段,管他的,在各种试卷上这么写就行(直到很久以后,我才真正的理解了编译,链接,不过那个时候已经是我工作的第三年了)。
尽管没有特别了解编程是什么,但我至少还是认真履行了学生这个角色的基本职责的:每堂课我都很认真听,认真的搭建环境,认真的编写代码。在大一上的期末,指针我还是会用的(笑)。同时,大一下开学,就迎来了第一个挑战。
大一下开学的时候,不知道学校出于什么样的考虑。要在开学的头两周进行所谓的“实验课”,不过对于我们这样的计算机相关专业的同学来说,不会在干净整洁的实验室里面,拿着设备仪器检测这检测那。计算机系的本科实验室,不过是一间摆满了一排又一排桌子的房间而已,我们就带着自己的笔记本,在里面写代码。当时实验课的要求是用C语言写了一个控制台打印的车票管理系统,代码我都保存着的:
那时候根本没有什么版本控制的概念,也不懂什么叫模块拆分,真就像网上有些段子说的一样,一个.c
文件搞定。但至少代码没有什么问题,我现在码字的mac上也能编译出来:
是的,效果就是这么朴实无华。不过这一次的实验课,倒是让我对编程的概念有了更加进一步的认识,同时对于编程的基本功也有了提升。
大二的时候,开始接触到了数据结构这门课程。一开始我很茫然,怎么也无法get到什么是数据结构。那个时候我一直觉得数据结构就是一个实实在在的,存在于C语言里面的,某个模块。要用数据结构,就要在C语言里面编程使用。直到大概学到了一半的时候,我才慢热地知道了它是一种思想概念。这个时候接触到的栈、队列、树、图等数据结构,在今天的我看来意义重大(废话),不过那个时候我还是学生思想,知道是什么,大概知道怎么写就行,只有作业需要的时候才会用,平常编写代码就是数组走天下,程序一开始就是用宏定义常量,然后申请数组空间,巴拉巴拉开始写代码。
突然想起,这一阶段还有一个很重要的内容就是开始学习C++了。这个时候我们开始接触OOP(面向对象编程),不过一开始也是让我摸不着头脑。什么”类包含数据和行为“,什么“一只狗有四条腿”,什么“狗继承自动物这个类“,什么”类的实例化“等等,现在想起来也是有趣。
再到大三软件工程这门课的时候,期末作业是要求我们按照软件工程瀑布模式完整的做一个项目。我和另一位同学一拍即合,决定搞一个游戏出来。但那时的我们还完全不懂什么游戏引擎,想来想去决定使用Qt5来做一款类似于劲舞团的赛马游戏(具体怎么玩后面会讲)。虽然现在想起来真的太难绷了,但那时我们一整个学期做这个项目的时候,干的非常开心。
我当时的工作主要有两个:
- 逻辑代码
- 画UI
这个项目做完,我基本掌握了PhotoShop的使用(哈哈哈哈)。幸运的是,这款“游戏”的源代码,原始的素材物料都得以保存:
没有AI的年代,“古法手工”的马儿外形:
2016年(9年前)的赛马游戏源代码:
讲了这么多的,这个东西到底怎么玩呢?别着急,作为“专业”的团队,我们特意还做了一段宣传片:
另外,这款游戏实际上是可以与其他人对战的。原理就是将玩家A的每秒的操作并记录下来,玩家B在“挑战”玩家A时,就是直接把玩家A的数据放到内存播放出来,玩家B就能与之对战了,现在想来也是有趣。还有一个值得吐槽的点就是源代码没有封装的概念,只要涉及到数据库查询的地方,都完整的编写一段数据库建立连接、创建Sql读写的逻辑,很是原始。话说,这玩意儿当时还在某通动力的软件大赛上拿了个一等奖,也是比较魔幻了。
关于大学的事儿,就暂时想到了这些,还有什么要分享的,等有时间了再更新吧。
附录
上面提到的项目,我也传到了Github上,仅做纪念: