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

📄 canvas01_dishutu02.java

📁 本光盘是《J2ME无线移动游戏开发》一书的配套光盘
💻 JAVA
字号:
package ch05;

import java.util.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

public class canvas01_dishutu02
    extends GameCanvas {
  Image image, kk;
  Random r;
  Graphics g = getGraphics();
  //获得整个屏幕的宽度和高度
  int W = getWidth();
  int H = getHeight();
  private int w = W / 3, h = H / 3;

  //设置游戏的速度快慢
  static int sleep = 2000;

  //声明2个移动的参数
  static int i, j;

  //声明一个控制的数组;
  static int array, arraa, junzhi;

  //声明一个控制绘制的Timer对象
  private Timer tm;

  //声明一个实现绘制的TimerTask对象
  private TimerTask tt;
  public canvas01_dishutu02() {
    super(false);
    //执行绘制线程
    tm = new Timer();
    tt = new DrawTask();
    tm.scheduleAtFixedRate(tt, 0, sleep);
  }

  //启动绘制
  public void paint() {
    render(g);
  }

//刷新矩形的画法
  void start(Graphics g) {
    g.setColor(0x80ffff);
    g.fillRect(0, 0, W, H);
    g.setColor(0xff0000);
    g.drawLine(0, H / 3, W, H / 3);
    g.drawLine(0, 2 * H / 3, W, 2 * H / 3);
    g.drawLine(W / 3, 0, W / 3, H);
    g.drawLine(2 * W / 3, 0, 2 * W / 3, H);
    g.setColor(0x00c000);
    g.drawArc(0, H / 3, W / 3, H / 3, 0, 360);
    g.drawArc(0, 0, W / 3, H / 3, 0, 360);
    g.drawArc(W / 3, 0, W / 3, H / 3, 0, 360);
    g.drawArc(2 * W / 3, 0, W / 3, H / 3, 0, 360);
    g.drawArc(W / 3, H / 3, W / 3, H / 3, 0, 360);
    g.drawArc(2 * W / 3, H / 3, W / 3, H / 3, 0, 360);
    g.drawArc(0, 2 * H / 3, W / 3, H / 3, 0, 360);
    g.drawArc(W / 3, 2 * H / 3, W / 3, H / 3, 0, 360);
    g.drawArc(2 * W / 3, 2 * H / 3, W / 3, H / 3, 0, 360);
    flushGraphics();
  }

//画地鼠的图形
  void mouse(Graphics g) {
    r = new Random();
    i = ( (r.nextInt() >>> 1) % 3) * w;
    j = ( (r.nextInt() >>> 1) % 3) * h;
    g.setColor(0xff);
    g.drawLine( (int) 0.8 * w / 7 + i, (int) 5.5 * h / 8 + j,
               (int) 2.3 * w / 7 + i,
               (int) 4.5 * h / 8 + j);
    g.drawLine( (int) 0.8 * w / 7 + i, (int) 5.5 * h / 8 + j,
               (int) 2.5 * w / 7 + i,
               (int) 5.5 * h / 8 + j);
    g.drawArc( (int) 1.8 * w / 7 + i, 2 * h / 8 + j, (int) 2.5 * w / 7,
              (int) 2.5 * h / 8, 305, 330);
    g.drawArc( (int) 2.1 * w / 7 + i, 4 * h / 8 + j, (int) 2.5 * w / 7,
              (int) 2.5 * h / 8, 180, 300);
    g.drawArc( (int) 3.7 * w / 7 + i, (int) 2.2 * h / 8 + j,
              (int) 3.1 * w / 7,
              (int) 4.2 * h / 8, 300, 230);
    g.drawArc( (int) 6 * w / 7 + i, (int) 3.4 * h / 8 + j, (int) 1.9 * w / 7,
              (int) 3.7 * h / 8, 290, 230);
    g.fillArc( (int) 1.7 * w / 7 + i, (int) 4.6 * h / 8 + j, (int) 1 * w / 7,
              (int) 1 * h / 8, 0, 360);
    flushGraphics();
  }

//打中后的图形
  void jiang(Graphics g) {
    array++;
    try {
      image = Image.createImage("/icons/background/star.png");
      g.drawImage(image, 3 * w / 8 + i, 3 * h / 8 + j, 0);
    }
    catch (Exception oo) {
    }
    flushGraphics();
  }

//没打中后的图形
  void fa(Graphics g) {
    try {
      image = Image.createImage("/icons/rankrecord/splash.png");
      g.drawImage(image, w / 8 + i, 2 * h / 8 + j, 0);
    }
    catch (Exception oo) {
    }
    flushGraphics();
  }

  /*   3.绘制方法 */
  void render(Graphics g) {
    start(g);
    mouse(g);
  }

//判断命中与否
  void switch1(Graphics g, int action) {
    if (action == 9) {
      if (i / w == 0 & j / h == 0) {
        start(g);
        jiang(g);
      }
      else {
        start(g);
        fa(g);
      }
    }
    if (action == 1) {
      if (i / w == 1 & j / h == 0) {
        start(g);
        jiang(g);
      }
      else {
        start(g);
        fa(g);
      }
    }
    if (action == 10) {
      if (i / w == 2 & j / h == 0) {
        start(g);
        jiang(g);
      }
      else {
        start(g);
        fa(g);
      }
    }
    if (action == 2) {
      if (i / w == 0 & j / h == 1) {
        start(g);
        jiang(g);
      }
      else {
        start(g);
        fa(g);
      }
    }
    if (action == 8) {
      if (i / w == 1 & j / h == 1) {
        start(g);
        jiang(g);
      }
      else {
        start(g);
        fa(g);
      }
    }
    if (action == 5) {
      if (i / w == 2 & j / h == 1) {
        start(g);
        jiang(g);
      }
      else {
        start(g);
        fa(g);
      }
    }
    if (action == 11) {
      if (i / w == 0 & j / h == 2) {
        start(g);
        jiang(g);
      }
      else {
        start(g);
        fa(g);
      }
    }
    if (action == 6) {
      if (i / w == 1 & j / h == 2) {
        start(g);
        jiang(g);
      }
      else {
        start(g);
        fa(g);
      }
    }
    if (action == 12) {
      if (i / w == 2 & j / h == 2) {
        start(g);
        jiang(g);
      }
      else {
        start(g);
        fa(g);
      }
    }
  }

  //响应连续按键事件
  public void keyRepeated(int key) {
    keyPressed(key);
  }

  /*   4.响应按键事件   */

  public void keyPressed(int key) {
    int action = getGameAction(key);
    System.out.println(action);
    switch (action) {
      case 9:
        switch1(g, action);
        flushGraphics();
        break;
      case 1:
        switch1(g, action);
        flushGraphics();
        break;
      case 10:
        switch1(g, action);
        flushGraphics();
        break;
      case 2:
        switch1(g, action);
        flushGraphics();
        break;
      case 8:
        switch1(g, action);
        flushGraphics();
        break;
      case 5:
        switch1(g, action);
        flushGraphics();
        break;
      case 11:
        switch1(g, action);
        flushGraphics();
        break;
      case 6:
        switch1(g, action);
        flushGraphics();
        break;
      case 12:
        switch1(g, action);
        flushGraphics();
        break;
      default:
        try {
          Thread.sleep(500);
        }
        catch (Exception oo) {}
        mouse(g);
        return;
    }
  }

  /*7.声明一个TimerTask类*/
  private class DrawTask
      extends TimerTask {
    public final void run() {
      start(g);
      mouse(g);
      repaint();
      arraa++;
    }
  }
}

⌨️ 快捷键说明

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