黑白棋网络对平台系统的设计与实现.doc
《黑白棋网络对平台系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《黑白棋网络对平台系统的设计与实现.doc(17页珍藏版)》请在沃文网上搜索。
1、 目录 1、使用手册(用前必看)第2页2、棋盘构画第11页3、棋盘的初始化第11页4、下棋实现第12页5、变子实现第12页6、判断胜负(及交换下棋权)第13页7、数据传输第14页8、聊天功能第15页9、计时功能第15页10、按钮功能.第16页11、登录窗口第17页12、简单大厅第18页13、总结及感悟第19页14、版本笔记第19页 主体内容1, 使用手册(运行前必看)运行Enter程序,进入登录窗口如果密码输入错误,将给以提示:注册过的用户,正确输入用户名及密码后就可以登陆游戏,进入大厅。未注册用户需要点击登录窗口的“注册新用户”按钮,进入注册窗口,完成注册。注册成功后,服务器会给予提示:注册
2、失败,服务器会给与用户提示:成功登陆或成功注册后,玩家进入游戏大厅,左侧显示各个桌位及座位占用情况,右侧设有聊天窗口,大厅内玩家可在此处聊天。用户通过点击座位分别进入不同的房间,运行不同的游戏窗口(执棋者,观看者的窗口都是不同的)玩家:观看者:只有当游戏双方举手后,游戏才会开始,负责点击棋盘会给一下提示:一方举手后,对方提示以下窗口,同意后,游戏开始:游戏过程中,双方交替行棋比赛过程中,一方没处落子,行棋权交还对方,提示:双方均没处落子,游戏结束,判断输赢:行棋过程中,玩家悔棋提示如下:另一方针对对方的要求给出回应:要求悔棋方收到对方答复:只有当自己行棋时可以悔棋,否则给与如下提示:比赛时,每
3、人每步都有时间限制,超时判负:玩家认输时给以提示:玩家收到对方的认输信息:游戏胜负确定后,玩家点击棋盘给以以下提示:比赛过程中,强行退出,给以提示:玩家收到对方退出房间的信息:玩家认输、退出及重新举手开始游戏,棋盘重置:2,棋盘的构画棋盘采用横长方形和竖长方形交叉而构成的8*8网格,每格为50*50像素,之所以用长方形而没有用横线是为了在边上写数字提供方便,效果基本上一样,用两层循环搞定for (int i = 0; i 8; i+) g.drawString(i + , 50 * i + 75, 45);/ 棋盘线的上边的数字for (int j = 0; j 0) m-;if (statu
4、sxxm = 0) statusxxm = 3;Check完后,就得到了能下子的位置,然后通过“下子规则”所描述的即可下子,但是要变色还要用到change方法,change方法的思路与check基本相同,但因为有了前面的铺垫,所以它比较好懂。代码与check也差不多,只是在各自功能的实现方面有所不同,与刚check所示代码方向相同的change代码如下if (yy != 0) if (sta != statusxxyy - 1 & (statusxxyy - 1 = 1)| statusxxyy - 1 = 2) / 上方有子且颜色不一样的int m = yy - 1;while (statu
5、sxxyy - 1 = statusxxm & m 0) / 向上找到一个与本格相同颜色的棋子m-;if (statusxxm = sta) for (int n = yy - 1; n m; n-) / 将符合条件的中间的棋子的状态改为相应棋子所对应的那个statusxxn = sta; / 1或-1,然后在重画中将会实现棋子的变色变子的细节注意代码后面的注释,它会把能够变子的格子的status变为相应的要变为颜色的colorStatus(即上面代码的sta),然后repaint(),即可完成变色,变色实现效果如“下子实现”中的图。6、判断胜负(及交换下棋权)判断胜负就是数一下黑子和白子的个
6、数,谁的多谁就获胜,在“棋盘构画”中提到了两个变量blackCount和whiteCount就是用来统计黑子和白子的个数的,通过对status数组的遍历即可得到数组中等于1和等于2的个数,通过比较大小即可判断谁胜谁负。判断胜负一共分为在以下几种情况时判断:(1)当双方下满所有格子后,必然要用判断胜负,程序中使用win()方法来判断;(2)当其中一方经过check方法检查以后发现没有子可下但棋盘上仍有空余格子没有下时,这时要交换下棋权。有一种情况是这样的,就是交换棋权以后发现另一方也没有子可下,这时按照规矩又要交换棋权,这样换来换来换去就会死循环,因此当发现双方都没有子可下时,这时就可以判断胜负
7、了,有一个变量cont是记录连续交换棋权的个数的,如果连续交换了两次那么它就会随后调用方法bwin()来判断胜负,即使现在还有格子没下完。如果交换了一次棋权,cont+,如果交换后对方能下,那么它就会被置0,重新计数。下面是bwin方法的代码展示。public void bwin() int again = 0;if (blackCount whiteCount)again = JOptionPane.showConfirmDialog(null, 黑棋胜+ (Math.abs(blackCount - whiteCount) + 手 + nt+ 是否进行下一场?);else if (whit
8、eCount blackCount)again = JOptionPane.showConfirmDialog(null, 白棋胜+ (Math.abs(whiteCount - blackCount) + 手 + nt+ 是否进行下一场?);elseagain = JOptionPane.showConfirmDialog(null, 平手 + 是否进行下一场?);if (again = JOptionPane.YES_OPTION) initChess();repaint();if (again = JOptionPane.NO_OPTION) 判断胜负后会弹出一个窗口,选是则进行下一场,
9、调用initChess()重新初始化棋盘,若选择否则没反应,即得重新开一次客户端了。(3)还有一种情况也要判断胜负,因为有计时,所以当时间到了而下棋一方仍然没有下棋时,程序就会自动判断超时一方为败者,然后给超时一方自动退出棋盘。败者点击“确定”之后便会自动退出,即输了!7,数据传输当服务器与客户端建立好连接以后,便可以下棋及聊天了,这里着重介绍下棋的数据传输,聊天的传输将会在下面展开讲述。首先讲述一下数据传输的形式,数据传输的字符串,这里的字符串包括一下一些内容,data(表明时数据)+backChess(判断对方有没有按悔棋键)+两位数的setp(是表面下的第几步,为悔棋所准备)+color
10、Status(该哪种颜色的棋下了)+64位的status数组内容,是具体的棋盘上棋子的信息。通过输出流的dos.writeUTF(str)写到服务器端,服务端的输入流dis.readUTF接收到客户端传来的信息,由于数据对于服务器没有什么用处,所以服务器没有对数据进行处理的必要,直接转发给所接受的所有客户端就可,通过调用前面提到的List中的所有客户端便可以把信息发到所有相关的客户端。客户端也是通过输入流dis.readUTF来读到服务器发送的信息。因为客户端要对接收的信息进行表现,所以要对接收的信息进行处理,在接收信息以后直接处理了,按照传出的格式,对传入的字符串进行拆解,然后用各自的变量储
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 白棋 网络 平台 系统 设计 实现