javaswing,JAVA中国象棋网上对弈

javaswing,JAVA中国象棋网上对弈(航院)
1  系统设计
本系统是用JAVA语言编写的一个实现中国象棋网上对弈的游戏软件,玩家可以应用本软件进行中国象棋的网上人与人对战。联网的功能是通过Socket技术实现的,象棋的走子和吃子规则主要是通过坐标判断。按照要求系统可以实现新游戏、悔棋、联网对战、信息提示等功能。在开发本系统的过程中,游戏界面参考了许多中国象棋游戏的界面风格,每个游戏按钮的设置是经过向很多朋友、同学请教后才最终确定位置的。走子时会利用线程控制棋子闪烁和提示信息,而鼠标点击的响应范围也是符合人们习惯。基本符合成品网络游戏的要求。

 代码已经上传github,下载地址https://github.com/21503882/chess

javaswing,JAVA中国象棋网上对弈_第1张图片

javaswing,JAVA中国象棋网上对弈_第2张图片

javaswing,JAVA中国象棋网上对弈_第3张图片


1.1 功能描述
本程序中,利用JAVA实现了一个中国象棋对弈的软件,它主要包括如下功能:
⑴.连接计算机。通过输入IP地址可以连接到另一台计算机进行游戏。
⑵.象棋对弈。首先红方走棋,然后黑方走棋,直到一方获胜。
⑶.新游戏。任何时候都可以重新开始一盘新的对弈。
⑷.悔棋。当走错的时候可以不限步数的悔棋。
⑸.信息提示。提示当前信息状态。
1.2 理论基础
1.2.1 中国象棋简介
中国象棋的棋盘是方型的,棋盘的中间有一条“界河”,把对垒的双方隔在两边。两边画有交叉线的地方共有90个交叉点,棋子就摆在这些交叉点上。中国象棋共有32枚棋子,分为黑红两组,下棋的双方各用一组,每组各有一帅(将)、两士(仕)、两相(象)、两马、两车、两炮、五兵(卒)。两人对局时,按照规定的位置将各自的棋子摆好,按照“红先黑后”的原则,红方先走,然后轮流下棋子。各种棋子走法不同,最后把对方将死为胜,不分胜负则为和棋。
1.2.2 中国象棋走子规则
⑴.帅(将)每一次只允许走一步,前进、后退、横走都可以,但不能走出“九宫”。
⑵.士每一次只许沿“九宫”斜线走一步,可进可退。
⑶.相(象)不能越过“河界”,每一次斜走两格,可进可退,即俗称“相(象)走田字”。当田字中民有别的棋子时,俗称“塞相(象)眼”,则不可以走过去。
⑷.马每次走一直(或一横)一斜,可进可退,俗称“马走日字”,如果在要去的方向上有别的棋子挡住。俗称“蹩马腿”,则不许走过去。
⑸.车每一次可直进、直退、横走、不限步数。
⑹.炮在不吃子的时候,走法同车一样。
⑺.兵(率)在没有过“河界”前,每次只许向前直走一步,过“河界”后每次可向前直走或横走一步,但不能后退。
1.2.3 国象棋吃子规则
在走棋时,如果棋子能够走到的位置有棋子存在,且该棋子为对方棋子时,就可以把对方棋子吃掉而占领那个位置。只有炮在吃子时必须隔一个棋子(隔的棋子无论是哪一方的都可以)跳吃,即俗称“炮打隔子”。
除帅(将)外其它棋子都可以听任对方吃,或主动送吃。吃子的一方,必须立即把被吃的棋子从棋盘上拿走。如果帅(将)被吃掉则本局游戏结束。
1.3 总体设计
中国象棋对弈系统的程序由文件Chess.java和Competitor.java实现。Chess.java主要包括两个类:一个是被定义为public类型的类,名为Chess,主要负责中国象棋对弈程序的执行;另一个类名为ChessMainFrame,是程序的主框架类。程序中Chess类通过生成ChessMainFrame类的对象来执行程序。Competitor.java包括一个被定义为public类型的Competitor线程类,主要是接收对方机器发过来的数据,并模拟实现和对方机器同步的棋盘功能。
ChessMainFrame类主要包括四个模块:生成图形用户界面模块、完成按钮的操作模块、棋子的操作模块、棋子的移动规则模块。其中棋子的移动规则被定义为内部类,名为ChessRule。ChessRule类中的方法用于定义各个棋子的移动规则和吃子规则。
1.4 详细设计
1.4.1 图形用户界面模块
图形用户界面是ChessMainFrame类中的基本模块,它的主要作用是:定义该类中所使用的变量和实例对象、通过构造函数初始化图形用户界面、添加组件和棋子、注册组件事件。
 


