中国象棋课设项目 01(中国象棋课设有感)

由于期末考试,鸽了这么久的数据结构,承蒙大家厚爱,接下来这个系列会讲解我Java课设有感和关于多线程开发内容

本节重点:

1.完成象棋的主界面显示和初始棋盘内容

声明:

以下内容仅供学习,如有侵权,联系作者删除。

本人在Java多线程领域属于萌新,所以课设是参考了视频中项目,也是我学习Java的重要一环

参考视频出处:手把手2000行代码完成Java象棋对弈系统1--界面显示_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Ct4y1q7mo?spm_id_from=333.1007.top_right_bar_window_default_collection.content.click&vd_source=4b715aa54ae1ea1f411de9964f09bdd5

多线程调用
先建一个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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值