📄 kingsprite.java
字号:
import javax.microedition.lcdui.*;import javax.microedition.lcdui.game.*;import java.io.*;import java.util.*;public class KingSprite extends Sprite implements Runnable{ public static boolean gameover=false;//游戏结束 private static boolean interrupt;//运动是否暂停 ,加在run中 public static void setInterrupt(boolean interrupt) { KingSprite.interrupt = interrupt; } private int HP=2;//HP值 //实用的引用 private int screenWidth,screenHeight; private BattleCanvas bc;//设置游戏win,lose private LayerManager layerManager;//结束游戏时,让layer画东西 public KingSprite(Image image,LayerManager layerManager, BattleCanvas bc) {//图片长宽为12,8张图片一起,4个级别 super(image,12,12); defineReferencePixel(6,6); this.layerManager = layerManager; this.bc = bc; screenWidth = bc.getWidth(); screenHeight = bc.getHeight(); this.setRefPixelPosition(screenWidth/2, screenHeight-6); this.setFrameSequence(new int[]{2,3}); //添加到画布 setVisible(true); layerManager.insert(this,0); //自启动 new Thread(this).start(); } public void run(){ while(!gameover){ if(!interrupt){ this.nextFrame(); } try{ Thread.sleep(500); }catch(InterruptedException e){ e.printStackTrace(); } } } public void hurt(){ HP--; //if(HP==3){this.setFrameSequence(new int[]{2,3});} //if(HP==2){this.setFrameSequence(new int[]{4,5});} if(HP==1){this.setFrameSequence(new int[]{0,1});Sound.instance.metalPlayer();} else if(HP<=0){dead();} } private void dead(){ this.explode(); bc.lose();//游戏失败,还有bc.win() } public void explode(){//爆炸方法都是被子弹线程调用 //king消失 this.setVisible(false); layerManager.remove(this); //画出爆炸效果 Image explodeImage = null; try{ explodeImage = Image.createImage("/tank/tentExplode.png"); }catch(IOException e){ e.printStackTrace(); } Sprite explodeSprite = new Sprite(explodeImage,18,18); explodeSprite.defineReferencePixel(9,9); explodeSprite.setRefPixelPosition(screenWidth/2, screenHeight-9); layerManager.insert(explodeSprite, 0); explodeSprite.setVisible(true); int count=0; Sound.instance.kingExplodePlayer(); while(++count<=4){//播放张图片 try { Thread.sleep(200); //keep the explode effect on screen for a short moment }catch (InterruptedException e) { e.printStackTrace(); } while(interrupt){//如果暂停,爆炸效果仍存在 try { Thread.sleep(10); //keep the explode effect on screen for a short moment }catch (InterruptedException e) { e.printStackTrace(); } } explodeSprite.nextFrame(); } explodeSprite.setVisible(false); layerManager.remove(explodeSprite); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -