大三工作室项目 - 五子棋世界(4):贵人与江西省比赛蹭奖
五子棋世界技术的一点声明
细心的同学在看此系列的程序设计篇时,应该会对网络收发包部分的代码产生一个疑问,为什么其中两行代码有这个注释:1
2else if (errno == EAGAIN)//added by Ask u
break; //added by Ask u
如果项目都是你独立完成的,那作者全都是你 Ask u 呀,为什么还要多此一举?
哈哈。当我这几天在看之前的文档时,也有了这个疑问,但瞬间就明白了。以我当时的水准,有些高深代码得以 copy 起家,从技术书或者技术文档里 copy,然后再根据自己的场景做修缮。
另外一个 copy 起家的技术点就是客户端五子棋棋谱的算法,起源于一本 VC 游戏编程的书。
自学
五子棋世界里涉及到很多技术,大家可能会产生一个错觉,感觉我们学校软件工程系的编程教育很先进啊。其实不是的,列下系里开的课就知道了。
开的编程相关课:
- 大一:
- 《数字逻辑与计算机组成原理》
- 《C 语言程序设计》
- 《算法与数据结构》
- 大二:
- 《操作系统原理与技术》
- 《数据库原理与技术》
- 《ASP 程序设计》
- 《Visual Basic 程序设计》
- 《SQL Server 2000 数据库程序设计》
- 《网页制作与网站设计》
- 大三:
- 《VC 程序设计》
- 《计算机网络与通信技术》
- 《Weblogic 系统配置与管理》
- 《软件工程》
- 《SQL Server 2000 应用与开发》
- 《网络与信息安全技术》
- 《Windows 系统配置与管理》
- 《面向对象的设计与分析》
- 大四:
- N/A
以上是从大学成绩表里摘抄的,有些可能是选修课,不去深究了。可以看出,课程偏基础。想深入学 C++、网络编程、Linux 相关开发就得自学。
而自学之前,得先有人给咱们指路,帮咱拓宽视野,咱们这些懵懂的编程入门的学生自己是摸索不出来的。给我指路的是小雨,指的路是专攻 C++,从此我知道了 C++ 界的圣经《C++ Primer》并啃掉。再后来知道了 Linux/UNIX,目标就定成了 Linux C++ 服务器开发。
一个插曲
我先“偷学”了 C++,队长知道后忧伤的跟我说“你有高人指点怎么不跟我说?”然后他马上就去挑选进修语言,最后选择了 Java,理由是 Java 相对来说简单点。当时我还吐槽了这个理由,表示要搞就搞有挑战一点的。
对,他也有一颗躁动的技术心。
江西省学生电子电脑大赛
在我选了对战平台之后,斌哥(之前的博客里以 Cullet 网名出现)选了 IM。这样我们就成了 QQ、QQ Game。
但斌哥一开始下不定决心,怕搞不定网络编程,因为之前没怎么学过。我说“怕什么,搞不定,我帮你搞”。网络高并发方面后来我主要是 Linux 的 Epoll,他选了 Windows 下直接开服务器,所以他研究的是 Windows 的完成端口 IOCP。
当大家的作品基本功能做完的时候,学生们接到了江西省学生电子电脑大赛的选拔通知。
我和斌哥都报名了。我俩都认为,我们的两个作品相对那些 MIS 系统有很大亮点,所以都想在这次赛上有所作为。当时我俩很迅速达成共识,为了进一步加大各自的获奖几率,两个项目都写两个名。
最终我们参赛报名为:
- 五子棋世界,作者三疯、斌哥。
- IM,作者斌哥、三疯。
正憧憬着呢,学院负责这个事情的老师开始初筛各项目。
看斌哥的作品时,老师说不错。到我这时,老师嘀咕“你这个界面有点丑啊”……
当时没反应过来,还年幼嘛,自认为使用的技术很有亮点,内在很美啊,老师怎么关注的是外在美?老师说他回去想想。
斌哥的 IM 在界面上确实比我的好看,他用了第三方的美化界面库。我给老师演示时界面上各种背景都是默认的,就是那个丑不拉几的灰色。前几篇博客里的截图是后来参照 QQ Game 里的配色方案做了简单配色调整,后来我也没有再花时间去像斌哥那样加些美化界面库,我把时间用在调优服务器和游戏逻辑了。
后来真的把我的刷了,理由是同学校同类型的作品只要一个,那当然选好看的。理由是参赛作品太多,评审老师基本只是看看文档里的作品界面截图,并不会去详细开启作品来玩来感叹你作品的技术先进性。
关于评审老师只看截图这个,当时虽然不舒服,但还能理解。但是说我俩作品是同类型,我实在想不明白。难道因为都是网络编程?差很多好不好,一个聊天,一个游戏对战,你能说 QQ 和 QQ Game 是同类型的吗?但没处说理啊,人生就是这样。
蹭到奖了
最终斌哥的 IM 获得了本科组一等奖。我以第二作者的身份也蹭到了这个奖。蹭,是因为我们各自的作品都是独立开发的。他的 IM 项目上,我的贡献仅存在于偶尔帮忙调试个 C++、socket 通信。
不过最终获奖证书是一人一份,而证书里的获奖者写的还挺懂“国情”。斌哥的当然是 斌哥、三疯同学……一等奖
,而我的那份是 三疯、斌哥……一等奖
。
学院也兑现了承诺,获奖的同学会得到学院的奖金。金额好像是每人 400,斌哥当时手头紧,800 就都归他了,我完全没有异议,本来就没出力,而且已经蹭了名了。虽然我也一直缺钱。
比赛官网公布角逐奖项作品时,我心怀不满的马上去看。然后看到网络分类的,越看越替自己不平。他们基本是只能最多两个人局域网对战或者聊天,只能服务器与客户端对战。就是最入门级的网络编程,服务器与客户端 1v1 通信。
贵人小雨
前边提到的技术引路人小雨,在我的技术生涯中,属于一个很重要的启蒙贵人。
当年,作为一颗含苞待放的技术花骨朵,我在积极探寻技术大千世界。左逛技术论坛,右加技术群。最后加了一个南昌技术交流群。此时群里有个叫小雨的刚回南昌创业不久。大二上学期快结束的某日,他在群里展示了他独自开发的播放器和某个更牛逼的 P2P 软件,群友们纷纷点 32 个赞,膜拜的五体投地,我也是膜拜行列之一。
我单密小雨求收徒,人家不答应,客气的说有问题可以交流。就像沙漠深处的探险者看见了一口水井,我如饥似渴的找人“交流”,其实是单方面求指导、求方向、各种求……
所以我从大二下学期之前的寒假就开始了 C++ 之旅,很幸运的先飞了很久……
后来我和斌哥一起去了小雨的公司实习,有点故事在 这篇博客 里。