#ff0000 23  2005 . - #000655    .  5
#000655 : ,   
#0000ff  Carol Hamer 
#000655  Sprite
#def  (Sprite) -   ,    (   ).    Sprite      -      TiledLayer,    ,   ,  . ( Sprite     ,   ,     ,       .) Sprite         (     ,      ),  TiledLayer       .
    ,          .  ,      ,   .                .         .  ,       ,   .          . ( ,     ,      jar     ,         Class.getResource().) ,        ,  ,         ,         .   ,     :
    ,    .
 ,     .  -,         (     ),     sprite             . ,              .          .    ,         .     .          .     ,      . 
 1	2	3
4	5	6
7	8	9
         setFrame(int sequenceIndex).      .
 Sprait       .      setFrameSequence(int[] sequence)      .    : { 1, 2, 3, 2 } -    { 0, 1, 2 } -  .       ,     nextFrame() ( prevFrame()    ).     ,       .  ,           .         ,     .         { 1, 2, 3, 2 }.     ,  .     0     .      setFrame(0),      ,   . (setFrame(1)   , setFrame(2) -  , setFrame(3) -  ).     .    ,     ,     setFrame(0).     ,      { 1, 2, 3, 2 }.      jump()  advance(int tickCount, boolean left)    .
      ,    ,      .    ,         ,   ,           .         reference  . Reference  -  ,        .   ,      ,             .    .  .        ,  reference      .      90 ,                .        ,              ,    ,      defineReferencePixel(int x, int y)   reference    .        Cowboy.   defineReferencePixel(int x, int y)        ,     setRefPixelPosition(int x, int y)       .    , ,   setRefPixelPosition(int x, int y)     Canvas      Canvas;   Sprite   LayerManager,       LayerManager-. (           LayerManager.) 
    ,        ,      .       setTransform(TRANS_MIRROR),          ,     .         ,   setTransform(TRANS_NONE).      Cowboy.advance(int tickCount, boolean left).

    Layer (  Sprite   TiledLayer)         .           ,      move(int x, int y),         ,      setRefPixelPosition(int x, int y),      .     collidesWith().       , TiledLayer   Image. 
       ,  ,        (    Cowboy.checkCollision(Tumbleweed tumbleweed),     JumpManager.advance(int gameTicks)).          .        false,    .
               ,   .       , ,       . (  ,     ,         .  .)      B.
   Cowboy.java:
package net.frog_parrot.jump;

import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

/**
 *    .
 *
 * @ Carol Hamer
 */
public class Cowboy extends Sprite {

  //---------------------------------------------------------
  //     

  /**
   *     .
   */
  static int WIDTH = 32;
  static int HEIGHT = 48;

  /**
   *    
   */
  static int[] FRAME_SEQUENCE = { 3, 2, 1, 2 };

  //---------------------------------------------------------
  //    instance fields

  /**
   *      
   */
  int myInitialX;
  int myInitialY;

  /**
   *  
   */
  int myNoJumpInt = -6;

  /**
   *      .
   */
  int myIsJumping = myNoJumpInt;

  /**
   *    ,      
   *      .     
   * ,      
   *  .
   */
  int myScoreThisJump = 0;

  //---------------------------------------------------------
  //   

  /**
   * .    .
   */
  public Cowboy(int initialX, int initialY) throws Exception {
    super(Image.createImage("/icons/cowboy.png"), 
   WIDTH, HEIGHT);
    myInitialX = initialX;
    myInitialY = initialY;
    //  reference     .
    //          
    //  
    defineReferencePixel(WIDTH/2, 0);
    setRefPixelPosition(myInitialX, myInitialY);
    setFrameSequence(FRAME_SEQUENCE);
  }

  //---------------------------------------------------------
  //    

  /**
   *     ,  .
   */
  int checkCollision(Tumbleweed tumbleweed) {
    int retVal = 0;
    if(collidesWith(tumbleweed, true)) {
      retVal = 1;
      //     ,     
      // ,   .
      tumbleweed.reset();
    }
    return(retVal);
  }

  /**
   *     .
   */
  void reset() {
    myIsJumping = myNoJumpInt;
    setRefPixelPosition(myInitialX, myInitialY);
    setFrameSequence(FRAME_SEQUENCE);
    myScoreThisJump = 0;
    // at first the cowboy faces right:
    setTransform(TRANS_NONE);
  }

  //---------------------------------------------------------
  //   

  /**
   *   ..
   */
  void advance(int tickCount, boolean left) {
    if(left) {
      //       .
      setTransform(TRANS_MIRROR);
      move(-1, 0);
    } else {
      //       .
      setTransform(TRANS_NONE);
      move(1, 0);
    }
    //  : 
    //          
    //  
    if(tickCount % 3 == 0) { //   
      if(myIsJumping == myNoJumpInt) {
 //    ,    
 // 

 nextFrame();
      } else {
 //  ,  :
 //          
 //  myIsJumping   .
 myIsJumping++;
 if(myIsJumping < 0) {
   // myIsJumping .   ,    .
   //    ,   
   //   .   
   setRefPixelPosition(getRefPixelX(), 
         getRefPixelY() - (2 << (-myIsJumping)));
 } else {
   //   ,    .
   if(myIsJumping != -myNoJumpInt - 1) {
     setRefPixelPosition(getRefPixelX(), 
    getRefPixelY() + (2 << myIsJumping));
   } else {
     //        .
     myIsJumping = myNoJumpInt;
     setRefPixelPosition(getRefPixelX(), myInitialY);
     //    .
     setFrameSequence(FRAME_SEQUENCE);
     // myScoreThisJump       
     //  .        0
     // we set it back to zero.  
     myScoreThisJump = 0;
   }
 }
      }
    }
  }
  /**
   * .
   */
  void jump() {
    if(myIsJumping == myNoJumpInt) {
      myIsJumping++;
      //   .
      setFrameSequence(null);
      setFrame(0);
    }
  }

  /**
   *          .
   */
  int increaseScoreThisJump() {
    if(myScoreThisJump == 0) {
      myScoreThisJump++;
    } else {
      myScoreThisJump *= 2;
    }
    return(myScoreThisJump);
  }

}
#0000ff : Alex.
#ff0000          : http://www.mobilab.ru