亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ketriscanvas.java.bak

?? UNIJA開發環境下的俄羅斯方塊,適用于X859等機型.是初學者的參考范例
?? BAK
字號:
import javax.microedition.lcdui.*;

/**
 * <p>Title: </p>
 * <p>Description: 該類為游戲畫布</p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: www.jagie.com</p>
 * @author: an unknown Japanese,Jagie
 * @version 1.0
 */

public class KetrisCanvas
    extends Canvas
    implements CommandListener, Runnable {

  //Midlet
  protected KetrisGame ketris;
  protected Command exitCmd;
  protected Command startCmd;

  protected int game; /* 游戲運行狀態 */

  protected KetrisBlock block; /* 當前下墜物*/
  protected KetrisMap map; /*游戲地圖*/

  protected Thread thread; /* 重畫線程,該線程實現游戲畫布重畫機制 */

  /*counter,maxCount這2個變量是用來控制游戲速度 */
  protected int counter;
  protected int maxCount;

  protected final int GAME_INIT = 0; /* 游戲初始狀態 */
  protected final int GAME_RUN = 1; /* 游戲運行狀態 */
  protected final int GAME_OVER = 4; /* 游戲結束狀態 */
  protected final int GAME_START_DEMO = 9; /* demo狀態,顯示demo的畫面 */
  protected final int GAME_SUSPEND = 9; /* 掛起狀態,值與demo狀態同 */

  protected boolean startDemoFlag; /*是否已經顯示過開始畫面*/

  private static int mainWidth; /*屏幕寬度,在sun gray emulator上=180*/
  private static int mainHeight; /*屏幕高度,在sun gray emulator上=177*/

  public static int GAMEAREA_X; //游戲區域左上角x坐標,游戲區域為左邊的游戲容器區域和右邊的下一個下墜物顯示區域組成
  public static int GAMEAREA_Y; //游戲區域左上角y坐標
  public static int BRICK_WIDTH; //小磚塊的邊長

  public static final int BACKGROUD = 0x000000; //背景顏色

  public KetrisCanvas(KetrisGame ketris) {

    this.ketris = ketris;

    init();

    map = new KetrisMap();
    block = new KetrisBlock(map);

    startCmd = new Command("開始", Command.OK, 0);
    exitCmd = new Command("退出", Command.EXIT, 0);
    addCommand(startCmd);
    addCommand(exitCmd);
    setCommandListener(this);

    thread = new Thread(this);
    thread.start();

  }

  /* 初始化,顯示demo畫面所需的設置 */
  protected void init() {

    this.mainHeight = getHeight();
    this.mainWidth = getWidth();

    //計算小磚塊寬度
    int min = mainWidth;
    if (mainHeight < min) {
      min = mainHeight;
    }

    //游戲區域應該能被16整除
    for (; min >= 0; min--) {
      if (min % 16 == 0) {
        break;
      }
    }

    //游戲區域為min的方形,且min為16的倍數
    BRICK_WIDTH = min / 16; //磚塊厚度
    GAMEAREA_X = (mainWidth - min) / 2;
    GAMEAREA_Y = (mainHeight - min) / 2;

    startDemoFlag = false; //還沒有顯示開始畫面
    game = GAME_START_DEMO; //游戲處于demo畫面狀態

  }

  public void run() {
    while (true) {
      try {
        thread.sleep(50);
      }
      catch (InterruptedException e) {
        break;
      }
      repaint();

    }
  }

  public void commandAction(Command c, Displayable d) {
    if (c == exitCmd) {
      ketris.destroyApp(false);
      ketris.notifyDestroyed();
    }
    else if (c == startCmd) {
      //還沒有開始游戲或者游戲已結束
      if (startDemoFlag == false||game == GAME_OVER) {
        startDemoFlag = true;
        game = GAME_INIT;
      }
      else {

        //處于游戲中

        if (game == GAME_SUSPEND) {
          //如果處于掛起狀態,則進入運行狀態
          game = GAME_RUN;
        }
        else if (game == GAME_RUN) {
          //如果處于運行狀態,則進入掛起狀態
          game = GAME_SUSPEND;
        }

      }

    }
  }

  protected synchronized void keyPressed(int keyCode) {
    int action = getGameAction(keyCode);

    if (action == Canvas.LEFT && game == GAME_RUN) { /* 左移 */
      if (block.checkMove(1)) {
        block.move(1);
      }
    }
    else if (action == Canvas.RIGHT && game == GAME_RUN) { /* 右移 */
      if (block.checkMove(2)) {
        block.move(2);
      }
    }
    else if (action == Canvas.UP && game == GAME_RUN) { /* 下墜塊變化 */
      if (block.checkRot()) {
        block.rotBlock();
      }
    }
    else if (action == Canvas.DOWN && game == GAME_RUN) { /* 下移 */
      if (block.checkDown(false)) {
        block.down();
      }
    }
    else if (action == Canvas.FIRE && game == GAME_RUN) { /* 下墜塊變化 */
      if (block.checkRot()) {
        block.rotBlock();
      }
    }
  }

  public void paint(Graphics g) {

    if (game == GAME_START_DEMO) { /* 游戲處于demo畫面狀態 */
      if (!startDemoFlag) {
        //游戲還沒開始,顯示demo畫面
        g.setColor(BACKGROUD);
        g.fillRect(0, 0, getWidth(), getHeight());

        g.setColor(0, 255, 0);
        g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD,
                               Font.SIZE_LARGE));
        g.drawString("歡迎進入俄羅斯方塊世界", mainWidth / 2, this.mainHeight / 4,
                     g.BASELINE | g.HCENTER);
        Font f2 = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_PLAIN,
                               Font.SIZE_MEDIUM);
        g.setFont(f2);

        g.drawString("Author 1:an unknown Japanese", mainWidth / 2,
                     mainHeight / 2,
                     g.BASELINE | g.HCENTER);
        g.drawString("Author 2:Jagie(chen_cwf@163.com)", mainWidth / 2,
                     mainHeight / 2 + f2.getHeight(),
                     g.BASELINE | g.HCENTER);

        g.drawString("Version:1.0", mainWidth / 2,
                     mainHeight / 2 + f2.getHeight() * 2,
                     g.BASELINE | g.HCENTER);

        g.drawString("2003-04-17", mainWidth / 2,
                     mainHeight / 2 + f2.getHeight() * 3,
                     g.BASELINE | g.HCENTER);

      }

      /* 游戲第一次啟動 */
    }
    else if (game == GAME_INIT) {
      //畫出游戲地圖(容器部分)
      map.init();
      map.paint(g);

      block.init();
      block.drawBlock(g);
      block.drawNextBlock(g);

      counter = 0;
      maxCount = 8;

      game = GAME_RUN;
    }
    else if (game == GAME_RUN) {

      counter++;
      if (counter >= maxCount) {
        if (block.checkDown(true)) {
          block.down();
          block.paint(g);

        }
        else {

          int y = block.getY();
          block.paint(g);
          block.fixBlock();
          if (map.check(g, y)) {
            map.repaintMap(g);
          }

          block.init();
          y = block.getY();
          if (y < 0) {
            game = GAME_OVER;
          }
          block.drawBlock(g);
          block.drawNextBlock(g);

        }
        counter = 0;
      }
      else {

        block.paint(g);
      }
    }
    else if (game == GAME_OVER) {

      g.setColor(BACKGROUD);
      g.fillRect(KetrisCanvas.GAMEAREA_X, KetrisCanvas.GAMEAREA_Y,
                 16 * KetrisCanvas.BRICK_WIDTH, 16 * KetrisCanvas.BRICK_WIDTH);

      g.setColor(255, 0, 0);
      g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,
                             Font.SIZE_LARGE));
      g.drawString("Game Over",
                   KetrisCanvas.GAMEAREA_X + 8 * KetrisCanvas.BRICK_WIDTH,
                   KetrisCanvas.GAMEAREA_Y + 4 * KetrisCanvas.BRICK_WIDTH,
                   g.BASELINE | g.HCENTER);

    }
  }

  public static void clear(Graphics g) {
    g.setColor(0xffffff);
    g.fillRect(0, 0, mainWidth, mainHeight);
    g.setColor(BACKGROUD);
    g.fillRect(KetrisCanvas.GAMEAREA_X, KetrisCanvas.GAMEAREA_Y,
               16 * KetrisCanvas.BRICK_WIDTH, 16 * KetrisCanvas.BRICK_WIDTH);
  }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一色哟哟哟| 337p日本欧洲亚洲大胆色噜噜| 日本美女一区二区| 夜夜亚洲天天久久| 一级中文字幕一区二区| 樱花草国产18久久久久| 亚洲黄色尤物视频| 亚洲成人免费在线| 日韩精品福利网| 日韩黄色免费网站| 久久狠狠亚洲综合| 国产激情偷乱视频一区二区三区| 国产91高潮流白浆在线麻豆| 国产乱人伦偷精品视频免下载| 国产剧情一区在线| 99精品欧美一区二区蜜桃免费| 97se狠狠狠综合亚洲狠狠| 91精彩视频在线观看| 欧美日韩久久久一区| 日韩欧美国产小视频| 久久一二三国产| 亚洲色图19p| 丝瓜av网站精品一区二区| 极品少妇一区二区| 北条麻妃国产九九精品视频| 91搞黄在线观看| 国产91精品久久久久久久网曝门| 91蜜桃免费观看视频| 欧美久久高跟鞋激| 国产色婷婷亚洲99精品小说| 亚洲图片激情小说| 男女男精品视频网| 国产激情精品久久久第一区二区 | 精品99一区二区| 久久久不卡影院| 亚洲一级电影视频| 韩国成人福利片在线播放| 91蜜桃传媒精品久久久一区二区| 6080午夜不卡| 一区在线中文字幕| 麻豆精品一区二区三区| 91猫先生在线| 久久久精品tv| 人人爽香蕉精品| 色88888久久久久久影院按摩| 日韩美女视频在线| 一区二区久久久久久| 国产成人在线影院| 日韩一区二区三区电影在线观看 | 亚洲国产一二三| 国产露脸91国语对白| 欧美三级电影在线观看| 国产精品乱码人人做人人爱| 日本麻豆一区二区三区视频| 色婷婷综合久色| 国产精品视频看| 激情综合色综合久久综合| 欧美日韩一区二区三区高清| 国产精品国产三级国产专播品爱网| 日本不卡一区二区三区高清视频| 99在线视频精品| 欧美激情艳妇裸体舞| 经典三级一区二区| 日韩欧美国产三级电影视频| 亚洲地区一二三色| 欧美无人高清视频在线观看| 亚洲视频在线一区| 国产.欧美.日韩| 久久精品一二三| 国产在线视频一区二区三区| 日韩欧美国产午夜精品| 老司机精品视频导航| 日韩午夜在线影院| 蜜芽一区二区三区| 精品久久久久99| 精品一区二区三区av| 2021久久国产精品不只是精品| 蜜桃久久av一区| 日韩西西人体444www| 精品一区二区免费看| 欧美岛国在线观看| 激情成人综合网| 国产亚洲精品bt天堂精选| 国产精品77777| 久久综合久久综合九色| 国产福利一区二区三区| 久久色在线视频| 成人妖精视频yjsp地址| 国产精品婷婷午夜在线观看| 成人18视频在线播放| 亚洲欧美色图小说| 91久久国产最好的精华液| 亚洲午夜视频在线| 欧美一区二区福利在线| 九色综合狠狠综合久久| 国产调教视频一区| 99国内精品久久| 亚洲成人免费影院| 日韩三级.com| 风间由美一区二区三区在线观看| 国产精品久久久久久久第一福利 | 欧美一级在线视频| 精品一区二区三区久久久| 国产精品国产三级国产普通话三级| 成人午夜视频在线观看| 亚洲欧美日韩久久| 欧美一区二区三区不卡| 国产超碰在线一区| 一个色在线综合| 久久嫩草精品久久久久| av一区二区三区在线| 偷拍一区二区三区四区| 久久久久久久综合色一本| 色视频一区二区| 伦理电影国产精品| 亚洲天堂av一区| 欧美一区二区三区播放老司机| 国产激情视频一区二区在线观看 | 久久人人超碰精品| 99综合电影在线视频| 麻豆精品在线观看| 亚洲人吸女人奶水| 日韩女优视频免费观看| 91色porny蝌蚪| 精品一区二区影视| 一级日本不卡的影视| 国产欧美在线观看一区| 5月丁香婷婷综合| 99re8在线精品视频免费播放| 免费一区二区视频| 亚洲美女在线一区| 国产欧美日韩麻豆91| 欧美日韩的一区二区| 91在线码无精品| 国产一区二区三区香蕉| 亚洲bt欧美bt精品| 亚洲欧美综合另类在线卡通| 久久免费看少妇高潮| 69久久99精品久久久久婷婷| 色丁香久综合在线久综合在线观看| 国产精品综合久久| 全部av―极品视觉盛宴亚洲| 亚洲一区二区在线免费观看视频| 国产精品欧美一区喷水| 精品国产成人系列| 欧美一区二区大片| 精品视频免费看| 欧美在线一二三| 欧美日韩一区二区三区四区 | www成人在线观看| 91精品国产91久久综合桃花| 欧美无砖专区一中文字| 欧洲一区在线电影| 在线中文字幕不卡| 日本道色综合久久| 91福利国产成人精品照片| 91视频免费观看| 懂色一区二区三区免费观看| 从欧美一区二区三区| 国产91精品欧美| caoporn国产精品| 99精品视频中文字幕| 99久久久久免费精品国产 | 视频一区欧美精品| 日韩电影一区二区三区| 美国十次了思思久久精品导航| 久久电影国产免费久久电影| 免费av网站大全久久| 国产一区二区三区国产| 国产一区日韩二区欧美三区| 国产在线不卡视频| 成人成人成人在线视频| 91影院在线观看| 欧美日韩中文一区| 欧美videofree性高清杂交| 久久久一区二区| 中文字幕制服丝袜一区二区三区 | 天天综合色天天综合色h| 日本最新不卡在线| 国产一区二区三区免费看| 成人黄色免费短视频| 色综合久久99| 欧美剧情电影在线观看完整版免费励志电影| 欧美日韩国产首页| 久久综合久久99| 一区二区三区高清不卡| 久久精品国产第一区二区三区| 国产九色sp调教91| 欧美伊人精品成人久久综合97 | 国产精品私人影院| 亚洲黄色av一区| 国内外成人在线| 欧美亚洲日本国产| 国产欧美一区二区精品性| 一片黄亚洲嫩模| 处破女av一区二区| 91精品国产入口| 亚洲免费av网站| 国产激情一区二区三区| 欧美精品自拍偷拍|