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

📄 shrewmouse.java

📁 一个J2ME编译的打地鼠小游戏,供初学者学习
💻 JAVA
字号:
import java.io.IOException;
import java.util.Random;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;


public class ShrewMouse {
	//地洞的坐标,1~9
    static final int Hole_Positions[][] = {
    	{-4, 68},{57, 74},{116, 73},
        {-4,105},{53,108},{114,107},
    	{-5,145},{55,145},{114,143}
    };
    //动作播放帧
    static int Action[];
    static int act1[] = {
    	0,1,2,3,4,5,6,4,2,1,0,
    	-1,-1,-1,-1,-1,-1,-1
    };
    static int act2[] = {
    	0,1,2,3,4,2,1,0,
    	-1,-1,-1,-1,-1
    };
    static Image talpa_img = null;
    static int w;
    static int h;
    static final Random rmd = new Random();
    private int currFrame;   //当前帧
    private int index;
    //出现速度
    private int speed;  //速度调节
    private long lastTime;
    //缩放比率
    private double scale_x;
    private double scale_y;
    
    ShrewMouse(){
    	scale_x = GameScreen.getScaleX();
    	scale_y = GameScreen.getScaleY();
    	try {
			talpa_img = Image.createImage("/talpa.png");
			talpa_img = GameScreen.scaleImage(talpa_img, 
					                          (int)(talpa_img.getWidth()*scale_x),
					                           (int)(talpa_img.getHeight()*scale_y));
			talpa_img = GameScreen.alfImage(talpa_img, -1);    //使图片原先的透明区域恢复
			w = talpa_img.getWidth()/7;
			h = talpa_img.getHeight();
		} catch (IOException e) {
			e.printStackTrace();
		}
		Action = act1;
		currFrame = 0;
		index = (rmd.nextInt()>>>1)%9;
		speed = 5000;  //初始速度
		lastTime = System.currentTimeMillis();  //获取初始时间
    }
    /*绘制*/
    void paint(Graphics g){
    	if(Action.length-1 == currFrame){
    		long now = System.currentTimeMillis();   //当前时间
    		if(now-lastTime > speed){
    		    currFrame = 0;
    	        index = (rmd.nextInt()>>>1)%9;
    	        lastTime = now;
    		}
    	}
    	g.setClip((int)(Hole_Positions[index][0]*scale_x),
    			   (int)(Hole_Positions[index][1]*scale_y), w, h);
    	g.drawImage(talpa_img,(int)(Hole_Positions[index][0]*scale_x)-Action[currFrame]*w, 
    			               (int)(Hole_Positions[index][1]*scale_y), 20);
    }
    /*改变序列*/
    void changeSequence(int squ[]){
    	Action = squ;
    }
    /*改变帧*/
    void changeFrame(){
    	if(currFrame<Action.length-1)
            currFrame++;
    }
    /*获取当前帧*/
    int getFrame(){
    	return currFrame;
    }
    void setFrame(int i){
    	i %= Action.length;
    	currFrame = i;
    }
    /*是否显露在外*/
    boolean isOut(){
    	if(currFrame<7)
    		return true;
    	else
    		return false;
    }
    public int getIndex(){
    	return index;
    }
    /*出现的速度*/
    void setSpeed(int sp){
    	speed = sp;
    }

}

⌨️ 快捷键说明

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