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的五子棋游戏的设计
共29个文件
class:19个
java:7个
bat:3个
需积分: 0 0 下载量 94 浏览量
2023-05-18
10:32:12
上传
评论
收藏 45KB RAR 举报
温馨提示
其次确定整个程序的结构框架。由于Applet运行速度较慢,如果在加上算法搜索时间,显然不符合程序的设计要求,决定用Java应用程序开发.整个程序的功能实现流程是这样的:网络对战涉及算法较少,所以先实现网络部分,实现基本的棋盘和棋子的类,添加判断胜负条件,这部是基础,也是很重要的,电脑AI也在这些基础上添加上来的。这个题目的2个功能包括2个重要算法,电脑AI和胜负条件,胜负条件运算量不大,有固定的模式。难点是人工智能,可以这样说,人工智能的好坏决定了这个题目的完成深度。所以,大部份时间花在AI算法的研究和改进上,对于算法我掌握的不多,研究了一些国内的五子棋算法,参考了一些游戏设计算法,详细比较各种算法的优缺点,而且参考了现代五子棋比赛的各种规则和技巧,尽量联系实际,努力提高电脑AI。 既然是Java Application,要实现网络对战,故采用C/S模式编写,程序包含7个独立的类文件-ChessWZQ.java、Group.java、Message.java、Player.java、ServerOneClient.java、Server.java、BoardPanel.java。
资源推荐
资源详情
资源评论
收起资源包目录
源代码.rar (29个子文件)
源代码
ChessWZQ$4.class 717B
Server.class 1KB
ChessWZQ$3.class 655B
Message.java 1KB
ChessWZQ.java 30KB
Group.class 556B
ChessWZQ_this_mouseMotionAdapter.class 448B
ChessWZQ_this_mouseAdapter.class 440B
BoardPanel$Queue.class 362B
client1.bat 29B
Player.class 384B
ChessWZQ$8.class 2KB
ServeOneClient.class 7KB
BoardPanel.java 25KB
BoardPanel$Analyse.class 5KB
Group.java 323B
Message.class 407B
ServeOneClient.java 21KB
ChessWZQ$1.class 1KB
ChessWZQ.class 13KB
BoardPanel.class 6KB
Server.java 1KB
client2.bat 29B
ChessWZQ$6.class 700B
ChessWZQ$7.class 2KB
ChessWZQ$2.class 1KB
server.bat 11B
ChessWZQ$5.class 1KB
Player.java 388B
共 29 条
- 1
资源评论
一叶再见知秋
- 粉丝: 3
- 资源: 172
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 时间复杂度与数据结构:算法效率的双重奏
- QT 简易项目 网络调试器(未实现连接唯一性) QT5.12.3环境 C++实现
- YOLOv3网络架构深度解析:关键特性与代码实现
- 2024 CISSP考试大纲(2024年4月15日生效)
- ACOUSTICECHO CANCELLATION WITH THE DUAL-SIGNAL TRANSFORMATION LSTM NETWORK
- 深入解析:动态数据结构与静态数据结构的差异
- YOLOv2:在YOLOv1基础上的飞跃
- imgview图片浏览工具v1.0
- Toony Colors Pro 2 2.2.5的资源
- Java项目:基于SSM框架+Mysql+Jsp实现的药品管理系统(ssm+B/S架构+源码+数据库)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功