⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 creatwindow.java

📁 wiziqi
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
              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 + -