Solution's Code

Created by: Barbara Lerner

world

Methods

  public void my_first_method ( ) {
    Object[] skaters = ;
       wait( 1 second );
  // Each skater should do the routine in turn.
  For all skaters , one item_from_skaters at a time {
       world.skate ( whichSkater = item_from_skaters );
  world.jump ( whichSkater = item_from_skaters );
  }
  }


  public void skate ( Object whichSkater) {
    Object skatersLeftLeg = <None> ; Object skatersRightLeg = <None> ;
       skatersLeftLeg .set( value , ( whichSkater .partNamed( leftLeg ) ) );
  skatersRightLeg .set( value , ( whichSkater .partNamed( rightLeg ) ) );
  // First skating step.
  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 );
  }
  }
  }
  // Second skating step.
  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 );
  }
  }
  }
  }


  public void jump ( Object whichSkater) {
    Object legOnRight = <None> ; Object body = <None> ;
       // Upward part of the jump
  doTogether {
       whichSkater .move( FORWARD , 1 meter ); style = BEGIN_AND_END_ABRUPTLY asSeenBy = coach duration = 0.5 seconds
  whichSkater .move( UP , 1 meter ); style = BEGIN_ABRUPTLY_AND_END_GENTLY duration = 0.5 seconds
  whichSkater .turn( LEFT , 0.75 revolutions ); style = BEGIN_AND_END_ABRUPTLY duration = 0.5 seconds
  }
  // Downward part of the jump
  doTogether {
       whichSkater .move( FORWARD , 1 meter ); style = BEGIN_AND_END_ABRUPTLY asSeenBy = coach duration = 0.5 seconds
  whichSkater .move( DOWN , 1 meter ); style = BEGIN_GENTLY_AND_END_ABRUPTLY duration = 0.5 seconds
  whichSkater .turn( LEFT , 0.75 revolutions ); style = BEGIN_AND_END_ABRUPTLY duration = 0.5 seconds
  }
  legOnRight .set( value , ( whichSkater .partNamed( rightLeg ) ) );
  body .set( value , ( whichSkater .partNamed( upperBody ) ) );
  // Land on one foot.
  doTogether {
       legOnRight .turn( FORWARD , 0.25 revolutions ); duration = 0.25 seconds style = BEGIN_ABRUPTLY_AND_END_GENTLY
  body .turn( FORWARD , 0.12 revolutions ); duration = 0.25 seconds style = BEGIN_ABRUPTLY_AND_END_GENTLY
  }
  // Glide after landing.
  whichSkater .move( BACKWARD , 2 meters );
  // Stop standing on both feet.
  doTogether {
       legOnRight .turn( BACKWARD , 0.25 revolutions ); duration = 0.25 seconds style = BEGIN_ABRUPTLY_AND_END_GENTLY
  body .turn( BACKWARD , 0.12 revolutions ); duration = 0.25 seconds style = BEGIN_ABRUPTLY_AND_END_GENTLY
  }
  }