图16 游戏主界面
7.1测试进入主界面后工具栏的各功能
进入游戏主界面,在主界面的工具栏中,分别有“悔棋”、”退出”“新游戏”功能按钮。可以点击“退出”结束游戏系统。在游戏过程中点击“悔棋”实现棋子返回上一步的位置。在游戏过程中点击“新游戏”结束当前的游戏,开始新的游戏。
7.2对“车”、“马”、“象”、“士”、“卒”、“炮”、“将”走法的测试
“车”的测试,拖动“车”使其隔棋子或按斜角线走动,结果“车”不能被移动,拖动其按直线在界面范围内上下左右移动,结果可以移动,但中间隔了棋子,其不能被移动。
“马”的测试,拖动“马”使其按上下左右方向在主界面中移动,结果不可能移动“马”。按向左或右走一格,再向上或下走二格时,其中上下左右没有棋子挡着时,可以移动,按向左或右走二格,再向上或下走二格时,其中上下左右没有棋子挡着时,可以移动,中间有棋子时,则移动不了。
“象”、“相”的测试,在主界面范围内,移动象、相向左或右走二格再向上
16
或下行两格(“田”字格),如果在“田”字中间的十字上有棋子,则象或相,移动不了。相反则可以移。拖动“象”、“相”按其它任意方向或方式走,棋子无法移动。
“士”、“仕”的测试,拖动“士”、“仕”“九宫”中斜向走一格,结果可以移动,相反,使其按上下左右移动则不可动,向“九宫”外走则棋子不动。
“炮”的测试,拖动“炮”纵、横行,若在纵、横行中,前方有一个棋子,在这个棋子前方有对方的棋子,则可以行走,吃掉对方的棋子。若纵、横方向没有棋子挡住,则可以纵、横走。拖动“炮”斜着走,则其不可移动。
“将”的测试,拖其在“九宫”中行走,当其不在“九宫”中行走时,将会停在原处,不能移动。在“九宫”中其可以纵、横、斜着行走。
“卒”、“兵”的测试,当其没有过河时,拖其向后、左、右行时,则其停在原处,不能移动,拖其向前行时,其可以移动。当其过的楚河汉界后,可以向前左、右行,当拖其向后行时,棋子无法向后移动。
通过对软件各功能的测试发现,该软件各功能都能实现,性能可靠!
附件:源代码(以上的设计思想是根据下面的代码分析的) import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import java.io.*;
public class Chess{ } class
ChessMainFrame
extends
JFrame
implements
public static void main(String args[]){ }
new ChessMainFrame(\中国象棋:\
ActionListener,MouseListener,Runnable{
17
//玩家
JLabel play[] = new JLabel[32]; //棋盘 JLabel image;
//窗格 Container con; //工具栏 JToolBar jmain; //重新开始 JButton anew; //悔棋 JButton repent; //退出 JButton exit; //当前信息 JLabel text;
//保存当前操作 Vector Var;
//规则类对象(使于调用方法) ChessRule rule; /**
** 单击棋子
** chessManClick = true 闪烁棋子 并给线程响应
** chessManClick = false 吃棋子 停止闪烁 并给线程响应*/
boolean chessManClick;
18
/**
** 控制玩家走棋
** chessPlayClick=1 黑棋走棋
** chessPlayClick=2 红棋走棋 默认红棋 ** chessPlayClick=3 双方都不能走棋 */
int chessPlayClick=2;
//控制棋子闪烁的线程 Thread tmain;
//把第一次的单击棋子给线程响应 static int Man,i;
ChessMainFrame(){ new ChessMainFrame(\中国象棋\
} /**
** 构造函数
** 初始化图形用户界面 */
ChessMainFrame(String Title){ //获行客格引用
con = this.getContentPane(); con.setLayout(null); //实例化规则类 rule = new ChessRule(); Var = new Vector();
19
//创建工具栏
jmain = new JToolBar();
text = new JLabel(\欢迎使用象棋对弈系统\//当鼠标放上显示信息 text.setToolTipText(\信息提示\anew = new JButton(\新 游 戏 \anew.setToolTipText(\重新开始新的一局\exit = new JButton(\退 出 \
exit.setToolTipText(\退出象棋程序程序\repent = new JButton(\悔 棋 \
repent.setToolTipText(\返回到上次走棋的位置\
//把组件添加到工具栏
jmain.setLayout(new GridLayout(0,4)); jmain.add(anew); jmain.add(repent); jmain.add(exit); jmain.add(text);
jmain.setBounds(0,0,558,30); con.add(jmain);
//添加棋子标签 drawChessMan();
//注册按扭监听
anew.addActionListener(this); repent.addActionListener(this); exit.addActionListener(this);
20
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库中国象棋人人对战(4)在线全文阅读。
相关推荐: