import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.net.*;
import java.io.*;
public class ChessWZQ extends JFrame
{
JPanel contentPane;
BorderLayout borderLayout1 = new BorderLayout();
protected Image white = null;
protected Image black = null;
protected static int pColor; // 人的颜色
protected static int cColor; //电脑的颜色
static boolean ptocFlag=false;
boolean pFirst = false;
private int bestX=0; // 电脑找到最好的棋子位置的 X坐标
private int bestY=0; // 电脑找到最好的棋子位置的Y坐标
private int RectX1=0; // 根据坐标 (x,y)确定矩形范围
private int RectY1=0; // 长度为 9
private int RectX2=0; // 大小为 9*9
private int RectY2=0;
private int weightBoard[][];
static Socket socket;
private static int PORT;
static ObjectInputStream in;
static ObjectOutputStream out;
String name=null ;
String serverAddress=null;
static char send[];
public static Message message = new Message();
public static boolean beginFlag = false;
BoardPanel bpanel = new BoardPanel();
JPanel jpanel3 = new JPanel();
JLabel label1 = new JLabel("Player1");
JLabel label2 = new JLabel(" VS ");
JLabel label3 = new JLabel("Player2");
JLabel label4 = new JLabel("Player List ");
JLabel label5 = new JLabel("Message list... ");
static JLabel label6 = new JLabel("welcome");
JLabel label7 = new JLabel("Host");
JLabel label8 = new JLabel("Player");
JRadioButton jrbBlack = new JRadioButton("Black");
JRadioButton jrbWhite = new JRadioButton("White");
DefaultListModel lItems = new DefaultListModel();
JList list = new JList(lItems);
JMenuBar mb = new JMenuBar();
JMenu create = new JMenu("Create");
JMenu setting = new JMenu("Setting");
JMenu quit = new JMenu("Quit");
JMenu about = new JMenu("About");
JMenuItem cPtoP = new JMenuItem("Play With people");
JMenuItem cPtoC = new JMenuItem("Play With Computer");
JMenuItem load = new JMenuItem("Load game...");
JMenuItem save = new JMenuItem("Save ...");
// JMenuItem sLimited = new JMenuItem("禁止禁手");
// JMenuItem sNoLimited = new JMenuItem("允许禁手");
public ChessWZQ()
{
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
getContentPane().setLayout(null);
weightBoard = new int [15][15]; // 保存每个位置的重要性
PORT = Server.PORT;//设置套接字端口
send = new char[60];
try {
jbInit();
}
catch(Exception e)
{
e.printStackTrace();
}
try {
getContentPane().setLayout(null);
jrbBlack.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
bpanel.setColor(1);
cColor=2;
jrbBlack.setEnabled(false);
jrbWhite.setEnabled(false);
drawChess(1);
jrbWhite.setSelected(true);
if(ptocFlag==true)
{
return;
}
Message ms = new Message();
ms.color=1;
ms.type=13;
try{
out.writeObject(ms);
}
catch(IOException error)
{
error.printStackTrace();
}
}
});
jrbWhite.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
bpanel.setColor(2);
cColor=1;
jrbWhite.setEnabled(false);
jrbBlack.setEnabled(false);
drawChess(2);
jrbBlack.setSelected(false);
if(ptocFlag==true)
{
return;
}
Message ms = new Message();
ms.color=2;
ms.type=13;
try{
out.writeObject(ms);
}
catch(IOException error)
{
error.printStackTrace();
}
}
});
about.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
JOptionPane.showMessageDialog(null,
"Author: Kahn \nCopyright (c) 2007-CUIT \nMail:zhao4824593@163.com",
"五子棋1.0(beta)",JOptionPane.INFORMATION_MESSAGE);
}
});
quit.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
int flag=JOptionPane.showConfirmDialog(null,
"Quit the Program ?",
"Are you sure to quit ?",
JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
if(flag==0)
{ //确定
// 断开和服务端的连接
sendDisconnect();
System.exit(0);
}
}
});
setting.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
Object selection[] = {"Forbiden","Allow any"};
Object set = JOptionPane.showInputDialog(null,
"Setting...","would you allow any method?",
JOptionPane.QUESTION_MESSAGE,null,selection,selection[0]);
if(ptocFlag==true)
{
return;
}
Message ms = new Message();
if(set==null)
{
return;
}
if(set.toString().equals(selection[0]))
{
ms.setting=false;
}
else{
ms.setting=true;
}
//System.out.println("setting begin..."+msg.setting);
ms.type=12;
try{
out.writeObject(ms);
}
catch(IOException error)
{
error.printStackTrace();
}
}
});
cPtoP.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
ptocFlag=false;
JOptionPane.showMessageDialog(null,
"You can choose a player from the listBox on the right","Welcome...",
JOptionPane.INFORMATION_MESSAGE);
}
});
cPtoC.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(ptocFlag==true)
{
int flag=JOptionPane.showConfirmDialog(null,
"You give up... ?","Message",
JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
if(flag==0)
{
newGame();
return;
}
}
label3.setText("Computer");
Object selection[] = {"Computer First","You First"};
Object set = JOptionPane.showInputDialo
没有合适的资源?快使用搜索试试~ 我知道了~
基于Java的五子棋游戏的设计(源代码+论文).zip
共32个文件
class:19个
java:7个
bat:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 13 下载量 165 浏览量
2021-08-12
14:01:50
上传
评论 2
收藏 1.05MB ZIP 举报
温馨提示
基于Java的五子棋游戏的设计(源代码+论文) 摘 要 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为Socket编程应用,客户端和服务器端的交互用Class Message定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高电脑AI方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。 关键词:深度搜索;估值;电脑AI;五子棋;算法
资源推荐
资源详情
资源评论
收起资源包目录
基于Java的五子棋游戏的设计(源代码+论文).zip (32个子文件)
基于Java的五子棋游戏的设计
基于Java的五子棋游戏开题.docx 20KB
程序
赵小龙2.doc 772KB
源代码
Server.class 1KB
Group.class 556B
Group.java 323B
ChessWZQ$6.class 700B
BoardPanel.class 6KB
ChessWZQ$4.class 717B
BoardPanel$Analyse.class 5KB
ChessWZQ$7.class 2KB
Message.java 1KB
client1.bat 29B
ChessWZQ_this_mouseMotionAdapter.class 448B
ChessWZQ$2.class 1KB
Player.class 384B
ServeOneClient.class 7KB
ChessWZQ.java 30KB
ChessWZQ$5.class 1KB
Player.java 388B
ChessWZQ$1.class 1KB
ChessWZQ$8.class 2KB
ChessWZQ$3.class 655B
BoardPanel$Queue.class 362B
ChessWZQ_this_mouseAdapter.class 440B
Message.class 407B
ChessWZQ.class 13KB
BoardPanel.java 25KB
Server.java 1KB
server.bat 11B
client2.bat 29B
ServeOneClient.java 21KB
H_基于Java的五子棋游戏的设计.doc 755KB
共 32 条
- 1
gzxgyzbb
- 粉丝: 227
- 资源: 1036
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页