📄 creatwindow.java
字号:
pointOfPath.setState(Enums.chessState.NONE);
pointOfPath.setIcon(CursorsAndImg.NONE_CHESS);
if (battel.getNowPlayer() == Enums.chessState.BLACK) {
battel.setNowPlayer(Enums.chessState.WHITE);
addTxtTwo("黑方悔棋,已清除棋盘上的最后一颗黑棋\n");
} else {
battel.setNowPlayer(Enums.chessState.BLACK);
addTxtTwo("白方悔棋,已清除棋盘上的最后一颗白棋\n");
}
} else {// 栈空,不可悔棋
JOptionPane.showMessageDialog(null, "非法悔棋方式! 请查看帮助", "出错啦",
JOptionPane.WARNING_MESSAGE);
}
}
} else if (x > 334 && x < 392 && y > 44 && y < 66) {// 按在了开始上
for (int row = 0; row < 15; row++)
for (int col = 0; col < 15; col++) {
getBattel().getchessPoint(new Point(row, col)).setState(
Enums.chessState.NONE);
getBattel().getchessPoint(new Point(row, col)).setIcon(
CursorsAndImg.NONE_CHESS);
}
addTxtTwo("\n\n新一局开始\n");
getBattel().path.clear();// 清除历史记录中的所有元素
getBattel()
.setNowPlayer(// 重置当前玩家
propertySet.getFirst() == SetDatas.BLACK_FIRST ? Enums.chessState.BLACK
: Enums.chessState.WHITE);
getBattel().setEnd(false);// 有可能已经分出胜负
if (propertySet.getModel() == SetDatas.PEOPLE_VS_COMPUTER
&& propertySet.getFirst() == SetDatas.WHITE_FIRST) {// 如果是人与电脑对战且白棋先下
getBattel();
getBattel().getchessPoint(new Point(15 / 2, 15 / 2)).setState(
Enums.chessState.WHITE);// 电脑下棋
getBattel().getchessPoint(new Point(15 / 2, 15 / 2)).setIcon(
CursorsAndImg.WHITE_CHESS);
addTxtTwo("电脑下棋: 坐标(7" + ", 7" + ");\n");
// 加入路径
getBattel().path
.offerLast(getBattel().getchPoint()[15 / 2][15 / 2]);
}
} else if (x > 414 && x < 458 && y > 40 && y < 59) {// 按在了认输上
if (getBattel().getEnd()) {// 游戏已经结束了认输不可用
return;
} else {
int choice = JOptionPane.showConfirmDialog(null, "你确定认输吗?", "玩家认输",
JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE,
CursorsAndImg.ASK);
if (choice == 0) {// 用户确定认输
if (propertySet.getSound() == SetDatas.SOUND_ON) {
Sound.getSound().play(Sound.LOSS);// 播放玩家认输时的音效
}
addTxtTwo("\n\n玩家认输,新一局开始\n");
getBattel().path.clear();// 清除历史记录中的所有元素
for (int row = 0; row < 15; row++)
for (int col = 0; col < 15; col++) {
getBattel().getchessPoint(new Point(row, col)).setState(
Enums.chessState.NONE);
getBattel().getchessPoint(new Point(row, col)).setIcon(
CursorsAndImg.NONE_CHESS);
}
if (propertySet.getModel() == SetDatas.PEOPLE_VS_COMPUTER
&& propertySet.getFirst() == SetDatas.WHITE_FIRST) {// 如果是人与电脑对战且白棋先下
getBattel();
getBattel().getchessPoint(new Point(15 / 2, 15 / 2)).setState(
Enums.chessState.WHITE);// 电脑下棋
getBattel().getchessPoint(new Point(15 / 2, 15 / 2)).setIcon(
CursorsAndImg.WHITE_CHESS);
addTxtTwo("电脑下棋: 坐标(7" + ", 7" + ");\n");
// 加入路径
getBattel().path
.offerLast(getBattel().getchPoint()[15 / 2][15 / 2]);
}
}
}
}
}
});
toolbar.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
int x = e.getX();
int y = e.getY();
if (x > 39 && x < 71 && y > 9 && y < 28) {// 按在了大厅上
JOptionPane.showMessageDialog(null, "没有大厅!!", "请注意",
JOptionPane.WARNING_MESSAGE, CursorsAndImg.OUT);
/*
* 按在了 设置 上
*/
} else if (x > 91 && x < 124 && y > 9 && y < 28) {// 按在了设置上
sysDilog.setVisible(true);
System.out.println(sysDilog.isCommit());
if (propertySet.getMusic() == SetDatas.MUSIC_ON) {
music.play();
} else {
music.stop();
}
if (sysDilog.isCommit()) { // 按了保存,按新设置刷新棋盘
for (int row = 0; row < 15; row++)
for (int col = 0; col < 15; col++) {
getBattel().getchessPoint(new Point(row, col)).setState(
Enums.chessState.NONE);
getBattel().getchessPoint(new Point(row, col)).setIcon(
CursorsAndImg.NONE_CHESS);
}
getBattel()
.setNowPlayer(// 重置当前玩家
propertySet.getFirst() == SetDatas.BLACK_FIRST ? Enums.chessState.BLACK
: Enums.chessState.WHITE);
getBattel().setEnd(false);// 有可能已经分出胜负
addTxtTwo("\n\n模式改变, 游戏重新开始..\n");
if (propertySet.getModel() == SetDatas.PEOPLE_VS_COMPUTER
&& propertySet.getFirst() == SetDatas.WHITE_FIRST) {// 如果是人与电脑对战且白棋先下
getBattel();
getBattel().getchessPoint(new Point(15 / 2, 15 / 2)).setState(
Enums.chessState.WHITE);// 电脑下棋
getBattel().getchessPoint(new Point(15 / 2, 15 / 2)).setIcon(
CursorsAndImg.WHITE_CHESS);
getBattel().path.clear();// 清除历史记录中的所有元素
// 加入路径
getBattel().path
.offerLast(getBattel().getchPoint()[15 / 2][15 / 2]);
addTxtTwo("电脑下棋: 坐标(7" + ", 7" + ");\n");
}
sysDilog.setCommit(false);
}
/*
* 按在了 帮助 上
*/
} else if (x > 146 && x < 182 && y > 9 && y < 28) {// 按在了帮助上
txtOne.setForeground(Color.white);
final String help = new String("\n 本游戏是对五子棋腾讯QQ游戏版的一个模仿,支持无"
+ "限步悔棋。本人是通过互联网了解其中用到的电脑下棋的算法。\n有任何建议请联系:\n"
+ "\n作 者 : B.Lee \nEMAIL : lage629@hotmail.com");
txtOne.setText(help);
try {
Runtime.getRuntime().exec("notepad.exe help.property");
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
} else if (x > 201 && x < 236 && y > 9 && y < 28) {// 按在了退出上
int choice = JOptionPane.showConfirmDialog(null, "退出游戏?", "退出游戏?",
JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE,
CursorsAndImg.ASK);
if (choice == 0) {
// soundSet.save();
System.exit(0);
}
}
}
});
}
// 其它函数
/**
* 改变txtOne上显示的文字
*
* @param argString
* 将要在textOne上显示的文字
*/
public void setTxtOne(String argString) {
txtOne.setText(argString);
}
/**
* 往txtOne后边加文字
*
* @param argString
* 将要加上的字符串
*/
public void addTxtOne(String argString) {
txtOne.append(argString);
}
/**
* 往txtTwo后边加文字
*
* @param argString
* 将要加上的字符串
*/
public void addTxtTwo(String argString) {
txtTwo.append(argString);
txtTwo.setCaretPosition(txtTwo.getDocument().getLength());// 移动最后
}
/**
* 设置txtTwo的文字
*
* @param argString
* 将要设置的文字
*/
public void setTxtTwo(String argString) {
txtTwo.setText(argString);
}
/**
* 返回当前棋盘的引用
*
* @return 当前棋盘
*/
public Battel getBattel() {
return battel;
}
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
new CreatWindow("五子棋 --lbnh@qq.com 计科0607李斌");
}
public JScrollPane getTextPane() {
return textPane;
}
public JTextArea getTxtTwo() {
return txtTwo;
}
public void setTextPane(JScrollPane textPane) {
this.textPane = textPane;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -