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

📄 gamecanvas.java

📁 用J2ME写的手机游戏。“北京浮生记”是您工作学习之余消遣休闲理想的小游戏
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
import com.nokia.mid.ui.FullCanvas;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import java.util.Random;

/**
 * <p>Title: </p>北京浮生记
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

public class GameCanvas
    extends FullCanvas
    implements Runnable {

  Display display;

  Thread threadMan;

  Font word; //构造一个字体对象
  int wordLenght; //一个汉字的长度

  int rand; //随即广播的index

  public GameCanvas(Display display) {
    this.display = display;
    try {
      Base.image004 = Image.createImage("/res/pic004.png");
      Base.image006 = Image.createImage("/res/pic006.png");
      Base.image008 = Image.createImage("/res/pic008.png");
    }
    catch (Exception e) {}
    word = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_ITALIC, Font.SIZE_SMALL);
    wordLenght = word.charWidth('中');
    rand = Broadcast.randIndex(); //对广播字符串ID的初始化
    threadMan = new Thread(this);
    threadMan.start();
    randomPrice();

  }

  protected void paint(Graphics g) {
    //清理屏幕
    g.setColor(0xffffff);
    g.fillRect(0, 0, 128, 128);
    g.setColor(0, 0, 0);
    //设置字体
    g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_ITALIC, Font.SIZE_SMALL));

    //对绘制的内容进行选择
    switch (Base.menuList) {

      case 0: //绘制游戏画面
        gamePaint(g);
        break;
      case 1: //绘制状态界面
        statusPaint(g);
        break;
      case 2: //绘制黑市界面
        blackmarketPaint(g);
        break;
      case 3: //绘制银行界面
        bankPaint(g);
        break;
      case 4: //绘制地铁界面
        metroPaint(g);
        break;
      case 5: //绘制邮局界面
        postofficePaint(g);
        break;
      case 6: //绘制医院界面
        hospitalPaint(g);
        break;
      case 7: //绘制库房界面
        storehousePaint(g);
        break;
      case 8: //绘制中介界面
        intermediaryPaint(g);
        break;
      case 9: //绘制系统画面
        systemPaint(g);
        /*以下paint画面为各警告画面*/
      case 10: //游戏时间达到39天的时候的提示画面
      case 11: //游戏时间达到40天的时候得提示画面
      case 12: //随即事件的paint(每天最多三次的绘制)
      default:

    }

  }

  //动画进程
  public void run() {

    while (Base.threadRunnable) {
      try {
        Thread.sleep(100);
      }
      catch (Exception e) {}
      /* if (Base.index == 0) {   //人物动画
         Base.index = 1;
       }
       else {
         Base.index = 0;
       }*/

      Broadcast.stringdx1 -= 2;

      if (Broadcast.stringdx1 <= -wordLenght &&
          Broadcast.index <
          Broadcast.broadcast[rand].length()

          ) {
        Broadcast.stringdx1 = 0;
        Broadcast.index++;
      }
      else if (Broadcast.index >= Broadcast.broadcast[rand].length()) { //更换广播的文字
        rand = Broadcast.randIndex();
        Broadcast.stringdx1 = 128;
        Broadcast.index = 0;
      }
      repaint();
      System.gc();
    }

  }

  protected void keyPressed(int keyCode) {
//    int action = this.getGameAction(keyCode);
    switch (Base.menuList) {
      case 0: //游戏界面"控制方法"调用
        gameControl(keyCode);
        break;
      case 1: //状态界面"控制方法"调用
        statusControl(keyCode);
        break;
      case 2: //黑市界面"控制方法"调用
        blackmarketControl(keyCode);
        break;
      case 3: //银行界面"控制方法"调用
        bankControl(keyCode);
        break;
      case 4: //地铁界面"控制方法"调用
        metroControl(keyCode);
        break;
      case 5: //邮局界面"控制方法"调用
        postofficeControl(keyCode);
        break;
      case 6: //医院界面"控制方法"调用
        hospitalControl(keyCode);
        break;
      case 7: //库房界面"控制方法"调用
        storehouseControl(keyCode);
        break;
      case 8: //中介界面"控制方法"调用
        intermediaryControl(keyCode);
        break;
      case 9: //系统画面"控制方法"调用
        systemControl(keyCode);
        break;
      default:

    }
    repaint();
  }

  /*
   *   各个游戏“功能界面”的绘制方法函数
   *   gamePaint()           游戏界面
   *   statusPaint()         状态界面
   *   blackmarketPaint()    黑市界面
   *   bankPaint()           银行界面
   *   metroPaint()          地铁界面
   *   postofficePaint()     邮局界面
   *   hospitalPaint()       医院界面
   *   storehousePaint()     库房界面
   *   intermediaryPaint()   中介界面
   *   systemPaint()         系统界面
   */

  //gamePaint()           游戏界面
  protected void gamePaint(Graphics g) {
    if (Base.nDate < 40) {
      g.drawImage(Base.image004, 0, 0, Graphics.TOP | Graphics.LEFT);
      g.setClip(3 + Base.dx * 36, 56 + Base.dy * 17, 13, 21); //21 52
      g.drawImage(Base.image008, 3 + Base.dx * 36 - 16 * Base.index,
                  56 + Base.dy * 17, //21 36
                  Graphics.TOP | Graphics.LEFT);
      g.setClip(0, 0, 128, 128);
      g.drawString(String.valueOf(Base.nDate) + "/40", 40, 9,
                   Graphics.LEFT | Graphics.TOP);
      g.drawString(Base.address[Base.addressID], 80, 7,
                   Graphics.LEFT | Graphics.TOP);
      if (Broadcast.stringdx1 > 0) {
        g.drawString(Broadcast.broadcast[rand], Broadcast.stringdx1, 115,
                     Graphics.LEFT | Graphics.TOP);
      }
      else {
        g.drawString(Broadcast.broadcast[rand].substring(Broadcast.index),
                     Broadcast.stringdx1, 115,
                     Graphics.LEFT | Graphics.TOP);
      }
    }
    else if (Base.nDate >= 40) {
      g.drawImage(Base.image006, 0, 0, Graphics.TOP | Graphics.LEFT);
      g.drawString("40天的北京生活过去了", 10, 30, Graphics.TOP | Graphics.LEFT);
      g.drawString("该回家娶媳妇了", 10, 45, Graphics.TOP | Graphics.LEFT);
      g.drawString("你一共挣得", 10, 60, Graphics.TOP | Graphics.LEFT);
      g.drawString( Base.countValue() + "元", 10, 75,
                   Graphics.TOP | Graphics.LEFT);
      g.drawString("确定", 125, 125, Graphics.RIGHT | Graphics.BOTTOM);
      TopScore.openRSTopAnyway("TopScore");
      TopScore.saveTop();
      Base.topScore=Base.countValue();
    }

  }

  //statusPaint()         状态界面
  protected void statusPaint(Graphics g) {
    try {
      Base.image006 = Image.createImage("/res/pic006.png");
    }
    catch (Exception e) {}
    g.drawImage(Base.image006, 0, 0, Graphics.LEFT | Graphics.TOP);
    g.drawString("状 态", 50, 8, Graphics.LEFT | Graphics.TOP);
    g.drawString("日 期 :" + Base.nDate + "/40", 10, 30,
                 Graphics.LEFT | Graphics.TOP);
    g.drawString("健 康 :" + Base.nHealth, 10, 45, Graphics.LEFT | Graphics.TOP);
    g.drawString("现 金 :" + Base.lCash, 10, 60, Graphics.LEFT | Graphics.TOP);
    g.drawString("存 款 :" + Base.lSave, 10, 75, Graphics.LEFT | Graphics.TOP);
    g.drawString("债 务 :" + Base.lDebt, 10, 90, Graphics.LEFT | Graphics.TOP);
    g.drawString("库 存 :" + Base.lGoods() + "/" + Base.lRoom, 10, 105,
                 Graphics.LEFT | Graphics.TOP);
    Base.image006 = null;
  }

  //blackmarketPaint()    黑市界面
  protected void blackmarketPaint(Graphics g) {

    loadImage(Base.goodsItem);

    g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_ITALIC, Font.SIZE_SMALL));
    if (Base.marketStatus == 0) {
      g.drawImage(Base.image007, 0, 0, Graphics.TOP | Graphics.LEFT);
      switch (Base.goodsItem) {
        case 0:
          g.drawImage(Base.image012, 19, 11, Graphics.TOP | Graphics.LEFT);
          g.drawString("盗版VCD", 58, 19, Graphics.TOP | Graphics.LEFT);
          g.drawString("市场价:" + Base.market_vcd_price + " 元", 18, 64,
                       Graphics.TOP | Graphics.LEFT);
          g.drawString("持有价:" + Base.vcd_price + " 元", 18, 82,
                       Graphics.TOP | Graphics.LEFT);
          break;
        case 1:
          g.drawImage(Base.image013, 19, 11, Graphics.TOP | Graphics.LEFT);
          g.drawString("走私香烟", 58, 19, Graphics.TOP | Graphics.LEFT);
          g.drawString("市场价:" + Base.market_cigar_price + " 元", 18, 64,
                       Graphics.TOP | Graphics.LEFT);
          g.drawString("持有价:" + Base.cigar_price + " 元", 18, 82,
                       Graphics.TOP | Graphics.LEFT);

          break;
        case 2:
          g.drawImage(Base.image014, 19, 11, Graphics.TOP | Graphics.LEFT);
          g.drawString("伪劣化妆品", 58, 19, Graphics.TOP | Graphics.LEFT);
          g.drawString("市场价:" + Base.market_sk_price + " 元", 18, 64,
                       Graphics.TOP | Graphics.LEFT);
          g.drawString("持有价:" + Base.sk_price + " 元", 18, 82,
                       Graphics.TOP | Graphics.LEFT);

          break;
        case 3:
          g.drawImage(Base.image015, 19, 11, Graphics.TOP | Graphics.LEFT);
          g.drawString("进口玩具", 58, 19, Graphics.TOP | Graphics.LEFT);
          g.drawString("市场价:" + Base.market_toy_price + " 元", 18, 64,
                       Graphics.TOP | Graphics.LEFT);
          g.drawString("持有价:" + Base.toy_price + " 元", 18, 82,
                       Graphics.TOP | Graphics.LEFT);

          break;
        case 4:
          g.drawImage(Base.image016, 19, 11, Graphics.TOP | Graphics.LEFT);
          g.drawString("假白酒", 58, 19, Graphics.TOP | Graphics.LEFT);
          g.drawString("市场价:" + Base.market_wine_price + " 元", 18, 64,
                       Graphics.TOP | Graphics.LEFT);
          g.drawString("持有价:" + Base.wine_price + " 元", 18, 82,
                       Graphics.TOP | Graphics.LEFT);

          break;
        case 5:
          g.drawImage(Base.image017, 19, 11, Graphics.TOP | Graphics.LEFT);
          g.drawString("水货手机", 58, 19, Graphics.TOP | Graphics.LEFT);
          g.drawString("市场价:" + Base.market_phone_price + " 元", 18, 64,
                       Graphics.TOP | Graphics.LEFT);
          g.drawString("持有价:" + Base.phone_price + " 元", 18, 82,
                       Graphics.TOP | Graphics.LEFT);

          break;
        case 6:
          g.drawImage(Base.image018, 19, 11, Graphics.TOP | Graphics.LEFT);
          g.drawString("上海小宝贝", 58, 19, Graphics.TOP | Graphics.LEFT);
          g.drawString("市场价:" + Base.market_book_price + " 元", 18, 64,
                       Graphics.TOP | Graphics.LEFT);
          g.drawString("持有价:" + Base.book_price + " 元", 18, 82,
                       Graphics.TOP | Graphics.LEFT);

          break;
        case 7:
          g.drawImage(Base.image019, 19, 11, Graphics.TOP | Graphics.LEFT);
          g.drawString("走私汽车", 58, 19, Graphics.TOP | Graphics.LEFT);
          g.drawString("市场价:" + Base.market_car_price + " 元", 18, 64,
                       Graphics.TOP | Graphics.LEFT);
          g.drawString("持有价:" + Base.car_price + " 元", 18, 82,
                       Graphics.TOP | Graphics.LEFT);

          break;
      }
      g.drawString("购买", 3, 125, Graphics.BOTTOM | Graphics.LEFT);
      g.drawString("出售", 125, 125, Graphics.BOTTOM | Graphics.RIGHT);
    }
    else if (Base.marketStatus == 1) { //交易成功提示界面
      g.drawImage(Base.image006, 0, 0, Graphics.TOP | Graphics.LEFT);
      g.drawString("交易成功!", 10, 40, Graphics.LEFT | Graphics.TOP);
      Base.marketStatus = 0;
    }
    else if (Base.marketStatus == 2) {
      g.drawImage(Base.image006, 0, 0, Graphics.TOP | Graphics.LEFT);
      g.drawString("你没有那么多钱呀!", 10, 40, Graphics.LEFT | Graphics.TOP);
      Base.marketStatus = 0;
    }

    Base.image007 = null; //清理内存
    Base.image012 = null;
    Base.image013 = null;
    Base.image014 = null;
    Base.image015 = null;
    Base.image016 = null;
    Base.image017 = null;
    Base.image018 = null;
    Base.image019 = null;
    Base.image006 = null;
  }

  //bankPaint()           银行界面
  protected void bankPaint(Graphics g) {
    try {
      Base.image006 = Image.createImage("/res/pic006.png");
      Base.image011 = Image.createImage("/res/pic011.png");
    }
    catch (Exception e) {}
    if (Base.bankStatus == 0) {
      g.drawImage(Base.image011, 0, 0, Graphics.LEFT | Graphics.TOP);
      g.drawString("\"爱存不存\"银行", 0, 65, Graphics.LEFT | Graphics.TOP);
      g.drawString("欢迎您光临!", 30, 80, Graphics.LEFT | Graphics.TOP);
      g.drawString("请选择您的业务:", 10, 95, Graphics.LEFT | Graphics.TOP);
      g.drawString("存钱 ", 0, 125, Graphics.LEFT | Graphics.BOTTOM);
      g.drawString("取钱 ", 128, 125, Graphics.RIGHT | Graphics.BOTTOM);
      Base.image011 = null;
    }
    else if (Base.bankStatus == 1) {
      g.drawImage(Base.image006, 0, 0, Graphics.TOP | Graphics.LEFT);
      g.drawString("存款成功!", 10, 40, Graphics.LEFT | Graphics.TOP);
      Base.bankStatus = 0;
    }
    else if (Base.bankStatus == 2) {
      g.drawImage(Base.image006, 0, 0, Graphics.TOP | Graphics.LEFT);
      g.drawString("你没有那么多钱呀!", 10, 40, Graphics.LEFT | Graphics.TOP);
      Base.bankStatus = 0;
    }
    else if (Base.bankStatus == 3) {
      g.drawImage(Base.image006, 0, 0, Graphics.TOP | Graphics.LEFT);
      g.drawString("取款成功!", 10, 40, Graphics.LEFT | Graphics.TOP);
      Base.bankStatus = 0;

    }
    Base.image006 = null;
    Base.image011 = null;
  }

  //metroPaint()          地铁界面
  protected void metroPaint(Graphics g) {
    try {
      Base.image006 = Image.createImage("/res/pic006.png");
    }
    catch (Exception e) {}
    g.drawImage(Base.image006, 0, 0, Graphics.LEFT | Graphics.TOP);
    g.drawString("地 铁", 50, 8, Graphics.LEFT | Graphics.TOP);

    g.drawString("  北京站   ", 10, 22, Graphics.LEFT | Graphics.TOP);
    g.drawString("  前    门   ", 10, 44, Graphics.LEFT | Graphics.TOP);
    g.drawString("  宣武门   ", 10, 66, Graphics.LEFT | Graphics.TOP);
    g.drawString("  复兴门   ", 10, 88, Graphics.LEFT | Graphics.TOP);

    g.drawString("积水潭", 64, 22, Graphics.LEFT | Graphics.TOP);
    g.drawString("雍和宫", 64, 44, Graphics.LEFT | Graphics.TOP);
    g.drawString("东直门", 64, 66, Graphics.LEFT | Graphics.TOP);
    g.drawString("建国门", 64, 88, Graphics.LEFT | Graphics.TOP);

    g.drawRect(5 + 47 * Base.metro_dx, 23 + 22 * Base.metro_dy, 10, 10); //,

    Base.image006 = null;
  }

  //postofficePaint()     邮局界面
  protected void postofficePaint(Graphics g) {
    try {
      Base.image006 = Image.createImage("/res/pic006.png");
      Base.image011 = Image.createImage("/res/pic011.png");

⌨️ 快捷键说明

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