- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
B.1 五子棋模块概述
B.1.1 模块简介
相信每个人都会五子棋游戏,当游戏的一方构成5个连续的棋子,无论是水平方向、垂直方向,还是斜对角线方向,都表示获胜了。对于初学网络的开发人员来说,设计一个网络五子棋游戏再合适不过了。从规模上看,网络五子棋只需要包含客户端和服务器端两个窗口,规模比较小,而本模块设计的是独立运行的客户端,不需要服务器。从功能上看,网络五子棋涉及两台主机间的通信,相互需要传递棋子信息、控制指令和文本信息,这需要定义一个应用协议来解释数据报,涉及网络开发的许多知识。
B.1.2 程序预览
程序运行以后,首先显示登录界面,这个登录界面使用半透明效果将主窗体遮罩,然后显示登录界面,用户必须输入自己的昵称和对方主机的IP地址才能登录。程序运行效果如图B.1所示。
图B.1 登录联机的程序界面
和对方建立网络连接之后,会进入游戏主窗体。单击开始按钮将开始进行游戏。当自己头像下方有一盒棋子时,就轮到自己下棋,棋子的颜色和自己头像下方棋盒里的棋子颜色相同。游戏主窗体的运行效果如图B.2所示。
图B.2 游戏主窗体效果
当游戏的一方胜利时,程序界面将提示“对方胜利”,并且把对方的5个连线棋子用型号标注,并禁止棋盘的落子行为。程序界面如图B.3所示
图B.3 对方胜利后的效果
当自己一方有5个棋子连成一线时,将提示“你胜利了”的信息,并且将自己一方相连的5个棋子用型号标注。效果如图B.4所示。
图B.4 自己胜利后的界面
游戏的开始、悔棋、和棋、游戏回放等动作,由棋盘下方的控制面板组成,该面板还包含一个“更换背景”按钮可以更换程序界面的背景图片。控制面板如图B.5所示
图B.5 控制按钮界面
B.2 关键技术
B.2.1 实现透明的登录界面
本模块的登录面板实现了透明的效果,并且将登录面板下的主窗体用半透明遮罩效果变暗,而登录界面正常显示,这样,用户的注意力就会放在登录界面上。登录面板的关键效果如图B.6所示。
图B.6 登录界面的背景半透明效果
实现登录界面的关键技术,使用了GlassPane面板,它位于窗体的最顶层,Swing默认该面板为隐藏模式。本模块继承JPanel类编写了登录面板,其中包含登录信息的文本框和“登录”按钮等信息,然后调用JFrame窗体的setGlassPane()方法将该面板设置为GlassPenel玻璃面板。程序关键代码如下。
loginPanel1 = new com.lzw.gobang.LoginPanel(); // 创建登录面板的实例对象
/**
* 主窗体的构造方法
*/
public MainFrame() {
initComponents(); // 初始化窗体界面
setGlassPane(loginPanel1); // 设置登录面板为玻璃面板
loginPanel1.setVisible(true); // 显示登录面板
}
接下来需要重写登录面板的paintComponent()方法绘制登录面板的界面,使用80%透明的矩形填充整个登录面板,这就实现了背景的遮罩,然后调用超类的paintComponent()方法,绘制登录界面,实现登录界面的突出显示。程序关键代码如下。
/**
* 绘制组件界面的方法
* @see javax.swing.JComponent#paintComponent(java.awt.Graphics)
*/
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g; // 获取2D绘图上下文
Composite composite = g2.getComposite(); // 备份合成模式
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
0.8f)); // 设置绘图使用透明合成规则
g2.fillRect(0, 0, getWidth(), getHeight()); // 使用当前颜色填充矩形空间
g2.setComposite(composite); // 恢复原有合成模式
super.paintComponent(g2); // 执行超类的组件绘制方法
}
B.2.2 监控网络连接状态
在进行游戏的过程中,为了防止由于网络故障或某一方掉线使得游戏无法结束、无法重新开始游戏,在网络五子棋模块添加了网络状态测试功能。实现网络状态测试功能比较简单,在建立网络连接后,调用Socket的setOOBInline()方
文档评论(0)