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

📄 puzzlemidlet.java

📁 手机游戏
💻 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 + -