五子棋@iPad

这个事情是这样的…

昨天考完mid-term,虽然UROP依然前途未卜,但还是决定找个时间来做点自己的事情,晚上本想找个五子棋游戏在Mac/iPad上玩玩,结果各种不给力,那个Master of Gomuku就是长的还算好看,最强的expert level只需要9步就可以搞定,某个据说是升级AI后的版本还要2美元…于是我决定自己做一个好了。

先是发现了这个举办五子棋比赛的网站,然后又看到了一个Gomuku.app,用Objective c写的,对Linux和Mac在GNUStep下兼容,看起来很赞,结果Macports安装GNUStep失败,又悲剧了,看了下源代码,觉得应该比较容易移植到iPad上去,而且iPad上玩明显更有意思,于是把代码放在opengrok里面学习了一下,里面使用大量NS系的API,和iOS不是很兼容,于是map了一下

  • NSMatrix用NSArray代替,原来原生的UI layer用熟悉的UIImageView代替了,添加了Cell class
  • 保持了原有的design pattern,大致是Controller->MainBoard Controller + View  <-> Board (AI)
  • 用tap gesture代替了鼠标点击
  • 删除了所有NSWindow相关的代码,用UIView换掉
  • 用UIViewTable做了那个level selector,中间穿插Controller的delegate
  • 增加了原先app没有的计分功能-但计分对游戏等级不加区分,用NSTimer更新比分
  • 没有修改AI
  • 固定了棋盘大小为13 \times 13
  • 取消了对多语言的支持,需要研究下internalization API
  • 整个过程几乎都可以在simulator上搞定,只是最后我在iPad上测试了一下

时间是这样花掉的….

  • 看源码1小时
  • 堆代码+Hack 6小时
  • 吃东西1.5小时..
  • 测试 1小时

最悲剧的时刻

我写了一段时间后尝试着去编译,300++个错误…一半是因为#include和#import的混用,另一半基本上是NS系API的不兼容。

结果

成品如下图,虽然那个AI依然不强,我觉得可以慢慢花点时间提高一下,说不定能做出来个machine learning based的AI,这样就可以实现对gamer的customization

开发体验

iOS的开发体验很赞,尤其是想到以后Lions上可以跑iOS程序,大量UI方面的API用起来得心应手。

很多人说iPad 2没有新意,其实很多本质上的提高不是几倍提速能说清楚的,虽然我还是认为Mac OS只适合程序员和有艺术(摄影,音乐等)需求的人使用,但苹果的确加速了post-PC的时代,当每个程序员都喜欢Mac的时候,Microsoft必须紧张。

争取把代码整理一下然后把源码放出来,毕竟是被GNU licensed。

话说又看见乔帮主了,他的部下们个个都是超短的板寸头,看起来很精神的样子,似乎只要换上6mm的模具我就能实现同样的效果…

假如有兴趣看代码什么的

在labs里面做了一个页面,访问这里,欢迎合作提高AI或者UI

Published by

zc

National University of Singapore, Comp Science

2 thoughts on “五子棋@iPad”

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>