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

📄 mazegui.java

📁 简单的迷宫生成算法、复杂的迷宫生成算法、简单的迷宫搜索算法、复杂的迷宫搜索算法
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
                       }
                       //Pause
                       case Manager.STATE_SOLVING:
                       {
                               manager.pauseSolve();
                               break;
                       }
                       //Resume
                       case Manager.STATE_SOLVE_PAUSED:
                       {
                               continueSolve(delay);
                               break;
                       }
                       case Manager.STATE_CLEAR:
                       case Manager.STATE_BUILDING:
                       case Manager.STATE_BUILD_PAUSED:
                       default:
                       {
                               displayErrorMessage("Invalid state: "+state+" encountered in actionListener for btnSolveAndPause.", "Paranoia error");
                               return;
                       }
                       }
               }
               else if(event.getSource() == btnResetSolve)
               {
                       switch(state)
                       {
                       case Manager.STATE_BUILDING:
                       case Manager.STATE_SOLVING:
                       {
                               displayErrorMessage("An operation is in progress, cannot reset!", "Paranoia error");
                               return;
                       }
                       case Manager.STATE_BUILD_PAUSED:
                       case Manager.STATE_BUILD_FINISHED:
                       {
                               displayErrorMessage("Nothing to reset, use 'Reset all'.", "Paranoia error");
                               return;
                       }
                       case Manager.STATE_SOLVE_PAUSED:
                       case Manager.STATE_SOLVED:
                       case Manager.STATE_CLEAR:
                       {
                               manager.clearSolveState();
                               return;
                       }
                       }
               }
               else if(event.getSource() == tbtnBuildColors)
               {
                       this.mazePanel.setDrawClrSquares( tbtnBuildColors.isSelected() );
                       this.mazePanel.repaint();
               }
       }
       
       
       /*
        * ##### EVENT HANDLE FUNCTIONS #####
        */
       
       /**
        * Starts a worker thread to start a build operation.
        */
       private void startBuild(int delay)
       {
               int buildAlgorithm = -1;
               for(int i = 0; i < rbtnBuildAlgorithms.length; i++)
               {
                       if(rbtnBuildAlgorithms[i].isSelected())
                       {
                               buildAlgorithm = i;
                               break;
                       }
               }
               
               if (buildAlgorithm == -1)
               {
                       displayErrorMessage("No algorithm associated with selected build algorithm.", "Unimplemented");
                       return;
               }
               
               //Start the build thread.
               new Thread( new WTStartBuild(buildAlgorithm, delay) ).start();
       }
       
       /**
        * Starts a worker thread to continue the build operation.
        */
       private void continueBuild(int delay)
       {
               //Start thread to continue the build.
               new Thread( new WTContinueBuild(delay) ).start();
       }
       
       /**
        * Starts a worker thread to start a solve operation.

        */
       private void startSolve(int delay)
       {
               int solveAlgorithm = -1;
               
               //Check every radio button
               for(int i = 0; i < rbtnSolveAlgorithms.length; i++)
               {
                       if(rbtnSolveAlgorithms[i].isSelected())
                       {
                               solveAlgorithm = i;
                               break;
                       }
               }
                       
               if(solveAlgorithm == -1)
               {
                       displayErrorMessage("No algorithm associated with selected solve algorithm.", "Unimplemented");
                       return;
               }
               
               //Start the solve thread.
               new Thread( new WTStartSolve(solveAlgorithm, delay) ).start();
       }

       /**
        * Starts a worker thread to continue the solve operation.
        */
       private void continueSolve(int delay)
       {
               new Thread( new WTContinueSolve(delay) ).start();
       }
       
       /**
        * Called by the actionListener to adjust the maze size.
        * @param x Width
        * @param y Height
        */
       private void handleResize(int x, int y)
       {
               Maze maze = manager.resizeMaze(x, y);
               
               //Remove the old mazePanel
               frame.getContentPane().remove( mazePanel );
               
               //Insert a new maze panel
               insertMazePanel(maze);
               
               //Reflect the state
               this.reflectStateChange();
       }
       
       

       /**
        * Is called to reflect changes in the state of the manager.
        * Should only be called from the event dispatching thread.
        */
       public void reflectStateChange()
       {
               //Should be run from the event thread.
               if(! SwingUtilities.isEventDispatchThread())
                       throw new WrongThreadException("MazeGui.reflectStateChange()");
               
               int state = manager.getState();
               
               //Only reformat when needed.
               if(state == currentGuiState)
                       return;
               
               currentGuiState = state;
               
               switch( state )
               {
               case Manager.STATE_CLEAR:
               {
                       btnUpdateSize.setEnabled(true);
                       btnBuildAndPause.setText("Build");
                       btnBuildAndPause.setEnabled(true);
                       btnResetAll.setEnabled(false);
                       btnPostBuild.setEnabled(false);
                       btnSolveAndPause.setText("Solve");
                       btnSolveAndPause.setEnabled(false);
                       btnResetSolve.setEnabled(false);
                       break;
               }
               case Manager.STATE_BUILDING:
               {
                       btnUpdateSize.setEnabled(false);
                       btnBuildAndPause.setText("Pause");
                       btnBuildAndPause.setEnabled(true);
                       btnResetAll.setEnabled(false);
                       btnPostBuild.setEnabled(false);
                       btnSolveAndPause.setText("Solve");
                       btnSolveAndPause.setEnabled(false);
                       btnResetSolve.setEnabled(false);
                       break;
               }
               case Manager.STATE_BUILD_PAUSED:
               {
                       btnUpdateSize.setEnabled(true);
                       btnBuildAndPause.setText("Resume");
                       btnBuildAndPause.setEnabled(true);
                       btnResetAll.setEnabled(true);
                       btnPostBuild.setEnabled(false);
                       btnSolveAndPause.setText("Solve");
                       btnSolveAndPause.setEnabled(false);
                       btnResetSolve.setEnabled(false);
                       break;
               }
               case Manager.STATE_BUILD_FINISHED:
               {
                       btnUpdateSize.setEnabled(true);
                       btnBuildAndPause.setText("Build");
                       btnBuildAndPause.setEnabled(true);
                       btnResetAll.setEnabled(true);
                       btnPostBuild.setEnabled(true);
                       btnSolveAndPause.setText("Solve");
                       btnSolveAndPause.setEnabled(true);
                       btnResetSolve.setEnabled(false);
                       break;
               }
               case Manager.STATE_SOLVING:
               {
                       btnUpdateSize.setEnabled(false);
                       btnBuildAndPause.setText("Build");
                       btnBuildAndPause.setEnabled(false);
                       btnResetAll.setEnabled(false);
                       btnPostBuild.setEnabled(false);
                       btnSolveAndPause.setText("Pause");
                       btnSolveAndPause.setEnabled(true);
                       btnResetSolve.setEnabled(false);
                       break;
               }
               case Manager.STATE_SOLVE_PAUSED:
               {
                       btnUpdateSize.setEnabled(true);
                       btnBuildAndPause.setText("Build");
                       btnBuildAndPause.setEnabled(true);
                       btnResetAll.setEnabled(true);
                       btnPostBuild.setEnabled(false);
                       btnSolveAndPause.setText("Resume");
                       btnSolveAndPause.setEnabled(true);
                       btnResetSolve.setEnabled(true);
                       break;
               }
               case Manager.STATE_SOLVED:
               {
                       btnUpdateSize.setEnabled(true);
                       btnBuildAndPause.setText("Build");
                       btnBuildAndPause.setEnabled(true);
                       btnResetAll.setEnabled(true);
                       btnPostBuild.setEnabled(false);
                       btnSolveAndPause.setText("Solve");
                       btnSolveAndPause.setEnabled(true);
                       btnResetSolve.setEnabled(true);
                       break;
               }
               
               default:
               {
                       throw new RuntimeException("Unknown state encountered in MazeGui.reflectStateChange().");
               }
               }

               //Reformat the components
               btnUpdateSize.invalidate();
               btnBuildAndPause.invalidate();
               btnResetAll.invalidate();
               btnSolveAndPause.invalidate();
               btnResetSolve.invalidate();
       }
       
       /**
        * Used to update relevant benchmarks in its panel
        * @param buildTime Total time to build
        * @param buildTick Ticks done to build
        * @param solveTime Total time to solve
        * @param solveTick Ticks done to solve
        */
       public void updateBenchmark(long buildTime, long buildTick,
                                                               long solveTime, long solveTick)
       {
               //Should be run from the event thread.
               if(! SwingUtilities.isEventDispatchThread())

⌨️ 快捷键说明

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