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

📄 elevatorview.java

📁 用java模拟的电梯程序,可以选择有几层楼,一共有几个人在哪几层等电梯,可以不断的增加等电梯的人数,并看电梯如何以设定的方式运行.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
      // set Elevator's position to either first or second Floor      if ( elevatorPanel.getYVelocity() < 0 )         yPosition =             secondFloorPosition - elevatorPanel.getHeight();      else         yPosition =             firstFloorPosition - elevatorPanel.getHeight();      elevatorPanel.setPosition( xPosition, yPosition );   } // end method elevatorArrived   // invoked when Person has been created in model   public void personCreated( PersonMoveEvent personEvent )   {      int personID = personEvent.getID();       String floorLocation =          personEvent.getLocation().getLocationName();      // create AnimatedPanel representing Person      AnimatedPanel personPanel =          new AnimatedPanel( personID, personFrames );      // determine where Person should be drawn initially      // negative xPosition ensures Person drawn offscreen      double xPosition = - personPanel.getWidth();      double yPosition = 0;      if ( floorLocation.equals( FIRST_FLOOR_NAME ) )         yPosition = firstFloorPosition +            ( firstFloorPanel.getHeight() / 2 );      else         if ( floorLocation.equals( SECOND_FLOOR_NAME ) )            yPosition = secondFloorPosition +                ( secondFloorPanel.getHeight() / 2 );      yPosition -= personPanel.getHeight();      personPanel.setPosition( xPosition, yPosition );      // add some animations for each Person      int walkFrameOrder[] = { 1, 0, 1, 2 };      int pressButtonFrameOrder[] = { 1, 3, 3, 4, 4, 1 };      int walkAwayFrameOrder[] = { 6, 5, 6, 7 };      personPanel.addFrameSequence( walkFrameOrder );      personPanel.addFrameSequence( pressButtonFrameOrder );      personPanel.addFrameSequence( walkAwayFrameOrder );      // have Person begin walking to Elevator      personPanel.playAnimation( 0 );      personPanel.setLoop( true );      personPanel.setAnimating( true );      personPanel.setMoving( true );      // determine Person velocity      double time =          ( double ) ( TIME_TO_BUTTON / ANIMATION_DELAY );      double xDistance = PERSON_TO_BUTTON_DISTANCE -          2 * OFFSET + personPanel.getSize().width;      double xVelocity = xDistance / time;      personPanel.setVelocity( xVelocity, 0 );      personPanel.setAnimationRate( 1 );      walkClip.loop(); // play sound clip of Person walking      // store in personAnimatedPanels      synchronized( personAnimatedPanels )      {         personAnimatedPanels.add( personPanel );      }      add( personPanel, 0 );   } // end method personCreated   // invoked when Person has arrived at Elevator   public void personArrived( PersonMoveEvent personEvent )   {      // find Panel associated with Person that issued event      AnimatedPanel panel = getPersonPanel( personEvent );      if ( panel != null ) { // if Person exists         // Person stops at Floor Button         panel.setMoving( false );         panel.setAnimating( false );         panel.setCurrentFrame( 1 );         stopWalkingSound();         double xPosition = PERSON_TO_BUTTON_DISTANCE -             ( panel.getSize().width / 2 );         double yPosition = panel.getPosition().getY();         panel.setPosition( xPosition, yPosition );      }   } // end method personArrived   // invoked when Person has pressed Button   public void personPressedButton( PersonMoveEvent personEvent )   {      // find Panel associated with Person that issued event      AnimatedPanel panel = getPersonPanel( personEvent );      if ( panel != null ) { // if Person exists         // Person stops walking and presses Button         panel.setLoop( false );         panel.playAnimation( 1 );         panel.setVelocity( 0, 0 );         panel.setMoving( false );         panel.setAnimating( true );         stopWalkingSound();      }   } // end method personPressedButton   // invoked when Person has started to enter Elevator   public void personEntered( PersonMoveEvent personEvent )   {      // find Panel associated with Person that issued event      AnimatedPanel panel = getPersonPanel( personEvent );      if ( panel != null ) {         // determine velocity         double time = TIME_TO_ELEVATOR / ANIMATION_DELAY;         double distance =             elevatorPanel.getPosition().getX() -             panel.getPosition().getX() + 2 * OFFSET;         panel.setVelocity( distance / time, -1.5 );         // Person starts walking         panel.setMoving( true );         panel.playAnimation( 0 );         panel.setLoop( true );      }   } // end method personEntered   // invoked when Person has departed from Elevator   public void personDeparted( PersonMoveEvent personEvent)   {      // find Panel associated with Person that issued event      AnimatedPanel panel = getPersonPanel( personEvent );      if ( panel != null ) { // if Person exists         // determine velocity (in opposite direction)         double time = TIME_TO_BUTTON / ANIMATION_DELAY;         double xVelocity = - PERSON_TO_BUTTON_DISTANCE / time;         panel.setVelocity( xVelocity, 0 );         // remove Person from Elevator         elevatorPanel.remove( panel );         double xPosition =             PERSON_TO_ELEVATOR_DISTANCE + 3 * OFFSET;         double yPosition = 0;         String floorLocation =             personEvent.getLocation().getLocationName();         // determine Floor onto which Person exits         if ( floorLocation.equals( FIRST_FLOOR_NAME ) )            yPosition = firstFloorPosition +               ( firstFloorPanel.getHeight() / 2 );         else            if ( floorLocation.equals( SECOND_FLOOR_NAME ) )               yPosition = secondFloorPosition +                   ( secondFloorPanel.getHeight() / 2 );         yPosition -= panel.getHeight();         panel.setPosition( xPosition, yPosition );         // add Person to ElevatorView         add( panel, 0 );         // Person starts walking         panel.setMoving( true );         panel.setAnimating( true );         panel.playAnimation( 2 );         panel.setLoop( true );         walkClip.loop();      }   } // end method PersonDeparted   // invoked when Person has exited simulation   public void personExited( PersonMoveEvent personEvent)   {      // find Panel associated with Person that issued moveEvent      AnimatedPanel panel = getPersonPanel( personEvent );      if ( panel != null ) { // if Person exists         panel.setMoving( false );         panel.setAnimating( false );         // remove Person permanently and stop walking sound         synchronized( personAnimatedPanels )         {            personAnimatedPanels.remove( panel );         }         remove( panel );         stopWalkingSound();      }   } // end method personExited   // invoked when Door has opened in model   public void doorOpened( DoorEvent doorEvent )   {      // get DoorEvent Location      String location =          doorEvent.getLocation().getLocationName();      // play animation of Door opening      doorPanel.playAnimation( 0 );      doorPanel.setAnimationRate( 2 );      doorPanel.setDisplayLastFrame( true );      // play sound clip of Door opening      if ( doorOpenClip != null )         doorOpenClip.play();   } // end method doorOpened   // invoked when Door has closed in model   public void doorClosed( DoorEvent doorEvent )   {      // get DoorEvent Location      String location =          doorEvent.getLocation().getLocationName();      // play animation of Door closing      doorPanel.playAnimation( 1 );      doorPanel.setAnimationRate( 2 );      doorPanel.setDisplayLastFrame( true );      // play sound clip of Door closing      if ( doorCloseClip != null )         doorCloseClip.play();   } // end method doorClosed   // invoked when Button has been pressed in model   public void buttonPressed( ButtonEvent buttonEvent )   {      // get ButtonEvent Location      String location =          buttonEvent.getLocation().getLocationName();      // press Elevator Button if from Elevator      if ( location.equals( ELEVATOR_NAME ) ) {         elevatorButtonPanel.playAnimation( 0 );         elevatorButtonPanel.setDisplayLastFrame( true );      }      // press Floor Button if from Floor      else         if ( location.equals( FIRST_FLOOR_NAME ) ) {            firstFloorButtonPanel.playAnimation( 0 );            firstFloorButtonPanel.setDisplayLastFrame( true );         }      else         if ( location.equals( SECOND_FLOOR_NAME ) ) {            secondFloorButtonPanel.playAnimation( 0 );            secondFloorButtonPanel.setDisplayLastFrame( true );         }      if ( buttonClip != null )         buttonClip.play(); // play button press sound clip   } // end method buttonPressed   // invoked when Button has been reset in model   public void buttonReset( ButtonEvent buttonEvent )   {      // get ButtonEvent Location      String location =          buttonEvent.getLocation().getLocationName();      // reset Elevator Button if from Elevator      if ( location.equals( ELEVATOR_NAME ) ) {         // return to first frame if still animating         if ( elevatorButtonPanel.isAnimating() )            elevatorButtonPanel.setDisplayLastFrame( false );         else            elevatorButtonPanel.setCurrentFrame( 0 );      }      // reset Floor Button if from Floor      else         if ( location.equals( FIRST_FLOOR_NAME ) ) {            // return to first frame if still animating            if ( firstFloorButtonPanel.isAnimating() )               firstFloorButtonPanel.setDisplayLastFrame(                   false );            else               firstFloorButtonPanel.setCurrentFrame( 0 );         }      else         if ( location.equals( SECOND_FLOOR_NAME ) ) {            // return to first frame if still animating            if ( secondFloorButtonPanel.isAnimating() )               secondFloorButtonPanel.setDisplayLastFrame(                   false );            else               secondFloorButtonPanel.setCurrentFrame( 0 );         }   } // end method buttonReset   // invoked when Bell has rung in model   public void bellRang( BellEvent bellEvent )   {      bellPanel.playAnimation( 0 ); // animate Bell      if ( bellClip != null ) // play Bell sound clip         bellClip.play();   }   // invoked when Light turned on in model   public void lightTurnedOn( LightEvent lightEvent )   {      // turn on Light in Elevator      elevatorLightPanel.setCurrentFrame( 1 );      String location =          lightEvent.getLocation().getLocationName();      // turn on Light on either first or second Floor      if ( location.equals( FIRST_FLOOR_NAME ) )         firstFloorLightPanel.setCurrentFrame( 1 );      else         if ( location.equals( SECOND_FLOOR_NAME ) )            secondFloorLightPanel.setCurrentFrame( 1 );   } // end method lightTurnedOn   // invoked when Light turned off in model   public void lightTurnedOff( LightEvent lightEvent )   {      // turn off Light in Elevator      elevatorLightPanel.setCurrentFrame( 0 );      String location =          lightEvent.getLocation().getLocationName();      // turn off Light on either first or second Floor      if ( location.equals( FIRST_FLOOR_NAME ) )         firstFloorLightPanel.setCurrentFrame( 0 );      else         if ( location.equals( SECOND_FLOOR_NAME ) )            secondFloorLightPanel.setCurrentFrame( 0 );   } // end method lightTurnedOff   // return preferred size of ElevatorView   public Dimension getPreferredSize()   {      return new Dimension( VIEW_WIDTH, VIEW_HEIGHT );   }   // return minimum size of ElevatorView   public Dimension getMinimumSize()   {      return getPreferredSize();   }      // return maximum size of ElevatorView   public Dimension getMaximumSize()   {      return getPreferredSize();   }}

⌨️ 快捷键说明

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