Pair Project: RollingChecker 总结

将近两周的结对编程要结束了,在此特发布我们做的游戏:RollingChecker,介绍一下它,并写一些对这次Project的感受

RollingChecker,是一个3D的西洋跳棋,地址在这儿:http://home.ustc.edu.cn/~tdwjl/

帮助文档可以在这儿下载:http://home.ustc.edu.cn/~tdwjl/RollingChecker.pdf

在刚开始准备做这个的时候,我们连对西洋跳棋的规则也不太清楚,相信有很多人也不了解,在这儿介绍一下。西洋跳棋是一种非常简单的棋类游戏,不到5分钟我们就可以把它的规则弄明白:

游戏在和两色相间的棋盘进行,但事实上只用到棋盘一半的格子。两方各在棋盘的一边,将首2或3行(更多也可以)的深色格子放满己方的棋子。

双方轮流行走。“未成王”的棋子只能向左上角或右上角且无人占据的格子斜走一格。吃子时,敌方的棋子必须是在己方棋子的左上角或右上角的格子,而且该敌方棋子的对应的左上角或右上角必须没有棋子。当棋子到底线停下时,它就“成王”,以后可以向后移动。

若一个棋子可以吃棋,它必须吃。棋子可以连吃。即是说,若一只棋子吃过敌方的棋子后,若它的新的位置亦可以吃敌方的另一些棋子,它必须再吃,直到无法再吃为止。

输赢标准:若一个玩家没法行走或所有棋子均被吃去便算输。

大家可以在先在RollingChecker上试一试,每一步游戏界面的上方都有提示语,在实践中很容易就明白上面说的规则是怎么回事。

那么RollingChecker的亮点在什么地方呢?我们总结如下:

1, 自由选择棋盘大小和棋子数目

前面已经介绍,世界上各国西洋跳棋流行的棋盘大小不一,为了克服这个限制,RollingChecker的棋盘可以由用户自己选择,棋子数目也可以自由选择。

 

2, 3D视角,旋转棋盘

 

 

上图为RollingCheker的效果图。 这是一个圆柱形的棋盘,跟传统的2D棋盘最大的不同之处是,棋盘的边缘已经连起来了。尽管如此,游戏规则却没有发生改变,还是那么简单易学。

 

3, 保存棋盘功能。

在很多棋类比赛中,有可能一盘棋的时间是非常长的,这就需要在中间休息的时候保存棋盘,RollingChecker就添加了这样的功能,在下棋阶段,只要点Save键,就可以把现在的棋局保存下来,以后继续时再load即可。

如果大家在玩的过程中发现什么Bug,或者有什么意见,请在下面留言给我们,谢谢!

整个游戏的系统是由两个部分组成的,一部分是用Silverlight做的3D游戏的界面,这部分包括棋盘,棋子的设计,以及保存,重玩,悔棋等功能。为了简单和易玩,又不过多破坏原来西洋跳棋的规则,我们采用的是圆柱形的棋盘,这种棋盘如果展开,就是一个方形棋盘,只是把两边连起来了。 另一部分就是底层的西洋跳棋规则的处理,包括判断是不是必须Jump,能不能连续Jump等情况的判断,这一部分是和传统的西洋跳棋程序一样的。 通过这种跳棋界面和跳棋算法分离的办法,能够使程序更加方便调试,也方便以后在上面开发更多的功能。

在做这个Project的过程中,我们都是学到很多的,在开始的时候,甚至连什么是结对编程都不知道,是上Zou Xin老师的课才清楚,起初对这种新的编程方式半信半疑的,因为以前大部分的工作都是独立做的,就算是合作,也是分工合作。

结对编程的好处在于它可以让两个人对于自己的系统都有充分的了解,以前那种分工合作的模式,很容易出现不知道对方到底做了什么的情况,在结对编程的模式下,就可以比较好的避免这种情况的出现。在结对编程的情况下,两个人能够形成统一的编程规范,能够更加好的完成系统。

以前觉得结对编程的效率不高,因为只有一个人能够在敲代码,后来发现,事实不是这样的。两个人在一起的时候,一个人敲代码,另一个人能够及时发现错误,出现什么问题也能够一起讨论,其实效率更高。两个人一起的时候能够更加全身心的投入,而且互相都能够学到很多东西。总之通过这次结对编程,感觉收益匪浅。

谢谢Zou Xin老师给我们提供的这次机会。

无图无真相:

posted @ 2010-11-28 20:21  ustc_msra_ase  阅读(548)  评论(0编辑  收藏  举报