?? 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 + -