Java象棋人机对弈程序

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java象棋人机对弈程序

——源代码和系统说明文档

一、系统功能

人机对弈,鼠标操作。

二、系统界面

界面用到的棋子如下:

棋盘:

需要保存为gif文件。

三、源代码

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.*;

import java.io.*;

//主类

public class Chess

{

public static void main(String args[])

{

new ChessMainFrame("象棋");

}

}

//主框架类

class ChessMainFrame extends JFrame implements ActionListener,MouseListener,Runnable {

//玩家

JLabel play[] = new JLabel[32];

//棋盘

JLabel image;

//窗格

Container con;

//工具栏

JToolBar jmain;

//重新开始

JButton anew;

//悔棋

JButton repent;

//打开

JButton showOpen;

//保存

JButton showSave;

//退出

JButton exit;

//当前信息

JLabel text;

//保存当前操作

Vector FileVar;

Vector Var;

//规则类对象(使于调用方法)

ChessRule rule;

/*单击棋子**********************************/

/*chessManClick = true 闪烁棋子并给线程响应*/

/*chessManClick = false 吃棋子停止闪烁并给线程响应*/

boolean chessManClick;

/*控制玩家走棋****************************/

/*chessPlayClick=1 黑棋走棋*/

/*chessPlayClick=2 红棋走棋默认红棋*/

/*chessPlayClick=3 双方都不能走棋*/

int chessPlayClick=2;

//控制棋子闪烁的线程

Thread tmain;

//把第一次的单击棋子给线程响应

static int Man,i;

ChessMainFrame(){}

ChessMainFrame(String Title)

{

//获行客格引用

con = this.getContentPane();

con.setLayout(null);

//实例化规则类

rule = new ChessRule();

FileVar = new Vector();

Var = new Vector();

//创建工具栏

jmain = new JToolBar();

text = new JLabel(" 热烈欢迎");

text.setToolTipText("提示信息");

anew = new JButton(" 新游戏" );

anew.setToolTipText("重新开始新的一局");

exit = new JButton(" 退出");

exit.setToolTipText("退出本程序");

repent = new JButton(" 悔棋");

repent.setToolTipText("返回到上次走棋的位置");

showOpen = new JButton("打开");

showOpen.setToolTipText("打开以前棋局");

showSave = new JButton("保存");

showSave.setToolTipText("保存当前棋局");

//把组件添加到工具栏

jmain.setLayout(new GridLayout(0,6));

jmain.add(anew);

jmain.add(repent);

jmain.add(showOpen);

jmain.add(showSave);

jmain.add(exit);

jmain.add(text);

jmain.setBounds(0,500,450,30);

con.add(jmain);

//添加棋子标签

drawChessMan();

/*注册监听者*/

//注册按扭监听

anew.addActionListener(this);

repent.addActionListener(this);

exit.addActionListener(this);

showOpen.addActionListener(this);

showSave.addActionListener(this);

//注册棋子移动监听

for (int i=0;i<32;i++)

{

con.add(play[i]);

play[i].addMouseListener(this);

}

//添加棋盘标签

con.add(image = new JLabel(new ImageIcon("CChess.GIF")));

image.setBounds(0,0,445,498);

image.addMouseListener(this);

//注册窗体关闭监听

this.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent we)

{

System.exit(0);

}

});

//窗体居中

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

Dimension frameSize = this.getSize();

if (frameSize.height > screenSize.height)

{

frameSize.height = screenSize.height;

}

if (frameSize.width > screenSize.width)

{

frameSize.width = screenSize.width;

}

this.setLocation((screenSize.width - frameSize.width) / 2 - 200 ,(screenSize.height - frameSize.height ) / 2 - 290);

this.setIconImage(new ImageIcon("相1.gif").getImage());

this.setResizable(false);

this.setTitle(Title);

this.setSize(450,555);

this.show();

}

/*添加棋子方法************/

public void drawChessMan()

{

//流程控制

int i,k;

//图标

Icon in;

//黑色棋子

//车

相关文档
最新文档