📄 mycanvas.java
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package com.puzzle.j2me;import javax.microedition.lcdui.Canvas;import javax.microedition.lcdui.Graphics;import javax.microedition.lcdui.Image;import java.util.Random;/** * * @author Paddy */public class MyCanvas extends Canvas{ public int[][] pics = new int[4][3]; public Image[] images = new Image[12]; public int step = 0; public int spaceX = 2; public int spaceY = 3; public int spaceValue = 0; public String[] imgSrc = new String[12]; public MyCanvas() { this.setFullScreenMode(true); for (int i = 0; i < 4; i++) { for (int j = 0; j < 3; j++) { pics[i][j] = i * 3 + j + 1; } } //pics[3][2] = 0; Random rand = new Random(); for (int i = 0; i < 3; i++) { int x1 = rand.nextInt(3); int y1 = rand.nextInt(3); int x2 = rand.nextInt(3); int y2 = rand.nextInt(3); int n = pics[y1][x1]; pics[y1][x1] = pics[y2][x2]; pics[y2][x2] = n; } for (int i = 1; i <= 9; i++) { imgSrc[i] = "/img_r" + String.valueOf((i + 2) / 3) + "_c" + String.valueOf((i - 1) % 3 + 1) + ".png"; try { images[i] = Image.createImage(imgSrc[i]); } catch (Exception e) { //不做处理 } } try { images[10] = Image.createImage("/img_0.png"); } catch (Exception e) { //不做处理 } } public void clearBackground(Graphics g) { int color = g.getColor(); g.setColor(0xffffff); g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(color); } public void paint(Graphics g) { clearBackground(g); g.setColor(0x000000); g.drawRect(1, 1, 237, 317); g.drawLine(1, 80, 237, 80); g.drawLine(1, 159, 237, 159); g.drawLine(1, 238, 237, 238); g.drawLine(80, 1, 80, 238); g.drawLine(159, 1, 159, 317); //根据pics数组和images数组的内容绘图到网格中 for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { g.drawImage(images[pics[i][j]], j * 79 + 2, i * 79 + 2, Graphics.TOP | Graphics.LEFT); } } g.drawImage(images[pics[3][2]], 160, 239, Graphics.TOP | Graphics.LEFT); g.drawString("步数:", 20, 300, Graphics.BOTTOM | Graphics.LEFT); g.setColor(0xcccccc); g.fillRect(60, 280, 60, 20); g.setColor(0xffff0f); g.drawString(String.valueOf(step), 75, 300, Graphics.BOTTOM | Graphics.LEFT); } public void keyPressed(int keyCode) { switch (getGameAction(keyCode)) { case RIGHT: right(); break; case LEFT: left(); break; case UP: up(); break; case DOWN: down(); break; } repaint(); if(win()) { down(); up(); left(); right(); } } //spaceX = 2; //spaceY = 3 public void up() { if (spaceY < 2 || (spaceX == 2 && spaceY == 2)) { pics[spaceY][spaceX] = pics[spaceY + 1][spaceX]; pics[spaceY + 1][spaceX] = 10; spaceY++; step++; } } public void down() { if (spaceY > 0) { pics[spaceY][spaceX] = pics[spaceY - 1][spaceX]; pics[spaceY - 1][spaceX] = 10; spaceY--; step++; } } public void left() { if (spaceX < 2) { pics[spaceY][spaceX] = pics[spaceY][spaceX + 1]; pics[spaceY][spaceX + 1] = 10; spaceX++; step++; } } public void right() { if (spaceX > 0 && spaceY < 3 ) { pics[spaceY][spaceX] = pics[spaceY][spaceX - 1]; pics[spaceY][spaceX - 1] = 10; spaceX--; step++; } } public boolean win() { for(int i = 0; i < 4; i++) { for( int j = 0; j <3; j++) { if (pics[i][j] != i * 3 + j + 1) return false; } } return true; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -