package edu.cqut.computer.graduation.frame;
import java.awt.AWTEvent;
import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.WindowEvent;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
import javax.swing.UIManager;
import javax.swing.border.TitledBorder;
import javax.swing.filechooser.FileNameExtensionFilter;
import edu.cqut.computer.graduation.arithmetic.Game;
import edu.cqut.computer.graduation.util.Constant;
import edu.cqut.computer.graduation.util.DataHandle;
import edu.cqut.computer.graduation.util.FileOperate;
import edu.cqut.computer.graduation.util.ImageButton;
import edu.cqut.computer.graduation.util.TimeLabel;
/**
* <p>
* 主界面
* </p>
*
* @author dingjie 2011-3-22 下午03:56:23
* @version V1.0
* @modificationHistory=========================逻辑或功能性重大变更记录
* @modify by user: {修改人} 2011-3-22
* @modify by reason:{方法名}:{原因}
*/
public class MainFrame extends JFrame implements ActionListener {
/**
* 序列化ID
*/
private static final long serialVersionUID = 1L;
Font font = new Font("华文行楷", Font.BOLD, 18);
JPanel contentPane = new JPanel();// 存放所有组件
JPanel rightPane = new JPanel();
ChessPad chessPad = new ChessPad();// 棋盘
JPanel toolPanel = new JPanel();// 功能按钮面板
static JButton startGame = new ImageButton(new ImageIcon("Images/start.png"));// 开始游戏
static JButton stopGame = new ImageButton(new ImageIcon("Images/stop.png"));// 结束游戏
static JButton regretGame = new ImageButton(new ImageIcon(
"Images/regret.png"));// 悔棋
static JButton openChess = new ImageButton(new ImageIcon("Images/open.png"));// 打开棋局
public static JButton saveChess = new ImageButton(new ImageIcon("Images/save.png"));// 保存棋局
JPanel firstPanel = new JPanel();// 选择先手
ButtonGroup firstGroup = new ButtonGroup();
static JRadioButton userFirst = new JRadioButton("玩家先手");// 玩家先手
static JRadioButton machineFirst = new JRadioButton("电脑先手");// 电脑先手
JPanel changePanel = new JPanel();// 选择棋盘大小
ButtonGroup changeGroup = new ButtonGroup();
static JRadioButton threeChange = new JRadioButton("3×3");// 3×3棋盘
static JRadioButton fiveChange = new JRadioButton("5×5");// 5×5棋盘
static JRadioButton sevenChange = new JRadioButton("7×7");// 7×7棋盘
JScrollPane logPanel = new JScrollPane();// 日志信息面板
public static JTextArea log = new JTextArea(15, 15);// 记录日志信息
ImageIcon userImg = new ImageIcon("Images/whiteMini.png");
JLabel userLabel = new JLabel("玩家", userImg, JLabel.CENTER);
ImageIcon machineImg = new ImageIcon("Images/blackMini.png");
JLabel machineLabel = new JLabel("电脑", machineImg, JLabel.CENTER);
public static JLabel time = new JLabel("时间:00:00");
TimeLabel timeRun = new TimeLabel("0:0");
JMenuBar menuBar = new JMenuBar();
JMenu game = new JMenu("游戏");
JMenu set = new JMenu("设置");
JMenu chess = new JMenu("棋局");
JMenu about = new JMenu("关于");
JMenu show = new JMenu("显示");
static JMenuItem startItem = new JMenuItem("开始游戏(F5)" + " ");
static JMenuItem stopItem = new JMenuItem("结束开始(F10)");
static JMenuItem regretItem = new JMenuItem("悔棋");
JMenuItem exitItem = new JMenuItem("退出(Esc)");
JMenu firstItem = new JMenu("先手设置" + " ");
ButtonGroup firstItemGroup = new ButtonGroup();
static JRadioButtonMenuItem userFirstRadio = new JRadioButtonMenuItem(
"玩家先手" + " ");
static JRadioButtonMenuItem machineFirstRadio = new JRadioButtonMenuItem(
"电脑先手");
JMenu changeItem = new JMenu("棋盘设置");
ButtonGroup changeItemGroup = new ButtonGroup();
static JRadioButtonMenuItem threeRadio = new JRadioButtonMenuItem("3×3" + " ");
static JRadioButtonMenuItem fiveRadio = new JRadioButtonMenuItem("5×5");
static JRadioButtonMenuItem sevenRadio = new JRadioButtonMenuItem("7×7");
JMenu pathItem = new JMenu("路径设置");
static JMenuItem showPathMenuItem = new JMenuItem(Constant.CHESSDIRPATH + " ");
static JMenuItem initPathMenuItem = new JMenuItem("默认路径" + " ");
static JMenuItem scanPathMenuItem = new JMenuItem("浏览...");
static JMenuItem openItem = new JMenuItem("读取" + " ");
public static JMenuItem saveItem = new JMenuItem("保存");
JMenuItem aboutItem = new JMenuItem("关于" + " ");
JMenuItem helpItem = new JMenuItem("帮助");
ButtonGroup showGroup = new ButtonGroup();
JRadioButtonMenuItem showPad = new JRadioButtonMenuItem("显示棋盘" + " ");
JRadioButtonMenuItem hidePad = new JRadioButtonMenuItem("隐藏棋盘");
private JFileChooser fileChooser = null;
Thread openThread;
// public MainFrame() {
// init();
// }
public MainFrame() {
// super("一字棋游戏");
setTitle("一字棋游戏");
// 设置快捷键
exitItem.registerKeyboardAction(this, KeyStroke.getKeyStroke(
KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);// Esc
// 退出
startItem.registerKeyboardAction(this, KeyStroke.getKeyStroke(
KeyEvent.VK_F5, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);// F5
// 开始游戏
stopItem.registerKeyboardAction(this, KeyStroke.getKeyStroke(
KeyEvent.VK_F10, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);// F10
// 结束游戏
regretItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,
InputEvent.CTRL_MASK));// Ctrl+Z 悔棋
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
InputEvent.CTRL_MASK));// Ctrl+O 打开游戏
saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
InputEvent.CTRL_MASK));// Ctrl+S 保存游戏
try { // 设置文件对话框外观
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
}
// fileChooser = new JFileChooser(Constant.CHESSDIRPATH + "\\Tic-tac-toe\\DJ棋谱文件\\");
// fileChooser = new JFileChooser();
// this.setGlassPane(toolPanel);//设置toolPanel透明
startItem.addActionListener(this);
stopItem.addActionListener(this);
regretItem.addActionListener(this);
exitItem.addActionListener(this);
game.add(startItem);
game.add(stopItem);
game.add(regretItem);
game.addSeparator();
game.add(exitItem);
userFirstRadio.addActionListener(this);
machineFirstRadio.addActionListener(this);
firstItemGroup.add(userFirstRadio);
firstItemGroup.add(machineFirstRadio);
firstItem.add(userFirstRadio);
firstItem.add(machineFirstRadio);
machineFirstRadio.setSelected(true);
threeRadio.addActionListener(this);
fiveRadio.addActionListener(this);
sevenRadio.addActionListener(this);
changeItemGroup.add(sevenRadio);
changeItemGroup.add(fiveRadio);
changeItemGroup.add(threeRadio);
changeItem.add(sevenRadio);
changeItem.add(fiveRadio);
changeItem.add(threeRadio);
sevenRadio.setSelected(true);
initPathMenuItem.addActio
没有合适的资源?快使用搜索试试~ 我知道了~
基于JAVA的人机对弈的一字棋系统设计与实现课程设计源代码,极大极小搜索和α-β搜索算法
共85个文件
class:26个
java:25个
png:11个
0 下载量 78 浏览量
2024-09-21
08:10:53
上传
评论
收藏 353KB RAR 举报
温馨提示
设计实现一字旗系统,能够进行人机对弈,具有判定胜负、自动计时、记录棋谱等功能。通过极大极小搜索和α-β搜索来实现计算机方下子的依据。 系统的基本功能 1)能够进行人机对弈——通过算法来实现计算机方下子的依据。 2)具有判定胜负的功能——通过算法来实现判定胜负。 3)自动计时功能——从开始游戏到结束游戏记录所花时间。 4)记录棋谱功能——保存棋局文件、截图与下棋日志到玩家选定路径下的文件夹中。 5)打开棋谱功能——打开选择的棋谱文件,系统重现棋谱下子次序。 ●本课题的关键问题: 1、棋谱的记录 2、人机对弈算法 ●解决方案: 1、通过结束棋局,提示是否保存棋局。如果需要保存棋局,则将棋局通过保存文件的方式将急剧保存在硬盘里。 2、主要是通过极大极小搜索和α-β搜索算法来实现计算机方下子的一个依据,从而实现计算机自动判断下子。 软件环境要求: 开发语言:Java 开发工具: Eclipse 开发平台: Windows 绘图工具:Microsoft visio、Rational Rose
资源推荐
资源详情
资源评论
收起资源包目录
注-CSDN.rar (85个子文件)
一字棋游戏界面截图.jpg 50KB
源程序
Tic-tac-toe
.classpath 307B
.settings
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.jdt.core.prefs 629B
org.eclipse.core.resources.prefs 114B
.jsdtscope 454B
com.genuitec.eclipse.core.prefs 198B
org.eclipse.wst.jsdt.ui.superType.container 49B
main.html 327B
src
edu
cqut
computer
graduation
arithmetic
RunAI.java 2KB
LastStage.java 25KB
OneStep.java 2KB
SymmetryPoint.java 2KB
GuessChessBoard.java 2KB
Judge.java 11KB
Evaluate.java 5KB
Game.java 1KB
GetPoint.java 1KB
AlphaBeta.java 2KB
StartStage.java 16KB
main
mainTest.java 534B
main.java 299B
util
Node.java 997B
FileSecret.java 796B
TimeLabel.java 1KB
Tree.java 2KB
DataHandle.java 8KB
FileOperate.java 5KB
Constant.java 4KB
ImageButton.java 3KB
frame
OpenChess.java 2KB
MainFrame.java 27KB
ChessPad.java 13KB
SaveJudge.java 832B
bin
edu
cqut
computer
graduation
arithmetic
Evaluate.class 4KB
SymmetryPoint.class 3KB
Game.class 2KB
Judge.class 7KB
StartStage.class 8KB
AlphaBeta.class 2KB
LastStage.class 14KB
RunAI.class 1KB
OneStep.class 1KB
GetPoint.class 2KB
GuessChessBoard.class 2KB
main
mainTest.class 500B
main.class 501B
util
TimeLabel.class 2KB
FileSecret.class 664B
Tree.class 3KB
ImageButton.class 2KB
Constant.class 3KB
FileOperate.class 5KB
Node.class 1KB
DataHandle.class 7KB
frame
MainFrame$1.class 1KB
ChessPad.class 9KB
OpenChess.class 3KB
MainFrame.class 19KB
SaveJudge.class 1023B
java.policy.applet 141B
.project 575B
Images
blackstar.png 9KB
whiteFlash5.gif 5KB
stop.png 3KB
background.jpg 51KB
whiteFlash2.gif 11KB
blackMini.png 1KB
whiteFlash.gif 5KB
blackFlash2.gif 12KB
whiteMini.png 1KB
whiteStar.png 8KB
whiteStar.gif 7KB
whiteFlash3.gif 1KB
bg.jpg 69KB
blackStar.gif 7KB
open.png 1KB
white.png 5KB
start.png 4KB
save.png 803B
blackFlash3.gif 1KB
black.png 5KB
blackFlash.gif 6KB
blackFlash5.gif 6KB
regret.png 3KB
共 85 条
- 1
资源评论
QQ1978519681计算机程序
- 粉丝: 1193
- 资源: 301
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功