图1.1 程序主界面
棋盘界面大小为550*613的棋盘,棋盘左上角的坐标为(0,0),右下角坐标为(550,613),棋盘每个棋格的间距为57,每个棋子的大小范围为55*55的标签,棋子的鼠标响应范围大致为直径为55的圆。
棋盘中的32个棋子都有相应的编号,分别为:
黑车:0,1                     红车:2,3
黑马:4,5                     红马:6,7
黑象:8,9                     红相:10,11
黑士:12,13                   红仕:14,15
黑卒:16,17,18,19,20       红兵:21,22,23,24,25
黑炮:26,27                   红炮:28,29
黑将:30                       红帅:31
1.4.2 按钮的操作模块
程序中有四个按钮,分别为:【连接计算机】按钮、【新游戏】按钮、【悔棋】按钮、【退出】按钮。
1.输入IP地址:
当单击【连接计算机】按钮时,出现一个对话框提示【请输入IP地址:】,可以通过输入IP地址连接到另一台计算机;
 
图1.2 提示输入IP地址对话框
2.IP地址
IP地址分三类:
①.A类IP地址:
一个A类IP地址是指,在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。A类IP地址中网络的标识长度为7位,主机标识的长度为24位,A类网络地址数量较少,可以用于主机数达1600多万台的大型网络。
②.B类IP地址:
一个B类IP地址是指,在IP地址的四段号码中,前两段号码为网络号码,剩下的两段号码为本地计算机的号码。如果用二进制表示IP地址的话,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”。B类IP地址中网络的标识长度为14位,主机标识的长度为16位,B类网络地址适用于中等规模的网络,每个网络所能容纳的计算机数为6万多台。
③.C类IP地址:
一个C类IP地址是指,在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码。如果用二进制表示IP地址的话,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”。C类IP地址中网络的标识长度为21位,主机标识的长度为8位,C类网络地址数量较多,适用于小规模的局域网络,每个网络最多只能包含254台计算机。
除了上面三种类型的IP地址外,还有几种特殊类型的IP地址,TCP/IP协议规定,凡IP地址中的第一个字节以“lll0”开始的地址都叫多点广播地址。因此,任何第一个字节大于223小于240的IP地址是多点广播地址;IP地址中的每一个字节都为0的地址(“0.0.0.0”)对应于当前主机;IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址;IP地址中凡是以“llll0”(240之后)的地址都留着将来作为特殊用途使用;IP地址中不能以十进制“127”作为开头,27.1.1.1用于回路测试,同时网络ID的第一个6位组也不能全置为“0”,全“0”表示本地网络。因此,能用的IP地址范围为:第一段在0—223之间,其它三段都是在0—255之间。
3.判断IP地址:
用户输入IP地址后,系统会自动检测用户输入的IP地址是否在合理的范围之内,如果不在合理的范围之内会弹出对话框“IP地址输入错误,请重新输入”,之后会重新显示输入对话框,用户重新输入直到输入的IP地址在合理的范围之内或用户放弃输入为止。
 
图1.3 输入错误的提示
 
图1.4 连接成功本机的提示
 
图1.5 连接成功对方机器的提示
当单击【新游戏】按钮时,程序重新布置棋子,并将保存当前操作的Vector清空;如果是处于联网状态时还会断开网络。
 
图1.6 断开网络提示信息
当单击【悔棋】按钮时,调用Vector中的数据进行悔棋操作;当单击【退出】按钮时,程序会询问是否退出,选【是】则退出对弈。
 
图1.7 退出游戏提示信息
4.当鼠标划过各按钮时会出现提示信息。
具体如图3.8:
 
图1.8 当鼠标放在或划过【连接计算机】按钮时提示“输入IP地址可以连接到另一台计算机”
 
图1.9 当鼠标放在或划过【新游戏】按钮时提示“重新开始新的一局”
 
图1.10 当鼠标放在或划过【悔棋】按钮时提示“返回到上次走棋的位置”

 代码已经上传github,下载地址https://github.com/21503882/chess

 
图1.11 当鼠标放在或划过【退出】按钮时提示“退出象棋程序”

你可能感兴趣的:(javaswing,JAVA中国象棋网上对弈)