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

📄 cowboy.java

📁 Java版PRG游戏——跳动的牛仔
💻 JAVA
字号:
package net.frog_parrot.jump;import javax.microedition.lcdui.*;import javax.microedition.lcdui.game.*;/** * This class represents the player. * Download by http://www.codefans.net * @author Carol Hamer */public class Cowboy extends Sprite {  //---------------------------------------------------------  //    dimension fields  /**   * The width of the cowboy's bounding rectangle.   */  static int WIDTH = 32;  /**   * The height of the cowboy's bounding rectangle.   */  static int HEIGHT = 48;  /**   * This is the order that the frames should be displayed    * for the animation.   */  static int[] FRAME_SEQUENCE = { 3, 2, 1, 2 };  //---------------------------------------------------------  //    instance fields  /**   * the X coordinate of the cowboy where the cowboy starts    * the game.   */  int myInitialX;  /**   * the Y coordinate of the cowboy when not jumping.   */  int myInitialY;  /**   * The jump index that indicates that no jump is    * currently in progress..   */  int myNoJumpInt = -6;  /**   * Where the cowboy is in the jump sequence.   */  int myIsJumping = myNoJumpInt;  /**   * If the cowboy is currently jumping, this keeps track    * of how many points have been scored so far during    * the jump.  This helps the calculation of bonus points since   * the points being scored depend on how many tumbleweeds    * are jumped in a single jump.   */  int myScoreThisJump = 0;  //---------------------------------------------------------  //   initialization  /**   * constructor initializes the image and animation.   */  public Cowboy(int initialX, int initialY) throws Exception {    super(Image.createImage("/icons/cowboy.png"), 	  WIDTH, HEIGHT);    myInitialX = initialX;    myInitialY = initialY;    // we define the reference pixel to be in the middle     // of the cowboy image so that when the cowboy turns     // from right to left (and vice versa) he does not     // appear to move to a different location.    defineReferencePixel(WIDTH/2, 0);    setRefPixelPosition(myInitialX, myInitialY);    setFrameSequence(FRAME_SEQUENCE);  }  //---------------------------------------------------------  //   game methods  /**   * If the cowboy has landed on a tumbleweed, we decrease    * the score.   */  int checkCollision(Tumbleweed tumbleweed) {    int retVal = 0;    if(collidesWith(tumbleweed, true)) {      retVal = 1;      // once the cowboy has collided with the tumbleweed,       // that tumbleweed is done for now, so we call reset       // which makes it invisible and ready to be reused.      tumbleweed.reset();    }    return(retVal);  }  /**   * set the cowboy back to its initial position.   */  void reset() {    myIsJumping = myNoJumpInt;    setRefPixelPosition(myInitialX, myInitialY);    setFrameSequence(FRAME_SEQUENCE);    myScoreThisJump = 0;    // at first the cowboy faces right:    setTransform(TRANS_NONE);  }  //---------------------------------------------------------  //   graphics  /**   * alter the cowboy image appropriately for this frame..   */  void advance(int tickCount, boolean left) {    if(left) {      // use the mirror image of the cowboy graphic when       // the cowboy is going towards the left.      setTransform(TRANS_MIRROR);      move(-1, 0);    } else {      // use the (normal, untransformed) image of the cowboy       // graphic when the cowboy is going towards the right.      setTransform(TRANS_NONE);      move(1, 0);    }    // this section advances the animation:     // every third time through the loop, the cowboy     // image is changed to the next image in the walking     // animation sequence:    if(tickCount % 3 == 0) { // slow the animation down a little      if(myIsJumping == myNoJumpInt) {	// if he's not jumping, set the image to the next 	// frame in the walking animation:	nextFrame();      } else {	// if he's jumping, advance the jump:	// the jump continues for several passes through 	// the main game loop, and myIsJumping keeps track 	// of where we are in the jump:	myIsJumping++;	if(myIsJumping < 0) {	  // myIsJumping starts negative, and while it's 	  // still negative, the cowboy is going up.  	  // here we use a shift to make the cowboy go up a 	  // lot in the beginning of the jump, and ascend 	  // more and more slowly as he reaches his highest 	  // position:	  setRefPixelPosition(getRefPixelX(), 			      getRefPixelY() - (2<<(-myIsJumping)));	} else {	  // once myIsJumping is negative, the cowboy starts 	  // going back down until he reaches the end of the 	  // jump sequence:	  if(myIsJumping != -myNoJumpInt - 1) {	    setRefPixelPosition(getRefPixelX(), 				getRefPixelY() + (2<<myIsJumping));	  } else {	    // once the jump is done, we reset the cowboy to 	    // his non-jumping position:	    myIsJumping = myNoJumpInt;	    setRefPixelPosition(getRefPixelX(), myInitialY);	    // we set the image back to being the walking 	    // animation sequence rather than the jumping image:	    setFrameSequence(FRAME_SEQUENCE);	    // myScoreThisJump keeps track of how many points 	    // were scored during the current jump (to keep 	    // track of the bonus points earned for jumping 	    // multiple tumbleweeds).  Once the current jump is done, 	    // we set it back to zero.  	    myScoreThisJump = 0;	  }	}      }    }  }  /**   * makes the cowboy jump.   */  void jump() {    if(myIsJumping == myNoJumpInt) {      myIsJumping++;      // switch the cowboy to use the jumping image       // rather than the walking animation images:      setFrameSequence(null);      setFrame(0);    }  }  /**   * This is called whenever the cowboy clears a tumbleweed   * so that more points are scored when more tumbleweeds    * are cleared in a single jump.   */  int increaseScoreThisJump() {    if(myScoreThisJump == 0) {      myScoreThisJump++;    } else {      myScoreThisJump *= 2;    }    return(myScoreThisJump);  }}

⌨️ 快捷键说明

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