📄 jumpmanager.java
字号:
import javax.microedition.lcdui.*;import javax.microedition.lcdui.game.*;public class JumpManager extends javax.microedition.lcdui.game.LayerManager { static int CANVAS_X; // 显示的位置及大小 static int CANVAS_Y; static int DISP_WIDTH; static int DISP_HEIGHT; Cowboy myCowboy; // 牛仔 Tumbleweed[] myLeftTumbleweeds; // 从左边来的风火轮 Tumbleweed[] myRightTumbleweeds;// 从右边来的风火轮 Grass myGrass; // 草地对象 boolean myLeft; // 牛仔是否向左 int myCurrentLeftX; //左边位置 void setLeft(boolean left) { myLeft = left; } /** * 构造方法 */ public JumpManager(int x, int y, int width, int height) { CANVAS_X = x; CANVAS_Y = y; DISP_WIDTH = width; DISP_HEIGHT = height; myCurrentLeftX = Grass.CYCLE*Grass.TILE_WIDTH; setViewWindow(0, 0, DISP_WIDTH, DISP_HEIGHT); } /** * 重置 */ void reset() { if(myGrass != null) { myGrass.reset(); } if(myCowboy != null) { myCowboy.reset(); } if(myLeftTumbleweeds != null) { for(int i = 0; i < myLeftTumbleweeds.length; i++) { myLeftTumbleweeds[i].reset(); } } if(myRightTumbleweeds != null) { for(int i = 0; i < myRightTumbleweeds.length; i++) { myRightTumbleweeds[i].reset(); } } myLeft = false; myCurrentLeftX = Grass.CYCLE*Grass.TILE_WIDTH; } /** * 绘制 */ public void paint(Graphics g) throws Exception { // 创建牛仔 if(myCowboy == null) { myCowboy = new Cowboy(myCurrentLeftX + DISP_WIDTH/2, DISP_HEIGHT - Cowboy.HEIGHT - 2); append(myCowboy); } // 风火轮 if(myLeftTumbleweeds == null) { myLeftTumbleweeds = new Tumbleweed[2]; for(int i = 0; i < myLeftTumbleweeds.length; i++) { myLeftTumbleweeds[i] = new Tumbleweed(true); append(myLeftTumbleweeds[i]); } } if(myRightTumbleweeds == null) { myRightTumbleweeds = new Tumbleweed[2]; for(int i = 0; i < myRightTumbleweeds.length; i++) { myRightTumbleweeds[i] = new Tumbleweed(false); append(myRightTumbleweeds[i]); } } // 草地 if(myGrass == null) { myGrass = new Grass(); append(myGrass); } // 设置视口 setViewWindow(myCurrentLeftX, 0, DISP_WIDTH, DISP_HEIGHT); paint(g, CANVAS_X, CANVAS_Y); } /** * 如果牛仔到了边缘,则重置所有对象的位置 */ void wrap() { if(myCurrentLeftX % (Grass.TILE_WIDTH*Grass.CYCLE) == 0) { if(myLeft) { myCowboy.move(Grass.TILE_WIDTH*Grass.CYCLE, 0); myCurrentLeftX += (Grass.TILE_WIDTH*Grass.CYCLE); for(int i = 0; i < myLeftTumbleweeds.length; i++) { myLeftTumbleweeds[i].move(Grass.TILE_WIDTH*Grass.CYCLE, 0); } for(int i = 0; i < myRightTumbleweeds.length; i++) { myRightTumbleweeds[i].move(Grass.TILE_WIDTH*Grass.CYCLE, 0); } } else { myCowboy.move(-(Grass.TILE_WIDTH*Grass.CYCLE), 0); myCurrentLeftX -= (Grass.TILE_WIDTH*Grass.CYCLE); for(int i = 0; i < myLeftTumbleweeds.length; i++) { myLeftTumbleweeds[i].move(-Grass.TILE_WIDTH*Grass.CYCLE, 0); } for(int i = 0; i < myRightTumbleweeds.length; i++) { myRightTumbleweeds[i].move(-Grass.TILE_WIDTH*Grass.CYCLE, 0); } } } } /** * 步进,传入参数是时间,返回值是得分 */ int advance(int gameTicks) { int retVal = 0; // 改变当前的位置 if(myLeft) { myCurrentLeftX--; } else { myCurrentLeftX++; } // 让各个图层对象都步进一点,并获得分数 myGrass.advance(gameTicks); myCowboy.advance(gameTicks, myLeft); for(int i = 0; i < myLeftTumbleweeds.length; i++) { retVal += myLeftTumbleweeds[i].advance(myCowboy, gameTicks, myLeft, myCurrentLeftX, myCurrentLeftX + DISP_WIDTH); retVal -= myCowboy.checkCollision(myLeftTumbleweeds[i]); } for(int i = 0; i < myLeftTumbleweeds.length; i++) { retVal += myRightTumbleweeds[i].advance(myCowboy, gameTicks, myLeft, myCurrentLeftX, myCurrentLeftX + DISP_WIDTH); retVal -= myCowboy.checkCollision(myRightTumbleweeds[i]); } // 如果需要则进行回转 wrap(); return(retVal); } /** * 跳动 */ void jump() { myCowboy.jump(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -