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

📄 gameframe.java

📁 这是一个经典的五子棋程序能够人机对战
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
               this.showMsg(stemp, "你赢了");
               isFinish=true;
           }
            if (this.selectPlayer==1 && !isFinish){
               // do with computer get x,y
               func.run();
               x = func.getResultX();
               y = func.getResultY();
               if ( x== -1) {
                   this.showMsg("合棋,再来一盘!","比赛结束");
                   isFinish=true;
               }else {
                   func.setXY(x, y, m_turn);
                   m_step++;
                   this.writeStep(x, y, m_turn);
                   this.showAllStep();
                   draw(x, y, m_turn);
                   jLabel4.setText("Step: " + m_step + " : " + x + " " + y);
                   System.out.println("Com: " + m_turn + "X=" + x + ",Y=" + y);
                   changePlayer();
                   if (func.isOK()) {
                       this.showMsg("很抱歉,你输了", "你输了");
                       isFinish=true;
                   }
               }
           }
       }
    }

    public synchronized void lBoard_mouseClicked(MouseEvent e) {
        int n=0; //几行
        int m=0; //几列
        int y=e.getX(); //getX的值为列值
        int x=e.getY(); //getY的值为行值
        int x0=3;    int y0=3;  //画棋层的初始X0,Y0
        int k;
        if (!isFinish) {
            //计算点击了哪行
            for (n = 0; n <= xn; n++) {
                if (x > n * linespace + x0 && x < (n + 1) * linespace + x0) {
                    x = n;
                    break;
                }
            }
            //计算点击了哪列
            for (m = 0; m <= 16; m++) {
                if (y > m * linespace + y0 && y < (m + 1) * linespace + y0) {
                    y = m;
                    break;
                }
            }
            //选择单机版
            if (selectPlayer!=0 && selectPlayer!=3){
                this.desktop(x,y);
            }
            //选择网络
            if (selectPlayer==3 && isWebStart ){
                k=this.netgame.getSelectNet();
                System.out.println("k=" + k);
                String str=new String("");
                // 先下,再监听
                   if (func.isDrawNow(x, y)) {
                       func.setXY(x,y,m_turn);
                       m_step++;
                       this.writeStep(x, y, m_turn);
                       this.showAllStep();
                       draw(x, y, m_turn);
                       jLabel4.setText("Step: " + m_step + " : " + x + " " + y);
                       str=m_turn + ":" + x + ":" + y;
                       netDialog.startWriteThread(str);
                       changePlayer();
                       if (func.isOK()) {
                            //public static void showMessageDialog(Component parentComponent,Object message,String title,int messageType,Icon icon)
                            this.showMsg("恭喜你赢了!", "你赢了");
                            isFinish=true;
                        }else{
                           this.showMsg("等待对方回音!", "耐心等待");
                      }
                      // Receive
                      if (!isFinish){
                          jLabel4.setText("Waiting for Response...");
                          System.out.println("Waiting for Response...");
                          netDialog.setStr("");
                          netDialog.startReadThread();
                          str=netDialog.getStr();
               System.out.println("NEW str=" + str);
               /*
               while ((str=netDialog.getStr())==""){
                   try{
                       System.out.println("Thread is sleeping...");
                       wait(3000);
                       System.out.println("Thread is waking...");
                   }catch( Exception ie){
                       System.out.println("Wrong....from sleep");
                   }
               }
              */

                          System.out.println("Receive Finish!");
                          jLabel4.setText("Oppsite:" + str);
                          int a[] = new int[20];
                          a = analys(str);
                          m_turn = a[0];
                          x = a[1];
                          y = a[2];
                          func.setXY(x, y, m_turn);
                          m_step++;
                          this.writeStep(x, y, m_turn);
                          this.showAllStep();
                          draw(x, y, m_turn);
                          jLabel4.setText("Step: " + m_step + " : " + x + " " +
                                          y);
                          System.out.println("Clent:" + m_turn + " X=" + x +
                                             ",Y=" + y);
                          changePlayer();
                          if (func.isOK()) {
                              this.showMsg("很抱歉,你输了", "你输了");
                              isFinish = true;
                          }
                      }
                  }
            }
            if (selectPlayer==3 && !isWebStart ){
                this.showMsg("请选择New Game,开始!","游戏未开始");
            }
        }else{  //no isfinish
            this.showMsg("游戏已经结束了,请重新开始!","游戏结束");
        }
    }

   // 悔棋
    public void cmd_undo_actionPerformed(ActionEvent e) {
        int x,y;
        x=theStep[m_step][0];
        y=theStep[m_step][1];
        func.setXY(x,y,2);
        this.jChess[m_step].setVisible(false);
        this.jPanelChess.remove(m_step-1);
        this.changePlayer();
        m_step-=1;
        if (this.selectPlayer==1){
            x=theStep[m_step][0];
            y=theStep[m_step][1];
            func.setXY(x,y,2);
            this.jChess[m_step].setVisible(false);
            this.jPanelChess.remove(m_step-1);
            this.changePlayer();
            m_step-=1;
        }
        isFinish=false;
        m_undo++;
    }

    public void jCheckBoxMenuItem1_mouseReleased(MouseEvent e) {
        System.out.println("*1" + this.jCheckBoxMenuItem1.isSelected());
        System.out.println("*2=" + this.jCheckBoxMenuItem2.isSelected());
    }

   //选择菜单的“单人”模式
    public void jCheckBoxMenuItem1_actionPerformed(ActionEvent e) {
        this.selectPlayer=1;
        this.jCheckBoxMenuItem2.setSelected(false);
        jPlayer2.setText("Computer");
    }

    //选择菜单的“双人”模式
    public void jCheckBoxMenuItem2_actionPerformed(ActionEvent e) {
        this.selectPlayer=2;
        this.jCheckBoxMenuItem1.setSelected(false);
    }

    //选择菜单的“New Game”
    public void jMenuItem2_actionPerformed(ActionEvent e) {
        if (this.selectPlayer==0){
            this.showMsg("请先选择对手", "提示");
        }
       int x,y;
       while (m_step!=0)
       {
           x = theStep[m_step][0];
           y = theStep[m_step][1];
           func.setXY(x, y, 2);
           this.jChess[m_step].setVisible(false);
           this.jPanelChess.remove(m_step - 1);
           m_step -= 1;
       }
       if (this.selectPlayer==1) {
           jPlayerA.setIcon(image_playing);
           jWaitPlayer1.setText("Playing...");
           jPlayerB.setIcon(image_waiting);
           jWaitPlayer2.setText("Waiting...");
       }
       if (this.selectPlayer==2) {
           jPlayerA.setIcon(image_playing);
           jWaitPlayer1.setText("Playing...");
           jPlayerB.setIcon(image_waiting);
           jWaitPlayer2.setText("Waiting...");
       }
       m_turn=0;
       isFinish=false;
       cmd_undo.setEnabled(true);
       if (selectPlayer==3){
           cmd_undo.setEnabled(false);
           isWebStart=true;
           role=netDialog.getRole();
           if (role==0) {
               this.setTitle("五子棋—网络客户端");
               jPlayer1.setText("I'm Client");
               jPlayerA.setIcon(image_playing);
               jWaitPlayer1.setText("Playing...");
               jPlayerB.setIcon(image_waiting);
               jWaitPlayer2.setText("Waiting...");
           }
           if (role==1) {
               this.setTitle("五子棋—网络服务器");
               jPlayer2.setText("I'm Server");
               jPlayerA.setIcon(image_playing);
               jWaitPlayer1.setText("Playing...");
               jPlayerB.setIcon(image_waiting);
               jWaitPlayer2.setText("Waiting...");

               String str=new String("");
               jLabel4.setText("Waiting for Response...");
               System.out.println("Waiting for Response...");
               this.showMsg("等待对方回音!", "耐心等待");
               netDialog.setStr("");
               netDialog.startReadThread();
               str=netDialog.getStr();
               System.out.println("NEW str=" + str);
               System.out.println("Receive Finish!");
               jLabel4.setText("Oppsite:" + str);
               int a[]=new int[20];
               a=analys(str);
               m_turn=a[0];  x=a[1];  y=a[2];
               func.setXY(x,y,m_turn);
               m_step++;
               this.writeStep(x, y, m_turn);
               this.showAllStep();
               draw(x, y, m_turn);
               jLabel4.setText("Step: " + m_step + " : " + x + " " + y);
               System.out.println("Clent:" + m_turn + " X=" + x + ",Y=" + y);
               changePlayer();
           }
       }
    }

   //选择“network”
    public void jMenuItem1_actionPerformed(ActionEvent e) {
      // net.serverRun();
      netgame=new NetGame();
      netDialog = new NetDialog(this,"Network",true,netgame);
      netDialog.setVisible(true);
      this.selectPlayer=3;
      jPlayer1.setText("Client");
      jPlayer2.setText("Server");
    }

    public void cmd_New_actionPerformed(ActionEvent e) {
        jMenuItem2_actionPerformed(e);
    }
}


