📄 picpuzzlecanvas.java
字号:
package picturepuzzle;
import javax.microedition.lcdui.*;
/**
* <p>Title: PicturePuzzle</p>
*
* <p>Description: 拼图游戏</p>
*
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: Star Group</p>
*
* @author 王耀
* @version 1.0
*/
public class PicPuzzleCanvas extends Canvas implements CommandListener {
private Picture pic; //图片类,用于分割图片创建游戏
private UIController controller; //UI控制类对象
public static final int PIC_MAXSIZE = 180; //所允许的图片的最大像素
private Command exit = new Command("Exit", Command.EXIT, 1);
private Command abort = new Command("Abort",Command.OK,2);
private Command help = new Command("Help",Command.HELP,2);
public PicPuzzleCanvas(UIController ctrl, Image img) {
pic = new Picture(img);
this.controller = ctrl;
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
setCommandListener(this);
addCommand(exit);
addCommand(abort);
addCommand(help);
}
/**
* commandAction:命令响应函数
* 它在这里仅仅是使用类中的controller变量将相应的事件ID发送出去
*/
public void commandAction(Command command, Displayable displayable) {
if (command == exit) {
controller.handleEvent(UIController.EventID.EVENT_EXIT);
}else if(command == abort){
controller.handleEvent(UIController.EventID.EVENT_GAME_ABORT);
}else if(command == help){
controller.handleEvent(UIController.EventID.EVENT_HELP);
}
}
/**
* keyPressed:按键消息响应函数
* 它响应了所有的数字键的“Pressed”消息
*/
protected void keyPressed(int keyCode){
switch(keyCode){
case KEY_NUM0:
pic.setViewPicState();
break;
case KEY_NUM1:
pic.move(0,0);
break;
case KEY_NUM2:
pic.move(0,1);
break;
case KEY_NUM3:
pic.move(0,2);
break;
case KEY_NUM4:
pic.move(1,0);
break;
case KEY_NUM5:
pic.move(1,1);
break;
case KEY_NUM6:
pic.move(1,2);
break;
case KEY_NUM7:
pic.move(2,0);
break;
case KEY_NUM8:
pic.move(2,1);
break;
case KEY_NUM9:
pic.move(2,2);
break;
}
repaint(); //界面重绘
}
/**
* keyReleased:按键消息响应函数
* 它响应了数字键0的“Released”消息
*/
protected void keyReleased(int keyCode){
if(keyCode == KEY_NUM0){
pic.setPuzzleState();
repaint();
}
}
/**
* paint:绘图函数
* 它在这里只完成很少的工作,图像是Picture对象自绘的
*/
protected void paint(Graphics g) {
int nWidth = getWidth();
int nHeight = getHeight();
g.setColor(0,0,0);
g.fillRect(0,0,nWidth,nHeight);
pic.drawImage(g,nWidth,nHeight);
drawMessage(g);
}
/**
* drawMessage:消息绘制函数
*
*/
private void drawMessage(Graphics g) {
g.setColor(255,0,0);
Font ft = Font.getFont(Font.FACE_SYSTEM,Font.STYLE_PLAIN,Font.SIZE_LARGE);
g.setFont(ft);
g.drawString("当前已经移动" + pic.getStep() + "步",
getWidth()/2, PIC_MAXSIZE+ft.getHeight(),
Graphics.BASELINE | Graphics.HCENTER);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -