由于期末考试,鸽了这么久的数据结构,承蒙大家厚爱,接下来这个系列会讲解我Java课设有感和关于多线程开发内容
本节重点:
1.完成象棋的主界面显示和初始棋盘内容
声明:
以下内容仅供学习,如有侵权,联系作者删除。
本人在Java多线程领域属于萌新,所以课设是参考了视频中项目,也是我学习Java的重要一环
多线程调用
先建一个ChessManFrame类用来显示棋子,棋盘,设置动作先行后行以及棋子移动判定,调用多线程
如代码:public class ChessMainFrame extends JFrame implements ActionListener, MouseListener,Runnable
package ChineseChessGame;
//界面以及棋子闪烁显示
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.List;
//设置动作声音,鼠标点击声音
public class ChessMainFrame extends JFrame implements ActionListener, MouseListener,Runnable {
ChessManBehavior play[]=new ChessManBehavior[32];
JLabel image;//显示棋盘
Container con;//定义内容,显示对象
JToolBar jmain;//定义工具栏,显示相应按钮
JButton anew,repent,exit;//定义按钮属性
JLabel text;//定义文本提示框
int chessPlayClick=2;//定义谁先行,1表示黑棋走,2表示红棋走,3表示谁都不能走
boolean chessmanClick;//判断是否点了棋子
Thread tmain;//记录棋子闪烁时的线程
static int Man;//判断点击的棋子是哪个
boolean gameIsOver;
ChessRule chessRule;
List<ChessRegret> regretList;
显示棋子以及棋盘的具体代码
public ChessMainFrame(String title){
con=this.getContentPane();//得到窗口的内容面板
con.setLayout(null);//窗口布局,且设为固定布局
chessRule=new ChessRule();
this.setTitle(title);//标题显示
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);
drawChessMain();
//添加棋子到窗体
for(int i=0;i<32;i++){
con.add(play[i]);
play[i].addMouseListener(this);//每个棋子被鼠标点击都会发生事件,放入鼠标监听器里
}
//背景图像(后添加棋盘,使棋子图层在棋盘上方)
con.add(image=new JLabel(new ImageIcon("image/main.gif")));
//工具栏占30宽度,y从30开始计数
image.setBounds(0,30,558,620);
image.addMouseListener(this);
//获取当前窗体大小
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
//让当前窗体居中
this.setLocation(screenSize.width/2-280,screenSize.height/2-350);
//给程序加个图标
this.setIconImage(new ImageIcon("image/红将.gif").getImage());
this.setResizable(false);
this.setSize(558,676);
this.setVisible(true);
gameIsOver=false;
regretList=new ArrayList<ChessRegret>();
chessRule=new ChessRule();//设置对象
//退出界面
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
System.exit(0);
}
});
//走棋
anew.addActionListener(this);
//悔棋
repent.addActionListener(this);
//退出
exit.addActionListener(this);
}