我眼中的五子棋游戏开发

来源:互联网 发布:ip camera 软件下载 编辑:程序博客网 时间:2024/05/02 14:01

这是我在51CTO的第一篇博客,刚好最近用java开发了五子棋游戏,现将开发过程以及感想总结记录于CSDN,如果真的有人看到了这篇博客,希望里面的内容能够帮到你。

首先是原型设计,先看图看图,见下图

 

设计图如下

 

话说就这个原型+设计图也是折腾了我一下午。

解释一下我眼中的五子棋游戏。在开发之前,我一直再思考,现在传统的五子棋游戏还有没有改进玩法的可能性,从而让它变得更加有趣呢?我首先给了自己肯定的答案,然后每天开脑洞,终于想到了在游戏中增加“让子”操作,于是大腿一拍,马上开始开发。

所谓的“让子”操作就是当前玩家回合中,该玩家选择不下子而让对方玩家下子,即打破黑白子的数量平衡,这将是我眼中的五子棋的核心玩法。

原型有了,设计图也ok了,接下来就是逻辑流程图+技术实现了。

部分逻辑图如下(流程太长,只截取部分)




相关类、实体如下



其中关键的棋盘数据采用二维数组进行建模,所有的逻辑操作的实现均转换成对二维数组的处理。

下面是关键代码的张贴,判定输赢的逻辑代码如下

/** * 判断游戏是否结束 */public int isOver() {int tmp = NONE;// 记录棋子for (int i = 0; i < this.size; i++) {for (int j = 0; j < this.size; j++) {tmp = gobang[i][j];if (tmp != NONE) {// 判断斜上方if (i >= 4 && j <= this.size - 5) {for (int k = 1; k <= 4; k++) {if (tmp != gobang[i - k][j + k]) {break;}if (k == 4) {// 判断是哪一方赢了if (tmp == BLACK)return BLACK_WIN;if (tmp == WHITE)return WHITE_WIN;}}}// 判断斜下方if (i <= this.size - 5 && j <= this.size - 5) {for (int k = 1; k <= 4; k++) {if (tmp != gobang[i + k][j + k]) {break;}if (k == 4) {// 判断是哪一方赢了if (tmp == BLACK)return BLACK_WIN;if (tmp == WHITE)return WHITE_WIN;}}}// 判断横向if (j <= this.size - 5) {for (int k = 1; k <= 4; k++) {if (tmp != gobang[i][j + k]) {break;}if (k == 4) {// 判断是哪一方赢了if (tmp == BLACK)return BLACK_WIN;if (tmp == WHITE)return WHITE_WIN;}}}// 判断纵向if (i <= this.size - 5) {for (int k = 1; k <= 4; k++) {if (tmp != gobang[i + k][j]) {break;}if (k == 4) {// 判断是哪一方赢了if (tmp == BLACK)return BLACK_WIN;if (tmp == WHITE)return WHITE_WIN;}}}}}}return NOT_OVER;}

服务器和客户端的采用socket进行通信,服务器会和每个玩家建立专门的线程进行通信,客户端在正式进入游戏之前需要用户输入用户名进行登录,本程序中输入任意用户名即可(只要不与另外一个玩家重复),登录完成后等待另外一个玩家登录后即可进入游戏。

整个开发完成之后的效果如下图

源码点击下面的链接:

http://download.csdn.net/download/pulan_peng/9771289

这是不考虑商业化,仅在兴趣下完成的开发。目前为1.0版本,以后我会逐步完善,增强它的体验感和趣味性。听说加订阅的人颜值都很高~



0 0
原创粉丝点击