class GameFrame_cmd_New_actionAdapter implements ActionListener {
    private GameFrame adaptee;
    GameFrame_cmd_New_actionAdapter(GameFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.cmd_New_actionPerformed(e);
    }
}


class GameFrame_jMenuItem1_actionAdapter implements ActionListener {
    private GameFrame adaptee;
    GameFrame_jMenuItem1_actionAdapter(GameFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {

        adaptee.jMenuItem1_actionPerformed(e);
    }
}
class GameFrame_jCheckBoxMenuItem2_actionAdapter implements ActionListener {
    private GameFrame adaptee;
    GameFrame_jCheckBoxMenuItem2_actionAdapter(GameFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jCheckBoxMenuItem2_actionPerformed(e);
    }
}
class GameFrame_jMenuItem2_actionAdapter implements ActionListener {
    private GameFrame adaptee;
    GameFrame_jMenuItem2_actionAdapter(GameFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jMenuItem2_actionPerformed(e);
    }
}
class GameFrame_jCheckBoxMenuItem1_actionAdapter implements ActionListener {
    private GameFrame adaptee;
    GameFrame_jCheckBoxMenuItem1_actionAdapter(GameFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jCheckBoxMenuItem1_actionPerformed(e);
    }
}
class GameFrame_cmd_undo_actionAdapter implements ActionListener {
    private GameFrame adaptee;
    GameFrame_cmd_undo_actionAdapter(GameFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.cmd_undo_actionPerformed(e);
    }
}
class GameFrame_lBoard_mouseAdapter extends MouseAdapter {
    private GameFrame adaptee;
    GameFrame_lBoard_mouseAdapter(GameFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void mouseClicked(MouseEvent e) {
        adaptee.lBoard_mouseClicked(e);
    }
}
class GameFrame_jMenuFileExit_ActionAdapter implements ActionListener {
    GameFrame adaptee;

    GameFrame_jMenuFileExit_ActionAdapter(GameFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent actionEvent) {
        adaptee.jMenuFileExit_actionPerformed(actionEvent);
    }
}
class GameFrame_jMenuHelpAbout_ActionAdapter implements ActionListener {
    GameFrame adaptee;

    GameFrame_jMenuHelpAbout_ActionAdapter(GameFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent actionEvent) {
        adaptee.jMenuHelpAbout_actionPerformed(actionEvent);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -