📄 tankrandom.java
字号:
package demo;import java.io.IOException;import java.util.Random;import javax.microedition.lcdui.game.GameCanvas;import javax.microedition.lcdui.game.Sprite;public class TankRandom implements Runnable { private static final int SPEED = 1; private static final int TIME = 50; private TankCanvas canvas; private Sprite sprite; private byte preDirect; private byte direction; private boolean interrupted; private int[] downSeq; private int downTrans; private int[] upSeq; private int upTrans; private int[] leftSeq; private int leftTrans; private int[] rightSeq; private int rightTrans; private Random rand; public TankRandom(TankCanvas canvas, Sprite sprite) { this.canvas = canvas; this.sprite = sprite; } public void setSequences( int[] upSeq, int upTrans,int[] downSeq, int downTrans, int[] leftSeq, int leftTrans, int[] rightSeq, int rightTrans) { this.upSeq = upSeq; this.upTrans = upTrans; this.downSeq = downSeq; this.downTrans = downTrans; this.leftSeq = leftSeq; this.leftTrans = leftTrans; this.rightSeq = rightSeq; this.rightTrans = rightTrans; } public byte randDirect(){ byte randDirect = 0; rand = new Random(); int k = rand.nextInt(4); if(k==0) randDirect = GameCanvas.UP; if(k==1) randDirect = GameCanvas.LEFT; if(k==2) randDirect = GameCanvas.DOWN; if(k==3) randDirect = GameCanvas.RIGHT; return randDirect; } public void stop() { interrupted = true; } public void spriteMove(int speed){ if(direction==GameCanvas.UP){ sprite.move(0, -speed); } if(direction==GameCanvas.LEFT){ sprite.move(-speed, 0); } if(direction==GameCanvas.DOWN){ sprite.move(0, speed); } if(direction==GameCanvas.RIGHT){ sprite.move(speed, 0); } } public void setTrans(){ if (direction==GameCanvas.UP) { sprite.setFrameSequence(upSeq); sprite.setTransform(upTrans); } if (direction==GameCanvas.DOWN) { sprite.setFrameSequence(downSeq); sprite.setTransform(downTrans); } if (direction==GameCanvas.LEFT){ sprite.setFrameSequence(leftSeq); sprite.setTransform(leftTrans); } if (direction==GameCanvas.RIGHT){ sprite.setFrameSequence(rightSeq); sprite.setTransform(rightTrans); } return; } public void collidesWithSprite(){ spriteMove(-SPEED); canvas.sleepTime(500); direction = randDirect(); setTrans(); while(canvas.spriteCollides(sprite) &&(preDirect != direction)){ spriteMove(SPEED); } return; } public void collidesWithWall(){ while(sprite.getX()<0){ if(canvas.spriteCollides(sprite)) collidesWithSprite(); this.direction = GameCanvas.RIGHT; setTrans(); spriteMove(SPEED); canvas.sleepTime(TIME); } while(sprite.getX()>(canvas.getWidth()-sprite.getWidth())){ if(canvas.spriteCollides(sprite)) collidesWithSprite(); direction = GameCanvas.LEFT; setTrans(); spriteMove(SPEED); canvas.sleepTime(TIME); } while(sprite.getY()<0){ if(canvas.spriteCollides(sprite)) collidesWithSprite(); direction = GameCanvas.DOWN; setTrans(); spriteMove(SPEED); canvas.sleepTime(TIME); } while(sprite.getY()>canvas.getHeight()-sprite.getHeight()){ if(canvas.spriteCollides(sprite)) collidesWithSprite(); direction = GameCanvas.UP; setTrans(); spriteMove(SPEED); canvas.sleepTime(TIME); } } public void run() { direction = randDirect(); preDirect = direction; int cnt1 = 0, cnt2 = 0; int rot = rand.nextInt(100); int shut = 0; while (!interrupted) { cnt1 ++; cnt2 ++; rand = new Random(); if(cnt1 > rot){ canvas.sleepTime(500); direction = randDirect(); preDirect = direction; cnt1 = 0; rot = rand.nextInt(100); } if (direction == GameCanvas.DOWN) { preDirect = GameCanvas.DOWN; } else if (direction == GameCanvas.UP) { preDirect = GameCanvas.UP; } else if (direction == GameCanvas.LEFT) { preDirect = GameCanvas.LEFT; } else if (direction == GameCanvas.RIGHT) { preDirect = GameCanvas.RIGHT; } setTrans(); spriteMove(SPEED); if(canvas.spriteCollides(sprite)||canvas.wallCollides(sprite)){ collidesWithSprite(); collidesWithWall(); } if(cnt2 > shut){ cnt2 = 0; shut = rand.nextInt(50); try { canvas.shutGreenBullet(sprite, direction); canvas.shutGreenBullet(sprite, direction); } catch (IOException ex) { ex.printStackTrace(); } catch (InterruptedException ex) { ex.printStackTrace(); } } canvas.sleepTime(TIME); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -