DiceCanvas.java
上传用户:whhzxy
上传日期:2009-12-31
资源大小:269k
文件大小:3k
源码类别:

J2ME

开发平台:

Java

  1. import java.io.PrintStream;
  2. import java.util.Random;
  3. import java.util.Vector;
  4. import javax.microedition.lcdui.Canvas;
  5. import javax.microedition.lcdui.Graphics;
  6. import javax.microedition.lcdui.Image;
  7. /**
  8.   * 色子画板。
  9.   * @author SoftStar,嘟嘟熊
  10.   * @version 1.0
  11.   */
  12. public class DiceCanvas
  13.     extends Canvas
  14.     implements Runnable {
  15.   /**
  16.    * richMan实例
  17.    */
  18.   KMRichMan richMan;
  19.   /**
  20.    * 色子的图象
  21.    */
  22.   private Image[] diceImages;
  23.   /**
  24.    * 标题条图象
  25.    */
  26.   private Image barImage;
  27.   /**
  28.    * 线程
  29.    */
  30.   private volatile Thread thread;
  31.   /**
  32.    * 色子数值1
  33.    */
  34.   private int dictNum1;
  35.   /**
  36.    * 色子数值2
  37.    */
  38.   private int dictNum2;
  39.   /**
  40.    * 标志是移动的投的色子还是加钱投的色子(现金卡)
  41.    */
  42.   private boolean flagIsGoOrAddMoney;
  43.   /**
  44.    * 随机数
  45.    */
  46.   private Random random;
  47.   /**
  48.    * 构造一个对象
  49.    * @param kmrichman richMan对象
  50.    * @param flag  标志是移动的投的色子还是加钱投的色子(现金卡)
  51.    */
  52.   public DiceCanvas(KMRichMan kmrichman, boolean flag) {
  53.     thread = null;
  54.     dictNum1 = 0;
  55.     dictNum2 = 0;
  56.     richMan = kmrichman;
  57.     flagIsGoOrAddMoney = flag;
  58.     random = new Random();
  59.     diceImages = new Image[6];
  60.     try {
  61.       barImage = Image.createImage("/res/image/barbw.png");
  62.     }
  63.     catch (Exception exception) {}
  64.     try {
  65.       Image diceImage = com.siemens.mp.ui.Image.createImageWithoutScaling(
  66.           "/res/image/dice.png");
  67.       for (int i = 0; i < 6; i++) {
  68.         Image image = Image.createImage(20, 20);
  69.         Graphics g = image.getGraphics();
  70.         g.drawImage(diceImage, 0, -20 * i, 20);
  71.         diceImages[i] = image;
  72.       }
  73.       diceImage = null;
  74.     }
  75.     catch (Exception exception) {}
  76.     startThread();
  77.   }
  78.   /**
  79.    * 开始线程
  80.    */
  81.   public void startThread() {
  82.     if (thread == null) {
  83.       thread = new Thread(this);
  84.       thread.start();
  85.     }
  86.   }
  87.   /**
  88.    * 投色子结束
  89.    */
  90.   public void diceOver() {
  91.     thread = null;
  92.     if (flagIsGoOrAddMoney)
  93.       richMan.diceAndSetDisplayToPlayForm(dictNum1 + dictNum2 + 2);
  94.     else
  95.       richMan.addDiceMoney(dictNum1 + dictNum2 + 2, flagIsGoOrAddMoney);
  96.   }
  97.   /**
  98.    * 线程
  99.    */
  100.   public void run() {
  101.     Thread thread = Thread.currentThread();
  102.     int i = 0;
  103.     do {
  104.       if (thread != this.thread)
  105.         break;
  106.       try {
  107.         Thread.sleep(50L);
  108.         if (++i == 20) //变换了20次OVER
  109.           diceOver();
  110.         else
  111.         if (i < 7) {
  112.           dictNum1 = Math.abs(random.nextInt() % 6);
  113.           dictNum2 = Math.abs(random.nextInt() % 6);
  114.           repaint();
  115.         }
  116.       }
  117.       catch (Exception exception) {}
  118.     }
  119.     while (true);
  120.   }
  121.   /**
  122.    * 绘制画板
  123.    */
  124.   protected void paint(Graphics g) {
  125.     g.setColor(255, 255, 255);
  126.     g.fillRect(0, 0, 101, 80);
  127.     g.drawImage(diceImages[dictNum1], 28, 40, 6);
  128.     g.drawImage(diceImages[dictNum2], 52, 40, 6);
  129.     try {
  130.       g.drawImage(barImage, 0, 0, 20);
  131.     }
  132.     catch (Exception exception) {
  133.     }
  134.   }
  135. }