Archive

Posts Tagged ‘命题’

种子杯历届命题回顾(一)

October 31st, 2008

      不知不觉种子杯已经办到了第4届了,前面的两届都是自己亲自参与了其中的命题,回头去看的时候总会有许多感慨,命题时的乐趣和艰辛浮现在脑海中,当然也会想起那些总会给我们带来惊喜的参赛者们,其中的许多已经成为了团队的伙伴。细细品味那些日子,会有种很满足的感觉。接下来我们将一起回顾一下种子杯历届比赛的题目和后面的故事。

      06年是我第一次参与种子杯的命题工作,当时负责的人是realdodo(现就职于微软),我和realdodo当时在一个项目组,理所当然的成为了他的助手,如果只是简单的出一道题让参赛者去做未免也太没有意思了,所以realdodo给出的idea是实现一个比赛框架,这个想法直接影响了后面几次的命题。复赛的题目选择了五子棋,五子棋的英文名字叫做renju,我们的项目也被命名为Renju。

      Renju框架的开发人员只有我和realdodo,开发的时间大约为1周的业余时间。这次的开发经历让我受益匪浅。首先dodo提出了一个很奇怪的需求,作为一个框架程序,我们要保证它不能因为参赛者的程序而挂掉,如果我们使用dll的方案,似乎总是有可能会让程序挂掉(现在想起来应该可以用SEH), 所以dodo提出的方案是用隔离的exe,使用pipeline的方式来进行通信,这个和google chrome browser使用的策略比较相似。而我首先要做的就是实现pipeline通信的封装,在那之前我并没有接触过pipeline,自己在window API编程的经验也不多,所以并没有绝对的把握,不过做过以后发现其实也蛮简单的,基本上查查MSDN也就水到渠成了。在那之后对于未知的东西基本上没有了畏惧的心理,而且逐渐掌握了快速学习新知识的方法。而dodo在框架中所使用的各种C++的编程习惯和技术也让我对C++了有更新的认识,从前在书上读到的东西第一次成为了自己的作品。

   最后的框架在匆忙中成型,加上一个cactus以前完成的AI,一切OK。比赛是在南一楼的DSP机房进行的,我一起去现场进行了监赛,比赛的结果比较让人失望,大多数队伍都没能完成一个像样的AI,或许题目的难度太大了一点。不过这次的比赛形式依然让很多人觉得很满意,选手们在参加完比赛以后可以继续研究我们完成的框架程序,并从中受益。

  附上比赛的框架程序

Author: admin Categories: 闲话生活 Tags: ,