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

📄 picpuzzlecanvas.java

📁 利用J2ME在手机上实现的简单的拼图游戏。
💻 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 + -