📄 puzzlemidlet.java
字号:
import java.util.Random;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui .*;
public class PuzzleMidlet extends MIDlet
{
private static MainCanvas m_MainCanvas;
public PuzzleMidlet()
{
super();
// TODO Auto-generated constructor stub
}
protected void startApp() throws MIDletStateChangeException
{
if(m_MainCanvas==null)
{
try
{
m_MainCanvas=new MainCanvas(this);
}
catch(Exception e)
{
System.out.print(e);
}
Display.getDisplay(this).setCurrent(m_MainCanvas);
}
// TODO Auto-generated method stub
}
protected void pauseApp()
{
m_MainCanvas.stop();
// TODO Auto-generated method stub
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException
{
// TODO Auto-generated method stub
m_MainCanvas.stop();
}
}
class MainCanvas extends Canvas implements CommandListener,Runnable
{
public Image m_aImg[];
public int m_anCur[][];
public int m_nHidX,m_nHidY;
public int m_nSta;
private Command ExitCommand;
private PuzzleMidlet midlet;
public MainCanvas(PuzzleMidlet nMidlet)
{
midlet=nMidlet;
try
{
ExitCommand=new Command("Exit",Command.EXIT,0);
addCommand(ExitCommand);
setCommandListener(this);
m_nHidX=2;
m_nSta=0;
InitCurrent();
m_aImg=new Image[9];
StringBuffer temp=null;
for(int i=0;i<9;i++)
{
temp=new StringBuffer();
temp.append("/pic");
temp.append(i);
temp.append(".png");
m_aImg[i]=Image.createImage(temp.toString());
temp=null;
}
}
catch(Exception e)
{
}
Thread thread=new Thread(this);
thread.start();
}
public void InitCurrent()
{
Random random=new Random();
m_anCur=new int[][]{{0,1,2},{3,4,5},{6,7,8}};
int Rx,Ry,k,nTemp;
for(int x=0;x<3;x++)
{
for(int y=0;y<3;y++)
{
k=random.nextInt();
Rx=Math.abs(k%3);
k=random.nextInt();
Ry=Math.abs(k%3);
if(Rx!=x||Ry!=y)
{
nTemp=m_anCur[y][x];
m_anCur[y][x]=m_anCur[Ry][Rx];
m_anCur[Ry][Rx]=nTemp;
}
}
}
}
protected void paint(Graphics g)
{
g.setColor(0);
g.fillRect(0, 0, getWidth(), getHeight());
int nImg=0;
switch(m_nSta)
{
case 0:
for(int x=0;x<3;x++)
{
for(int y=0;y<3;y++)
{
if(x==m_nHidX&&y==m_nHidY)
continue;
nImg=m_anCur[y][x];
if(nImg>=0&&nImg<9)
{
if(m_aImg[nImg]!=null)
g.drawImage(m_aImg[nImg],x*30,y*30,Graphics.LEFT|Graphics.TOP);
}
}
}
g.setColor(0xffffff);
for(int i=0;i<=3;i++)
{
g.drawLine(0, i*30, 3*30, i*30);
g.drawLine(i*30, 0, i*30, 3*30);
}
break;
case 1:
for(int x=0;x<3;x++)
{
for(int y=0;y<3;y++)
{
nImg=y*3+x;
if(m_aImg[nImg]!=null)
g.drawImage(m_aImg[nImg],x*30,y*30,Graphics.LEFT|Graphics.TOP);
}
}
break;
case 2:
default:
g.drawString("Good", 10, 45, Graphics.LEFT|Graphics.TOP);
break;
}
}
private boolean CheckMove(int nX,int nY)
{
if(nX<0||nX>=3||nY>=3)
return false;
if(m_nHidX==nX&&m_nHidY==nY)
return false;
if(nX>0&&nX-1==m_nHidX&&nY==m_nHidY)
return true;
if(nX<2&&nX+1==m_nHidX&&nY==m_nHidY)
return true;
if(nY>0&&nY+1==m_nHidY&&nX==m_nHidX)
return true;
if(nY<2&&nY+1==m_nHidY&&nX==m_nHidX)
return true;
return false;
}
private void sweep(int x,int y)
{
if(!CheckMove(x,y))
return;
int temp=m_anCur[y][x];
m_anCur[y][x]=m_anCur[m_nHidY][m_nHidX];
m_anCur[m_nHidY][m_nHidX]=temp;
m_nHidY=y;
m_nHidX=x;
}
protected void keyPressed(int keyCode)
{
System.out.println("aaaa");
if(m_nSta==2)
return;
switch(keyCode)
{
case KEY_NUM1:
sweep(0,0);
break;
case KEY_NUM2:
sweep(1,0);
break;
case KEY_NUM3:
sweep(2,0);
break;
case KEY_NUM4:
sweep(0,1);
break;
case KEY_NUM5:
sweep(1,1);
break;
case KEY_NUM6:
sweep(2,1);
break;
case KEY_NUM7:
sweep(0,2);
break;
case KEY_NUM8:
sweep(1,2);
break;
case KEY_NUM9:
sweep(2,2);
break;
case KEY_NUM0:
if(m_nSta==0)
m_nSta=1;
else
m_nSta=0;
break;
}
if(isFinish())
m_nSta=2;
}
public boolean isFinish()
{
for(int x=0;x<3;x++)
{
for(int y=0;y<3;y++)
{
if(m_anCur[y][x]!=y*3+x)
return false;
}
}
return true;
}
public void commandAction(Command c,Displayable s)
{
//if(c.getCommandType()==Command.EXIT)
if(c.getCommandType()==Command.EXIT)
{
midlet.notifyDestroyed();
}
}
public void run()
{
while(true)
{
try
{
repaint(0,0,getWidth(),getHeight());
}
catch(Exception e)
{
}
}
}
public void stop()
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -