?? 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; //圖片類,用于分割圖片創(chuàng)建游戲
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:命令響應(yīng)函數(shù)
* 它在這里僅僅是使用類中的controller變量將相應(yīng)的事件ID發(fā)送出去
*/
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:按鍵消息響應(yīng)函數(shù)
* 它響應(yīng)了所有的數(shù)字鍵的“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:按鍵消息響應(yīng)函數(shù)
* 它響應(yīng)了數(shù)字鍵0的“Released”消息
*/
protected void keyReleased(int keyCode){
if(keyCode == KEY_NUM0){
pic.setPuzzleState();
repaint();
}
}
/**
* paint:繪圖函數(shù)
* 它在這里只完成很少的工作,圖像是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:消息繪制函數(shù)
*
*/
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("當(dāng)前已經(jīng)移動(dòng)" + pic.getStep() + "步",
getWidth()/2, PIC_MAXSIZE+ft.getHeight(),
Graphics.BASELINE | Graphics.HCENTER);
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -