Synchronized_Skaters

Created by Barbara Lerner

You need to download Java software in order to view this Alice world. Please visit this page: http://www.alice.org/applet/requirements/

Created with Alice, the easy-to-learn programming system. Provided free as a public service by Carnegie Mellon University


If you don't see 3d graphics on this page, click for help.

Synchronized_Skaters's Code

Created by: Barbara Lerner

world

Events

When is clicked on anything
Do:
  doInOrder {
       // Click on a skater to have her skate.
  world.skate ( ( whatWasPicked() ) );
  }


When Left is typed
Do:
  doInOrder {
       // When the left arrow is clicked, the 1st skater turns left.
  iceSkater .turn( LEFT , 1 revolution );
  }


While Right is pressed
Begin:
  doInOrder {
       // When the right arrow is depressed, the first skater speaks.
  iceSkater .say( I like getting dizzy! );
  }
During:
  doInOrder {
       // While the user is holding the right arrow down, the first skater spins right.
  iceSkater .turn( RIGHT , 1 revolution );
  }
End:
  doInOrder {
       // When the user releases the right arrow key, the skater falls over from being dizzy.
  iceSkater .roll( RIGHT , 0.25 revolutions );
  }


Methods

  public void my_first_method ( ) {
    Object[] skaters = ; Number skaterNumber = 1 ;
       // Randomly select a skater to skate.
  skaterNumber .set( value , ( Random.nextDouble() minimum = 1 maximum = 4 integerOnly = true ) );
  world.skate ( ( skaters [ skaterNumber ] ) );
  // Have all the skaters turn consecutively.
  For all skaters , one item_from_skaters at a time {
       item_from_skaters .turn( LEFT , 1 revolution );
  }
  // Remove the 1st skater from the list.
  skaters .remove( 0 );
  // Have the right 3 skaters turn simultaneously.
  For all skaters , every item_from_skaters together {
       item_from_skaters .turn( LEFT , 1 revolution );
  }
  }


  public void skate ( Object whichSkater) {
    Object skatersLeftLeg = <None> ; Object skatersRightLeg = <None> ;
       // Get the skater's 2 legs and save them in variables.
  // Notice that if this method is passed an object that is not a skater, like the beach chair, the Alice world will crash with a "null" error.
  skatersLeftLeg .set( value , ( whichSkater .partNamed( leftLeg ) ) );
  skatersRightLeg .set( value , ( whichSkater .partNamed( rightLeg ) ) );
  // Take a skating stroke pushing with the left leg
  doTogether {
       whichSkater .move( FORWARD , 1 meter ); duration = 2 seconds
  doInOrder {
       doTogether {
       skatersLeftLeg .turn( FORWARD , 0.12 revolutions );
  skatersLeftLeg .roll( RIGHT , 0.12 revolutions );
  }
  doTogether {
       skatersLeftLeg .turn( BACKWARD , 0.12 revolutions );
  skatersLeftLeg .roll( LEFT , 0.12 revolutions );
  }
  }
  }
  // Take a skating stroke pushing with the right leg
  doTogether {
       whichSkater .move( FORWARD , 1 meter ); duration = 2 seconds
  doInOrder {
       doTogether {
       skatersRightLeg .turn( FORWARD , 0.12 revolutions );
  skatersRightLeg .roll( LEFT , 0.12 revolutions );
  }
  doTogether {
       skatersRightLeg .turn( BACKWARD , 0.12 revolutions );
  skatersRightLeg .roll( RIGHT , 0.12 revolutions );
  }
  }
  }
  }