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

📄 pdoc.java

📁 商业游戏代码
💻 JAVA
字号:

import java.util.Random;

import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;


/**
 * 
 * <P>标题:数据模型类</P>
 * <P>描述:对图片块进行建模</P>
 * <P>作者:supren lee</P>
 * <P>时间:V1.0   2006.9.18</P>
 *
 */



public class PDoc {

	static final short PICV=128;//图片大下
//	大机型
	static final short dx=(176-128)/2;//x坐标
	static final short dy=(208-128)/2-2	;//y坐标
//	static final short vx=120;
//	static final short vy=0;
//	static final short vd=24;
	
	private Image image;
	private Image rect[];//小图片数组
	
	private Graphics g;
	
	private byte level;//难度
	private int imgv;//单元格
	private int x,y;//单元格坐标
	
	private int ok;//完成的数量
	
	private short index[];//索引
//-------------------------------------构造方法--------------------------------
	public PDoc(Image img,byte n){
		image=img;
		level=n;
		rect=new Image[level*level];
		index=new short[level*level];
		imgv=PICV/level;//单元格宽
		makepic(image,level);
		init();
	}
	
//	-------------------------------------初始化模型--------------------------------
	private void init(){
		for(int i=0;i<index.length;i++){
			index[i]=(short)i;
		}
		
	}
//	-------------------------------------构造小图片--------------------------------	
	private Image[] makepic(Image img,byte n){
		
		if(img==null){
			return null;
		}
		
		for(int i=0;i<rect.length;i++){
			rect[i]=Image.createImage(imgv,imgv);
			g=rect[i].getGraphics();
			x=i%n;
			y=(i-x)/n;
			g.translate(-x*imgv,-y*imgv);
			g.drawImage(img,0,0,Graphics.LEFT|Graphics.TOP);
		}
		return rect;
	
	}
	
//	-------------------------------------打乱模型--------------------------------
	public void change(){

		Random rd=new Random();
		int len=index.length;
		short temp;
		int r;
		for(int i=0;i<len;i++){
			r=Math.abs(rd.nextInt()%len);
			temp=index[i];
			index[i]=index[r];  
			index[r]=temp;

		}
		rd=null;
	}
	
	
//	-------------------------------------交换小图片--------------------------------
	public void exchange(int prepoint,int point){
		short temp;
		temp=index[prepoint];
		index[prepoint]=index[point];
		index[point]=temp;
	}
	
	
//	-------------------------------------判断胜利--------------------------------
	public boolean check(){
		ok=0;
		for(int i=0;i<index.length;i++){
			if(index[i]==i){
				ok++;
			}
		}
		if(ok==level*level){
			return true;
		}else{
			return false;
		}
	}
	
//	-------------------------------------渲染模型--------------------------------
	public void render(Graphics g){
		for(int i=0;i<index.length;i++){
			x=i%level;
			y=(i-x)/level;
			g.drawImage(rect[index[i]],dx+x*imgv,dy+y*imgv,Graphics.LEFT|Graphics.TOP);
		}
	}
	
//	-------------------------------------渲染指针--------------------------------
	public void paintp(Graphics g,int point,int prepoint,Image pointpic,Image prepointpic){
		int x=point%level;
		int y=(point-x)/level;
		g.drawImage(pointpic,dx+x*imgv+imgv/2,dy+y*imgv+imgv/2,Graphics.HCENTER|Graphics.VCENTER);
		if(prepoint!=-1){
			x=prepoint%level;
			y=(prepoint-x)/level;
			g.drawImage(prepointpic,dx+x*imgv+imgv/2,dy+y*imgv+imgv/2,Graphics.HCENTER|Graphics.VCENTER);
		}
	}
	
//#ifdef _BT	
//	-------------------------------------取得完成的数量--------------------------------
	public String ok(){
		check();
		return Integer.toString(ok);
	}
//#endif
	
	
//	-------------------------------------释放图片--------------------------------
	public void release(){
		for(int i=0;i<rect.length;i++){
			rect[i]=null;
		}
	}
	
	
}

⌨️ 快捷键说明

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