代码改变世界

写一个游戏

2013-01-28 13:58 onm 阅读(...) 评论(...) 编辑 收藏

大学以前玩了很多电脑游戏,花费了不少时间。之后就没怎么玩游戏。以前更没有想过制作游戏,大一那年学了C语言,第一个课程设计恰好是个游戏——打砖块。感觉写游戏比较难,而且这个游戏还属于即时类的,意思是说游戏程序在“无时无刻”的计算和绘制。这个程序当时花费了我不少时间,折腾了一个月才搞定。

现在写了一个Android版本,功能可能没原来的多,时间总共只用了几个小时,而且这里面的很长时间花在了数学和物理知识上,比如正弦余弦函数的性质,动量守恒定律等等。新的游戏程序保留了原来的配色,交互上使用了移动设备特有的加速传感器来控制移动下方挡板。

Linus说“Talk is cheap. Show me the code.”。(其实我是主要觉得没啥写的)

代码地址在这里:https://github.com/qhm123/hitblocks

代码写的可能并不漂亮。代码结构是依照android自带的lunar那个游戏的结构安排的。

写完后还看了一下以前用C写的那个代码,想想当时的水平,觉得写的还成。当时还隐约的分了mvc三层架构,有做动态适应屏幕尺寸等,代码对齐也比较良好。多亏了那时有大神指导我。缺点是看到不少重复代码,变量和函数命名有的不是特别好。

最后记录几个细节:

游戏View用的是SurfaceView,这个可以在工作线程中更新canvas然后一次绘制出来。mSurfaceHolder.lockCanvas(null);mSurfaceHolder.unlockCanvasAndPost(c);。

工作线程通过handler给主线程发送消息。

可以通过Region做一些碰撞检测。

Sensor传感器使用SensorManager.SENSOR_DELAY_GAME参数。

 

最后,写一个游戏。