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

📄 mycanvas.java

📁 是基于J2ME的一个模拟手机的界面可以实现手机收发短信基于客户端和服务器端的功能
💻 JAVA
字号:
package phone.mediaSound.game.jigsaw;

import java.io.IOException;
import java.util.Date;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import java.util.Vector;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.TiledLayer;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class MyCanvas extends GameCanvas implements Runnable, CommandListener {
	private Form form;

	private Command cmdBack;

	private Display display;

	private Image image;

	private TiledLayer tilerd;

	private Vector vc;

	private Graphics g;

	private LayerManager manager;

	private int data[][];// 用来表示每一网格的状态的数组,每个元素的只是 图像tilerd的序号

	private int x, y;

	private int count = 0;

	private JigsawMain pt;

	public MyCanvas(JigsawMain pt, Display display) {
		super(true);
		this.pt = pt;
		this.display = display;
		cmdBack = new Command("back", Command.BACK, 1);
		data = new int[4][4];
		g = this.getGraphics();
		manager = new LayerManager();
		vc = new Vector();
		try {
			image = Image
					.createImage("/phone/mediaSound/game/jigsaw/pictures/1.png");
		} catch (IOException e) {
			e.printStackTrace();
		}
		tilerd = new TiledLayer(3, 3, image, image.getWidth() / 3, image
				.getHeight() / 3);
		for (int i = 1; i < 9; i++) {//
			vc.addElement(i + "");
		}
		for (int j = 0; j < 3; j++) {
			for (int i = 0; i < 3; i++) {
				if (vc.size() > 0) {
					int temp = Math.abs((new Random(((new Date()).getTime())))
							.nextInt());
					temp = temp % vc.size();
					int m = Integer.parseInt(vc.elementAt(temp).toString());
					tilerd.setCell(i, j, m);
					vc.removeElementAt(temp);
					data[j][i] = m;
				}
			}
		}
		data[2][2] = 0;// 确定右下角的为空白
		x = 2;
		y = 2;

		manager.append(tilerd);
		manager.paint(g, 0, 0);

		Thread th = new Thread(this);
		th.start();

	}

	public void run() {
		while (true) {
			try {
				int key = this.getKeyStates();
				// System.out.println(key);
				if ((key & this.DOWN_PRESSED) != 0) {
					if (x > 0) {
						x = x - 1;
						data[x + 1][y] = data[x][y];
						data[x][y] = 0;
						tilerd.setCell(y, x, data[x][y]);
						tilerd.setCell(y, x + 1, data[y][x + 1]);
						count++;
					}
				}
				if ((key & this.UP_PRESSED) != 0) {
					if (x < 2) {
						x = x + 1;
						data[x - 1][y] = data[x][y];
						data[x][y] = 0;
						tilerd.setCell(y, x, 0);
						tilerd.setCell(y, x - 1, data[x - 1][y]);
						count++;
					}
				}
				if ((key & this.LEFT_PRESSED) != 0) {
					if (y < 2) {
						data[x][y] = data[x][y + 1];
						data[x][y + 1] = 0;
						tilerd.setCell(y, x, data[x][y]);
						tilerd.setCell(y + 1, x, data[x][y + 1]);
						y = y + 1;
						count++;
					}
				}
				if ((key & this.RIGHT_PRESSED) != 0) {
					if (y > 0) {
						data[x][y] = data[x][y - 1];
						data[x][y - 1] = 0;
						tilerd.setCell(y, x, data[x][y]);
						tilerd.setCell(y - 1, x, data[x][y - 1]);
						y = y - 1;
						count++;
					}
				}
				g.fillRect(0, 0, 240, 240);// 图像区域内重画
				manager.paint(g, 0, 0);
				this.flushGraphics();
				for (int i = 0; i < 3; i++) {
					for (int j = 0; j < 3; j++) {
						if (i != 2 && j != 2) {
							if (data[i][j] != i * 3 + j + 1) {
								break;
							}
						}
					}
				}
				if (count == 20) {
					String str = Integer.toString(count);
					form = new Form("");
					form.append("你共走了" + str + "步");

					form.addCommand(cmdBack);
					form.setCommandListener(this);
					display.setCurrent(form);
					break;
				}

				// Timer t1 = new Timer();
				// Time time=new Time();
				// t1.schedule(time, 0, 1000);

				Thread.sleep(200);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

	}

	public void commandAction(Command command, Displayable dis) {
		if (command == cmdBack) {
			pt.show();
		}

	}
}

⌨️ 快捷键说明

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