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

📄 tools.java

📁 在学校时写的一个游戏DEMO
💻 JAVA
字号:
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;

public class Tools {
	public static final int KEY_UP = 2;
	public static final int KEY_DOWN = 4;
	public static final int KEY_LEFT = 8;
	public static final int KEY_RIGHT = 16;
	public static final int KEY_FIRE = 32;
	protected static final int SCREEN_WIDTH=176;//屏幕宽度
	protected static final int SCREEN_HEIGHT=160;//屏幕高度
	int objectIndex;//表示那个对象的动作序列
	int actionIndex;//哪个对象的哪的动作
	int frameIndex;//表示哪个动作中的哪一帧
	int x;//角色坐标
	int y;
	boolean isRight;//是否向右
	protected static final void drawNpcItemData(Graphics g,int objectIndex,int actionIndex,int frameIndex,
													int posX,int posY,boolean isRight){
		int ID = Data.npcItem0[objectIndex][actionIndex][frameIndex][0];
		int offsetX = Data.npcItem0[objectIndex][actionIndex][frameIndex][1];
		int offsetY = Data.npcItem0[objectIndex][actionIndex][frameIndex][2]-8;//在用地图编辑器是没注意,所以-8
		int tempX;
		int tempY;
		g.setColor(0xff0000);
		if(isRight){
			tempX=posX+offsetX-(Data.allItemData[ID][3]>>1);
			tempY=posY+offsetY-(Data.allItemData[ID][4]>>1);
//			g.drawRect(tempX,tempY,MapData.allImage[ID].getWidth(),MapData.allImage[ID].getHeight());
			g.drawImage(Data.allImage[ID],tempX - Map.leftTopX,tempY - Map.leftTopY,0);
			if(Data.npcItem0[objectIndex][actionIndex][frameIndex].length==7){
//				g.drawRect(tempX - Map.leftTopX+Data.npcItem0[objectIndex][actionIndex][frameIndex][3],tempY - Map.leftTopY+Data.npcItem0[objectIndex][actionIndex][frameIndex][4],
//						Data.npcItem0[objectIndex][actionIndex][frameIndex][5],Data.npcItem0[objectIndex][actionIndex][frameIndex][6]);
			}
		}else{
            Image img = getTransImage(Data.allImage[ID]);
//			g.drawRect(tempX,tempY,MapData.allImage[ID].getWidth(),MapData.allImage[ID].getHeight());
//            System.out.println(frameIndex);
            int tx=img.getWidth();
            if(img.getWidth()%2!=0){
            	tx+=1;
            }
            tempX=posX-offsetX-(tx>>1);
			tempY=posY+offsetY-(Data.allItemData[ID][4]>>1);
			g.drawImage(img,tempX - Map.leftTopX,tempY - Map.leftTopY,0);
			if(Data.npcItem0[objectIndex][actionIndex][frameIndex].length==7){
//				System.out.println("有");
//				g.drawRect(tempX - Map.leftTopX,tempY - Map.leftTopY+Data.npcItem0[objectIndex][actionIndex][frameIndex][4],
//						Data.npcItem0[objectIndex][actionIndex][frameIndex][5],Data.npcItem0[objectIndex][actionIndex][frameIndex][6]);
			}
		}
//		g.drawRect(tempX - Map.leftTopX,tempY - Map.leftTopY,Data.allItemData[ID][3],Data.allItemData[ID][4]);
	}
	//**********************************以下为碰撞处理*******************//
	public static final boolean isInRect(int x1, int y1, int w1, int h1, 
										int x2, int y2,int w2, int h2) //检测两个矩形是否相交
	{
		if (y2 + h2 < y1 || // 矩形B是否在矩形A上(情况1)
			y2 > y1 + h1 || // 矩形B是否在矩形A下(情况2)
			x2 + w2 < x1 || // 矩形B是否在矩形A的左边(情况3)
			x2 > x1 + w1) // 矩形B是否在矩形A的右边(情况4)
		{ //有上述一种情况者不发生碰撞
			return false;
		}
		else //反之碰撞
		{
			return true;
		}
	}
	//********************以下为左右镜像方法***********************//
//	public Image getTransImage(Image srcImage, int sub_x, int sub_y, int sub_w, int sub_h, int transform)
//	{
//		Image result = null;
//		
//        int srcW = sub_w;
//        int srcH = sub_h;
//        
//        Graphics g = null;
//        
//        // 左右镜像变换
//        //result = Image.createImage(srcImage, 0, 0, srcW, srcH, Sprite.TRANS_MIRROR);
//        result = Image.createImage(srcW, srcH);
//        g = result.getGraphics();
//        for ( int i = 0; i < srcW; i++ ) {
//        	g.setClip(i, 0, 1, srcH);
//        	g.drawImage(srcImage, i * 2 - srcW - sub_x, 0, Graphics.TOP | Graphics.LEFT);
//        }
//        
//		return result;
//	}
	public static Image getTransImage(Image srcImage){
		return Image.createImage(srcImage,0,0,srcImage.getWidth(),srcImage.getHeight(),Sprite.TRANS_MIRROR);
	}
	//*******************************画动画***********************//
	
}

⌨️ 快捷键说明

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