📄 pdoc.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 + -