admin管理员组文章数量:1516870
网络版五子棋程序的开发
前言
这是小的一个五子棋联网对战的小程序,可以实行网络对战。
我们的开发过程是了解五子棋的运行原理,然后开发网络部分进行实现。
开发工具
开发语言:Java
开发工具:Eclipse Neon
开发平台:Windows 10 Professional
运行测试平台:Windows 10 Professional
功能需求
本游戏是基于五子棋规则的应用程序,需要实现联网对战的功能。详细功能需求如下所示:
1. 可以登录局域网中的服务器,同步当前的玩家列表。
2. 可以在玩家列表中自由选择玩家进行挑战。
3. 双方可以通过局域网进行对战,判断先手和后手,以及游戏的胜利。
4. 可以在下棋的同时和对方进行文本的聊天。
5. 可以在下棋的过程中进行逃跑。
通信模型
本项目包括两个部分,服务器和客户端,都提供界面操作方式。客户端包含三个主要的模块:玩家列表、游戏操作区和消息区;服务器包括两个主要的模块:玩家列表和服务器消息区。
功能描述
(1)客户端部分:
玩家列表将会在用户登录服务器的时候进行更新,提供双击和下方按钮两种方式进行玩家的选择和对战。游戏区是主要的操作区,在连接玩家之后可以进行下棋游玩操作;消息区可以在连接玩家之后发送和接收消息。
(2)服务端部分:
玩家列表同步上线的玩家,服务端会检查玩家的状态,对于正在对战的玩家将会忽略,消息列表即时显示服务器的消息。
设计步骤
- 绘制棋盘和棋子
- 将鼠标移动的坐标规范化
- 点击具体的位置可以出现当前的棋子,黑白交替,点击的位置需要转换到棋盘矩阵中去,同时棋盘矩阵中的棋子也要转换为实际的坐标画到棋盘中去
- 胜利规则的判定
- 协议设计
- 客户端设计
- 服务端设计
Java 绘图记录
- 绘图需要绘制在Panel上,需要自己写一个类继承Panel,然后重写它的paint方法。
- drawRec画矩形。
- drawArc绘制圆形。
- paint方法使用传进的Graphic参数进行绘制。
- repaint方法是用来重绘面板上的图案的,实际上,repaint执行的时候,paint方法会再次执行一次,因此我们将需要绘制的语句写到paint中即可。
- Ellipse方法用于绘制实心的圆形。
组件使用
- Jlist中的构造函数中有个参数是DefaultListModel,我们使用DefaultListModel中的各种函数完成Jlist的操作。
- ScrollPane添加一个JList可以在初始化的时候将其作为一个参数,或者使用
setViewportView(Jlist)方法添加这个Jlist。 - 对话框的使用:
JOptionPane.showConfirmDialog(null,"You Win!", "Winner",JOptionPane.DEFAULT_OPTION,JOptionPane.DEFAULT_OPTION); setFixedCellWidth()JScrollPane的这个方法可以固定一行的长度,不会随着一行内容的多少而改变。- 实例化
JTextField()的时候参数就是这个文本域的大小,同样可以用来固定宽度,不会随着界面大小而改变。 - 界面整体布局可以采用BorderLayout,分开进行设计和搭配,思路清晰,而且不用固定大小设计比较简单。
设计方法
- 单例模式,然后将类的方法设计成为public用于实例返回。
- 如果一个UI组件比较难以操作,我们可以将其放到一个类当中,提供一系列的方法,可以设置其成为工具类。
- PrintStream非常便于设计协议,可以用作输出流,BufferedReader可以用于读取协议内容。
- 出现IOException则是玩家下线带来的读取inputstream异常,根据这个我们可以判定
- 如果一个对象通信的时候只有一个实例,可以将它的输入输出流进行封装,成为工具类,用单例模式进行操作。
Demo
- 这是客户端的演示效果:
- 这是服务器的演示效果:
开源地址
本项目的开源地址:
Reference
- CSDN五子棋程序
- 用JAVA实现五子棋网络对战系统
- Java实现联机五子棋
- 联网版五子棋
- 坦克大战JAVA实现
- JAVA绘图
- BeautyEye框架使用
- Eclipse导入
本文标签: 网络版五子棋程序的开发
版权声明:本文标题:网络版五子棋程序的开发 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/web/1687416733a100166.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论