From fd0505a43e64820b775d6868892815e79f741cf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8B=E5=94=90=E4=BA=BA?= Date: Sat, 30 Sep 2023 16:27:25 +0800 Subject: [PATCH] Initial commit --- java1/.gitignore | 29 ++ java1/.idea/.gitignore | 3 + java1/.idea/artifacts/java1_jar.xml | 10 + java1/.idea/misc.xml | 6 + java1/.idea/modules.xml | 8 + java1/.idea/vcs.xml | 6 + java1/java1.iml | 11 + java1/java1_jar/java1.jar | Bin 0 -> 8465 bytes java1/src/META-INF/MANIFEST.MF | 3 + java1/src/Main.java | 439 ++++++++++++++++++++++++++++ 10 files changed, 515 insertions(+) create mode 100644 java1/.gitignore create mode 100644 java1/.idea/.gitignore create mode 100644 java1/.idea/artifacts/java1_jar.xml create mode 100644 java1/.idea/misc.xml create mode 100644 java1/.idea/modules.xml create mode 100644 java1/.idea/vcs.xml create mode 100644 java1/java1.iml create mode 100644 java1/java1_jar/java1.jar create mode 100644 java1/src/META-INF/MANIFEST.MF create mode 100644 java1/src/Main.java diff --git a/java1/.gitignore b/java1/.gitignore new file mode 100644 index 0000000..f68d109 --- /dev/null +++ b/java1/.gitignore @@ -0,0 +1,29 @@ +### IntelliJ IDEA ### +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/java1/.idea/.gitignore b/java1/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/java1/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/java1/.idea/artifacts/java1_jar.xml b/java1/.idea/artifacts/java1_jar.xml new file mode 100644 index 0000000..bf6bfde --- /dev/null +++ b/java1/.idea/artifacts/java1_jar.xml @@ -0,0 +1,10 @@ + + + $PROJECT_DIR$/java1_jar + + + + + + + \ No newline at end of file diff --git a/java1/.idea/misc.xml b/java1/.idea/misc.xml new file mode 100644 index 0000000..e0844bc --- /dev/null +++ b/java1/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/java1/.idea/modules.xml b/java1/.idea/modules.xml new file mode 100644 index 0000000..92caf11 --- /dev/null +++ b/java1/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/java1/.idea/vcs.xml b/java1/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/java1/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/java1/java1.iml b/java1/java1.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/java1/java1.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/java1/java1_jar/java1.jar b/java1/java1_jar/java1.jar new file mode 100644 index 0000000000000000000000000000000000000000..5330eb75f72afe739f360c52f63b78240b8e72a0 GIT binary patch literal 8465 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 0 && Main.is_black && !Main.is_finished) { + Main.black_time -= 1; + Main.black_msg = Main.black_time / 3600 + ":" + (Main.black_time/60 - Main.black_time/3600*60) + ":" + (Main.black_time-Main.black_time/60*60); + Main.mainscreen.repaint(); + if(Main.black_time == 0) { + Main.is_finished = true; + JOptionPane.showMessageDialog(Main.mainscreen, "游戏结束,红方胜利!"); + } + } + if(Main.white_time > 0 && !Main.is_black && !Main.is_finished) { + Main.white_time -= 1; + Main.white_msg = Main.white_time / 3600 + ":" + (Main.white_time/60 - Main.white_time/3600*60) + ":" + (Main.white_time-Main.white_time/60*60); + Main.mainscreen.repaint(); + if(Main.white_time == 0) { + Main.is_finished = true; + JOptionPane.showMessageDialog(Main.mainscreen, "游戏结束,白方胜利!"); + } + } + } + }, 1000, 1000); + } + @Override + public void actionPerformed(ActionEvent e) { + if(e.getSource() == btn_start) { + int result = JOptionPane.showConfirmDialog(this, "是否重新开始游戏?"); + if(result == 0) { + // 重新开始游戏 + // (1)把棋盘清空 + // (2)把游戏参数复位到初始值 + intial_parameters(); + } + } + if(e.getSource() == btn_giveUp) { + int result = JOptionPane.showConfirmDialog(this, "是否确认认输?"); + if(result == 0) { + if(Main.is_black) { + JOptionPane.showMessageDialog(this, "白方已经认输,游戏结束!"); + } else { + JOptionPane.showMessageDialog(this, "红方已经认输,游戏结束!"); + } + // 棋局结束,单击【 开始 】可重新开始游戏 + Main.is_finished = true; + } + } + if(e.getSource() == btn_exit) { + int result = JOptionPane.showConfirmDialog(this, "要退出游戏吗?"); + if(result == 0) { + System.exit(0); + } + } + if(e.getSource() == btn_setting) { + String input = JOptionPane.showInputDialog(this, "请输入游戏的最大时间(单位:分钟):"); + try { + Main.max_time = Integer.parseInt(input) * 60; + // 提示输入每方每次落子的最大时限,0表示无限制 + intial_parameters_with_dialog(); + } catch (NumberFormatException e2) { + JOptionPane.showMessageDialog(this, "请正确输入时间!"); + } + } + if(e.getSource() == btn_about) { + JOptionPane.showMessageDialog(this, "制作者:下唐人\n制作时间:2023年9月"); + } + } + public void initial_allwzq() { + for(int i = 0; i < 19; i++) { + for(int j = 0; j < 19; j++) { + Main.allwzq[i][j] = 0; + } + } + } + public void intial_parameters_with_dialog() { + if(Main.max_time < 0) { + JOptionPane.showMessageDialog(this, "时间不允许负数!"); + } + if(Main.max_time == 0) { + int r = JOptionPane.showConfirmDialog(this, "设置完成,重新开始游戏!"); + if(r == 0) { + initial_allwzq(); + Main.xinxi = "白方先行"; + Main.is_black = true; + Main.black_time = Main.max_time; + Main.white_time = Main.max_time; + Main.black_msg = "无限制"; + Main.white_msg = "无限制"; + Main.is_finished = false; + this.repaint(); + } + } + if(Main.max_time > 0) { + int r = JOptionPane.showConfirmDialog(this, "设置完成,重新开始游戏!"); + if(r == 0) { + initial_allwzq(); + Main.xinxi = "白方先行"; + Main.is_black = true; + Main.black_time = Main.max_time; + Main.white_time = Main.max_time; + Main.black_msg = Main.max_time / 3600 + ":" + (Main.max_time/60 - Main.max_time/3600*60) + ":" + (Main.max_time-Main.max_time/60*60); + Main.white_msg = Main.max_time / 3600 + ":" + (Main.max_time/60 - Main.max_time/3600*60) + ":" + (Main.max_time-Main.max_time/60*60); + Main.is_finished = false; + this.repaint(); + } + } + } + public void intial_parameters() { + if(Main.max_time < 0) { + JOptionPane.showMessageDialog(this, "时间不允许负数!"); + } + if(Main.max_time == 0) { + initial_allwzq(); + Main.xinxi = "白方先行"; + Main.is_black = true; + Main.black_time = Main.max_time; + Main.white_time = Main.max_time; + Main.black_msg = "无限制"; + Main.white_msg = "无限制"; + Main.is_finished = false; + this.repaint(); + } + if(Main.max_time > 0) { + initial_allwzq(); + Main.xinxi = "白方先行"; + Main.is_black = true; + Main.black_time = Main.max_time; + Main.white_time = Main.max_time; + Main.black_msg = Main.max_time / 3600 + ":" + (Main.max_time/60 - Main.max_time/3600*60) + ":" + (Main.max_time-Main.max_time/60*60); + Main.white_msg = Main.max_time / 3600 + ":" + (Main.max_time/60 - Main.max_time/3600*60) + ":" + (Main.max_time-Main.max_time/60*60); + Main.is_finished = false; + this.repaint(); + } + } + @Override + public void mouseClicked(MouseEvent mouseEvent) { + } + @Override + public void mousePressed(MouseEvent e) { + // 如果对局已经结束,则不响应 + if(Main.is_finished) { + return; + } + // 获取鼠标点击位置在棋盘上的映射 + int x = (e.getX() - 65 + 10) / 20; + int y = (e.getY() - 85 + 10) / 20; + System.out.println(e.getX() + "," + e.getY() + "=(" + x + "," + y + ")"); + // 棋盘四方最边上的线不能落子 + if(x >= 1 && x <= 17 && y >= 1 && y <= 17) { + if(Main.is_black) { + if (Main.allwzq[x][y] != 0 ) { return; } + // 白方落子 + Main.allwzq[x][y] = 1; + // 统计白方是否胜利 + boolean flag1 = is_win(1, x, y); + if(flag1) { + Main.is_finished = true; + JOptionPane.showMessageDialog(this, "游戏结束,白方胜利!"); + } + } else { + if (Main.allwzq[x][y] != 0 ) { return; } + // 红方落子 + Main.allwzq[x][y] = 2; + // 统计红方是否胜利 + boolean flag2 = is_win(2, x, y); + if(flag2) { + Main.is_finished = true; + JOptionPane.showMessageDialog(this, "游戏结束,红方胜利!"); + } + } + if(Main.is_black) { + Main.is_black = false; + Main.xinxi = "红方落子"; + Main.black_time = Main.max_time; + Main.black_msg = Main.max_time / 3600 + ":" + (Main.max_time/60 - Main.max_time/3600*60) + ":" + (Main.max_time-Main.max_time/60*60); + } else { + Main.is_black = true; + Main.xinxi = "白方落子"; + Main.white_time = Main.max_time; + Main.white_msg = Main.max_time / 3600 + ":" + (Main.max_time/60 - Main.max_time/3600*60) + ":" + (Main.max_time-Main.max_time/60*60); + } + this.repaint(); + } + } + public boolean is_win(int color, int x, int y) { + // 判断横向 + int count = 0; + for(int i = 1; i <= 17; i++) { + if(Main.allwzq[i][y] == color) { + count++; + if(count == 5) { + return true; + } + } + if(Main.allwzq[i][y] != color) { + count = 0; + } + } + // 判断纵向 + count = 0; + for(int i = 1; i <= 17; i++) { + if(Main.allwzq[x][i] == color) { + count++; + if(count == 5) { + return true; + } + } + if(Main.allwzq[x][i] != color) { + count = 0; + } + } + // 判断左上到右下 + count = 0; + int start_x = x, start_y = y; + if(x >= y) { + start_x = x - y + 1; + start_y = 1; + while(start_x <= 17) { + if(Main.allwzq[start_x][start_y] == color) { + count++; + if(count == 5) { + return true; + } + } + if(Main.allwzq[start_x][start_y] != color) { + count = 0; + } + start_x++; + start_y++; + } + } + if(x < y) { + start_x = 1; + start_y = y - x + 1; + while(start_y <= 17) { + if(Main.allwzq[start_x][start_y] == color) { + count++; + if(count == 5) { + return true; + } + } + if(Main.allwzq[start_x][start_y] != color) { + count = 0; + } + start_x++; + start_y++; + } + } + // 判断右上到左下 + count = 0; + start_x = x; + start_y = y; + if(x <= 17 - y + 1) { + start_x = x + y - 1; + start_y = 1; + while(start_x >= 1) { + if(Main.allwzq[start_x][start_y] == color) { + count++; + if(count == 5) { + return true; + } + } + if(Main.allwzq[start_x][start_y] != color) { + count = 0; + } + start_x--; + start_y++; + } + } + if(x > 17 - y + 1) { + start_x = 17; + start_y = y - 17 + x; + while(start_y <= 17) { + if(Main.allwzq[start_x][start_y] == color) { + count++; + if(count == 5) { + return true; + } + } + if(Main.allwzq[start_x][start_y] != color) { + count = 0; + } + start_x--; + start_y++; + } + } + return false; + } + @Override + public void mouseReleased(MouseEvent mouseEvent) { + } + @Override + public void mouseEntered(MouseEvent mouseEvent) { + } + @Override + public void mouseExited(MouseEvent mouseEvent) { + } +} +class MapPanel extends JPanel { + public void paint(Graphics g) { + // 双缓冲技术防止屏幕闪烁 + BufferedImage bi = new BufferedImage(500, 500, BufferedImage.TYPE_INT_RGB); + Graphics g1 = bi.createGraphics(); + // 绘制标题、双方信息 + g1.drawString("游戏信息:" + Main.xinxi, 130, 45); + g1.drawString("白方时间:" + Main.black_msg, 80, 480); + g1.drawString("红方时间:" + Main.white_msg, 310, 480); + // 绘制棋盘 + for(int i = 0; i < 19; i++) { + g1.drawLine(60, 80+20*i, 420, 80+20*i); + g1.drawLine(60+20*i, 80, 60+20*i, 440); + } + // 标注点位 + g1.fillOval(98, 138, 4, 4); + g1.fillOval(98, 258, 4, 4); + g1.fillOval(98, 378, 4, 4); + + g1.fillOval(218, 138, 4, 4); + g1.fillOval(218, 258, 4, 4); + g1.fillOval(218, 378, 4, 4); + + g1.fillOval(338, 138, 4, 4); + g1.fillOval(338, 258, 4, 4); + g1.fillOval(338, 378, 4, 4); + + // 绘制全部棋子 + draw_allwzq(g1); + // 将缓冲区的图片显示出来 + g.drawImage(bi, 0, 0, this); + } + public void draw_allwzq(Graphics g1) { + for(int i = 0; i < 19; i++) { + for(int j = 0; j < 19; j++) { + if(Main.allwzq[i][j] == 1) { + int tempX = i*20+60; + int tempY = j*20+80; + g1.setColor(Color.WHITE); + g1.fillOval(tempX-7, tempY-7, 14, 14); + } + if(Main.allwzq[i][j] == 2) { + int tempX = i*20+60; + int tempY = j*20+80; + g1.setColor(Color.RED); + g1.fillOval(tempX-7, tempY-7, 14, 14); + g1.setColor(Color.WHITE); + g1.drawOval(tempX-7, tempY-7, 14, 14); + } + } + } + } +} \ No newline at end of file -- GitLab