package ball;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Rectangle;
import javax.swing.BorderFactory;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JScrollPane;
import javax.swing.JEditorPane;
import javax.swing.JSplitPane;
import javax.swing.JOptionPane;
import java.io.InputStream;
import sun.audio.*;
import java.net.URL;
import java.util.Random;
/**
* <p>Title: 类说明</p>
*
* <p>Description: 程序主类</p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: </p>
*
* @author goodboy
* @version 2.1
*/
public class Frame1 extends JFrame {
int size=16; //棋盘大小
int[][] board=new int[size][size]; //棋盘数据 0:无棋子 1:用户棋子 2:AI棋子
int time=0;; //游戏时间
boolean suspend=true; //是否暂停
int aiX, aiY; //AI下子坐标
Random rand=new Random(); //随机数对象
String aiText1, aiText2, aiText3, aiText4, aiText5, aiText6, aiText7, aiText8, aiText9
, aiText10, aiText11, aiText12, aiText13, aiText14, aiText15, aiText16, aiText17
, aiText18, aiText19, aiText20; //AI表情说明文字
//记录棋子的历史位置
ArrayList userLastX=new ArrayList(); //用户棋子横坐标
ArrayList userLastY=new ArrayList(); //用户棋子纵坐标
ArrayList aiLastX=new ArrayList(); //AI棋子横坐标
ArrayList aiLastY=new ArrayList(); //AI棋子纵坐标
ArrayList lastText=new ArrayList(); //AI分析文本信息
int backStep=0; //可以悔棋的步数
String tempText=""; //AI分析的临时文本信息
static int turn=0; //目前下子方
static int winner=0; //游戏结果 1:用户胜 2:AI胜 3:平局
static int userStep=0; //用户行棋步数
static int aiStep=0; //AI行棋步数
static int userFourLine=0; //用户4子成线数
static int aiFourLine=0; //AI4子成线数
static int userThreeLine=0; //用户3子成线数
static int aiThreeLine=0; //AI3子成线数
static int userMultiLine=0; //用户多线成型数
static int aiMultiLine=0; //AI多线成型数
static int forbidStyle=0; //禁手次数
static int regretTime=0; //悔棋次数
static int retroSpeed=1000; //回顾演示的速度
static boolean retroSuspend=true; //回顾演示线程标记
ControlThread thread1=new ControlThread();//控制线程对象
RetroThread thread2=new RetroThread(); //回顾演示线程
UserChess user=new UserChess(); //用户对象
AIChess ai=new AIChess(); //AI对象
AIShow show=new AIShow();//AI分析演示对象
Result result=new Result(); //结果显示对象
Information info=new Information(); //关于信息对象
Rule rule=new Rule(); //规则信息对象
Retrospect retro=new Retrospect(); //回顾演示控制对象
URL url; //资源位置对象
JPanel contentPane;
Canvas canvas = new Canvas();
JPanel jPanel1 = new JPanel();
JMenuBar jMenuBar1 = new JMenuBar();
JMenu jMenu1 = new JMenu();
JMenu jMenu2 = new JMenu();
JMenuItem jMenuItem1 = new JMenuItem();
JMenuItem jMenuItem2 = new JMenuItem();
JMenuItem jMenuItem3 = new JMenuItem();
JMenuItem jMenuItem4 = new JMenuItem();
JScrollPane jScrollPane1 = new JScrollPane();
JEditorPane jEditorPane1 = new JEditorPane();
JScrollPane jScrollPane2 = new JScrollPane();
JEditorPane jEditorPane2 = new JEditorPane();
JMenuItem jMenuItem5 = new JMenuItem();
JMenuItem jMenuItem6 = new JMenuItem();
JSplitPane jSplitPane1 = new JSplitPane();
JMenuItem jMenuItem8 = new JMenuItem();
JMenuItem jMenuItem7 = new JMenuItem();
public Frame1() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
thread1.start();
thread2.start();
} catch (Exception exception) {
exception.printStackTrace();
JOptionPane.showMessageDialog(null, exception.toString(), "程序面板初始化产生异常", JOptionPane.ERROR_MESSAGE);
}
}
/**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(null);
this.setJMenuBar(jMenuBar1);
this.setResizable(false);
setSize(new Dimension(820, 715));
setTitle("java 五子棋 v2.1");
canvas.setBounds(new Rectangle(15, 15, 630, 630));
jPanel1.setBorder(BorderFactory.createEtchedBorder());
jPanel1.setBounds(new Rectangle(660, 30, 135, 601));
jPanel1.setLayout(null);
jMenu1.setText("游戏");
jMenu2.setText("帮助");
jMenuItem1.setToolTipText("程序信息");
jMenuItem1.setText("关于");
jMenuItem1.addActionListener(new Frame1_jMenuItem1_actionAdapter(this));
jMenuItem2.setToolTipText("开始游戏");
jMenuItem2.setText("开始");
jMenuItem2.addActionListener(new Frame1_jMenuItem2_actionAdapter(this));
jMenuItem3.setToolTipText("退出游戏");
jMenuItem3.setText("结束");
jMenuItem3.addActionListener(new Frame1_jMenuItem3_actionAdapter(this));
jMenuItem4.setToolTipText("五子棋的游戏规则");
jMenuItem4.setText("规则");
jMenuItem4.addActionListener(new Frame1_jMenuItem4_actionAdapter(this));
jMenuItem6.setEnabled(false);
jMenuItem6.setToolTipText("恢复到上一步的棋盘状态");
jMenuItem6.setText("悔棋");
jMenuItem6.addActionListener(new Frame1_jMenuItem6_actionAdapter(this));
jSplitPane1.setOrientation(JSplitPane.VERTICAL_SPLIT);
jSplitPane1.setDividerSize(10);
jSplitPane1.setOneTouchExpandable(true);
jSplitPane1.setBounds(new Rectangle(10, 9, 115, 580));
jEditorPane2.setToolTipText("AI表情");
jEditorPane1.setToolTipText("AI分析");
jMenuItem8.setEnabled(false);
jMenuItem8.setToolTipText("查看该局棋的行棋过程");
jMenuItem8.setText("回顾");
jMenuItem8.addActionListener(new Frame1_jMenuItem8_actionAdapter(this));
jMenuItem7.setToolTipText("查看AI分析数据");
jMenuItem7.setText("AI数据");
jMenuItem7.addActionListener(new Frame1_jMenuItem7_actionAdapter(this));
contentPane.add(canvas, null);
contentPane.add(jPanel1);
jPanel1.add(jSplitPane1);
jMenuBar1.add(jMenu1);
jMenuBar1.add(jMenu2);
jMenu2.add(jMenuItem7);
jMenu2.add(jMenuItem4);
jMenu2.add(jMenuItem1);
jMenu1.add(jMenuItem2);
jMenu1.add(jMenuItem6);
jMenu1.add(jMenuItem8);
jMenu1.add(jMenuItem3);
jSplitPane1.add(jScrollPane2, JSplitPane.TOP);
jSplitPane1.add(jScrollPane1, JSplitPane.BOTTOM);
jScrollPane1.getViewport().add(jEditorPane1);
jScrollPane2.getViewport().add(jEditorPane2);
jEditorPane1.setContentType("text/html");
jEditorPane2.setContentType("text/html");
jSplitPane1.setDividerLocation(100);
jEditorPane1.setText("<html><b>AI分析</b>");
//图片资源
url=this.getClass().getResource("pic/nb.gif");
aiText1="<html><center><img src="+url+"><br><font color=purple>和我来一局吧</font>";
url=this.getClass().getResource("pic/find.gif");
aiText2="<html><center><img src="+url+"><br><font color=purple>我再想想看</font>";
url=this.getClass().getResource("pic/vic.gif");
aiText3="<html><center><img src="+url+"><br><font color=purple>继续加油吧</font>";
url=this.getClass().getResource("pic/dk.gif");
aiText4="<html><center><img src="+url+"><br><font color=purple>再来一局~</font>";
url=this.getClass().getResource("
没有合适的资源?快使用搜索试试~ 我知道了~
wuziqi.zip_数据统计
共59个文件
class:33个
java:10个
rs:7个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 53 浏览量
2022-09-24
18:57:18
上传
评论
收藏 98KB ZIP 举报
温馨提示
用于学习的Java代码,能运行,很不错的代码,不容错过
资源详情
资源评论
资源推荐
收起资源包目录
wuziqi.zip (59个子文件)
五子棋
build.xml 4KB
manifest.mf 85B
src
ball
Information.java 3KB
Retrospect.java 5KB
AIShow.java 12KB
UserChess.java 7KB
Result.java 4KB
AIChess.java 7KB
Frame1.java 82KB
Canvas.java 9KB
Rule.java 7KB
Application1.java 2KB
nbproject
build-impl.xml 55KB
private
private.xml 211B
private.properties 94B
project.xml 517B
genfiles.properties 475B
project.properties 2KB
build
classes
ball
Information.class 3KB
Retrospect.class 4KB
Result.rs 49B
Canvas_this_mouseAdapter.class 594B
Frame1_jMenuItem3_actionAdapter.class 648B
Frame1$ControlThread.class 4KB
Frame1_jMenuItem2_actionAdapter.class 648B
Information.rs 59B
Retrospect_jSlider1_mouseAdapter.class 632B
Frame1_jMenuItem4_actionAdapter.class 648B
Application1$1.class 815B
Frame1_jMenuItem7_actionAdapter.class 648B
Rule_jButton1_actionAdapter.class 630B
Canvas.rs 81B
AIShow_jButton1_actionAdapter.class 642B
Frame1_jMenu4_actionAdapter.class 636B
Information_jButton1_actionAdapter.class 672B
AIShow_jTable1_mouseAdapter.class 603B
AIShow_jComboBox2_actionAdapter.class 648B
Frame1_jMenuItem1_actionAdapter.class 648B
Result_jButton1_actionAdapter.class 642B
Rule.class 5KB
Frame1_jMenuItem8_actionAdapter.class 648B
UserChess.class 5KB
Application1.class 1KB
Retrospect_jButton2_actionAdapter.class 666B
Result.class 5KB
Canvas_this_mouseMotionAdapter.class 608B
Frame1.rs 313B
Retrospect_jButton1_actionAdapter.class 666B
AIShow.rs 159B
AIShow.class 11KB
Frame1$RetroThread.class 2KB
AIChess.class 5KB
AIShow_jComboBox1_actionAdapter.class 648B
Retrospect.rs 136B
Frame1_jMenuItem6_actionAdapter.class 648B
Rule.rs 45B
Frame1.class 40KB
Canvas.class 6KB
.netbeans_automatic_build 0B
共 59 条
- 1
刘良运
- 粉丝: 66
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0