我眼中的五子棋游戏开发

这是我在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版本,以后我会逐步完善,增强它的体验感和趣味性。听说加订阅的人颜值都很高~



  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值