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

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

?? kyodaiui.java

?? java實現的簡單連連看游戲
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package com.ismyway.n840_kyodai;

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

/**
 * <p>Title: S60_Kyodai</p>
 * <p>Description: for S60 platform</p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: www.ismyway.com</p>
 * @author ZhangJian
 * @version 1.0
 */

public class KyodaiUI
    extends GameCanvas
    implements Runnable {
  Kyodai kyodai;
  Graphics g;
  GameMap gm = GameMap.getInstance();

  Point currentPoint = new Point(0, 0); //當前光標停留的位置
  Point lastSelected = new Point(); //上一次選擇的位置
  boolean gameEnd = true; //當前游戲是否已經結束
  int gameSteps; //步數
  int refreshTimes; //刷新地圖的次數
  long startTime = 0l; //為難度級別準備的定時器
  long frames = 0l; //幀數
  private int SeriesHints = 0; //連擊次數
  private int earseScore = 0; //消除方塊的分數
  private long lastDelTime = 0; //上次消除方塊時的時間
  Font f = Font.getFont(Font.FACE_PROPORTIONAL, Font.SIZE_MEDIUM,
                        Font.STYLE_PLAIN); //字體
  private int randomMusicIndex = 0; //隨機的音樂
  private MidiPlayer mp; //播放Midi
  private int limitTime = 0; //限制的時間
  private int limitStep = 0; //限制的步數

  public KyodaiUI(Kyodai kyodai) {
    super(false);
    this.kyodai = kyodai;

    //隨機化地圖數據
    java.util.Random random = new java.util.Random(System.currentTimeMillis());
    int range = Math.abs(random.nextInt());

    if (Kyodai.gameMode == 1) {
      randomMusicIndex = range % (CV.MidiFiles.length);
      range %= 4;
      gm.setLevel(CV.MAX_ICONS - range);
    }
    else {
      range %= (CV.MAX_ICONS - CV.MIN_ICONS);
      gm.setLevel(range + CV.MIN_ICONS);
      //gm.setLevel(2);
    }
    random = null;
    System.gc();

    //初始化游戲開始時的數據
    gameSteps = 0;
    refreshTimes = 0;
  }

  public void start() {
    gameEnd = false;
    getStartPoint(); //繪制當前的停留點

    if (Kyodai.musicMode > -1 && Kyodai.musicMode < 7) { //指定了音樂
      InputStream is = getClass().getResourceAsStream("/sounds/" +
          CV.MidiFiles[Kyodai.musicMode]);
      if (is != null) {
        mp = new MidiPlayer(is);
        mp.play();
      }
    }
    else if (Kyodai.musicMode == 8) { //隨機播放
      InputStream is = getClass().getResourceAsStream("/sounds/" +
          CV.MidiFiles[randomMusicIndex]);
      if (is != null) {
        mp = new MidiPlayer(is);
        mp.play();
      }
    }

    if (Kyodai.gameMode == 1) {
      limitTime = gm.getBlocks() * 4000;
      limitStep = gm.getBlocks() * 6;
    }

    Thread t = new Thread(this);
    startTime = System.currentTimeMillis();
    t.start();
  }

  public void run() {
    g = getGraphics();
    drawGameMap();
    while (!gameEnd) {
      frames++;
      if (Kyodai.gameMode == 1) {
        long usedTime = System.currentTimeMillis() - startTime;
        if (usedTime > limitTime ||
            gameSteps > limitStep) { //判斷是否結束游戲
          makeEndImage();
        }
        else {
          updateInfo();
        }
      }
      else {
        updateInfo();
      }
      try {
        Thread.sleep(80l);
      }
      catch (InterruptedException ie) {}
    }
  }

  public void keyPressed(int keyCode) {
    //System.out.println("keyCode = " + keyCode);
    switch (keyCode) {
      case CV.KEY_NUM2:
      case CV.KEY_UP:
        movePoint(CV.ARROW_UP);
        break;
      case CV.KEY_NUM4:
      case CV.KEY_LEFT:
        movePoint(CV.ARROW_LEFT);
        break;
      case CV.KEY_NUM6:
      case CV.KEY_RIGHT:
        movePoint(CV.ARROW_RIGHT);
        break;
      case CV.KEY_NUM8:
      case CV.KEY_DOWN:
        movePoint(CV.ARROW_DOWN);
        break;
      case CV.KEY_SELECT:
      case CV.KEY_NUM5:
        selectPoint();
        break;
      case CV.KEY_STAR:
        refresh();
        break;
      case CV.KEY_POUND:
        gameEnd = true;
        if (mp != null) {
          mp.stop();
        }
        Display.getDisplay(kyodai).setCurrent(new GameMenu(kyodai));
    }
  }

  private void selectPoint() {
    if (gameEnd) { //如果游戲已結束,返回
      return;
    }

    if (gm.getMap()[currentPoint.x][currentPoint.y] < 1) { //如果當前的選擇點無效,返回
      return;
    }

    if (lastSelected.x != -1 && lastSelected.y != -1) { //上次選擇的點不為空
      if (GameMap.getInstance().test(lastSelected, currentPoint)) { //當前的兩點可以消除
        //消除上次選擇的點
        fillBorder(lastSelected, CV.GAMEBGCOLOR);

        //消除此次選擇的點
        fillBorder(currentPoint, CV.GAMEBGCOLOR);

        //輸出緩沖區內容
        flushGraphics();

        //從地圖數據中移除這兩個可以消除的點
        gm.earse(lastSelected, currentPoint);

        //判斷連擊狀態
        long time = System.currentTimeMillis() - lastDelTime;
        if (time > CV.SeriesTime) { //此次沒有完成連擊
          earseScore += CV.SeriesScorce[SeriesHints];
          SeriesHints = 0;
        }
        else {
          if (SeriesHints == CV.SeriesScorce.length - 1) { //達到最大連擊次數
            //System.out.println("達到最大連擊次數");
            earseScore += CV.SeriesScorce[SeriesHints];
            SeriesHints = 0;
          }
          else {
            SeriesHints++;
            //System.out.println("連擊:" + SeriesHints);
          }
        }
        lastDelTime = System.currentTimeMillis();

        //置當前選擇點為空
        lastSelected.x = -1;
        lastSelected.y = -1;

        System.gc();

        if (gm.getCount() == 0) { //判斷用戶是否已經完成游戲
          if (SeriesHints != 0) {
            earseScore += CV.SeriesScorce[SeriesHints];
          }
          gameEnd = true;
          makeWinImage();
          return;
        }
      }
      else { //當前的兩點不可消除
        //消除上次選擇的背景
        drawBorder(lastSelected, CV.GAMEBGCOLOR);

        //選擇當前的點
        if (lastSelected.x == currentPoint.x &&
            lastSelected.y == currentPoint.y) { //如果上次選擇的點和當前點一樣,認為是用戶取消了選擇
          lastSelected.x = -1;
          lastSelected.y = -1;
        }
        else {
          drawBorder(currentPoint, CV.SELECTEDCOLOR);
          lastSelected.x = currentPoint.x;
          lastSelected.y = currentPoint.y;
        }
        System.gc();
      }
    }
    else { //上次的選擇點為空
      drawBorder(currentPoint, CV.SELECTEDCOLOR);
      lastSelected.x = currentPoint.x;
      lastSelected.y = currentPoint.y;
      System.gc();
    }

    //重新繪制停留點的邊框
    drawBorder(currentPoint, CV.HOVERCOLOR);
    //輸出緩沖區內容
    flushGraphics();
  }

  private void refresh() {
    if (gameEnd) { //如果游戲已結束,返回
      return;
    }

    gm.refresh();
    for (int row = 0; row < CV.ROW; row++) {
      for (int col = 0; col < CV.COLUMN; col++) {
        if (gm.getMap()[row][col] != 0) {
          int index = gm.getMap()[row][col] - 1;
          int x = CV.SPACING +
              col * (CV.SPACING + CV.ICON_WIDTH);
          int y = CV.SPACING +
              row * (CV.SPACING + CV.ICON_HEIGHT);
          Kyodai.sprites[index].setPosition(x, y);
          Kyodai.sprites[index].paint(g);
        }
      }
    }

    //重新停留點的選擇框
    drawBorder(lastSelected, CV.GAMEBGCOLOR);
    lastSelected.x = -1;
    lastSelected.y = -1;
    drawBorder(currentPoint, CV.HOVERCOLOR);
    flushGraphics();

    refreshTimes++;
  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀精品久久久久久蜜臀| 91亚洲大成网污www| av中文字幕亚洲| 日韩午夜小视频| 亚洲蜜臀av乱码久久精品蜜桃| 午夜电影一区二区三区| 99久久久精品免费观看国产蜜| 日韩精品最新网址| 亚洲福利一二三区| 91一区二区在线观看| 国产日韩v精品一区二区| 亚洲成人免费在线观看| 97久久精品人人做人人爽| 日韩美女天天操| 亚洲成a天堂v人片| 色八戒一区二区三区| 26uuu欧美日本| 美腿丝袜亚洲色图| 欧美妇女性影城| 亚洲永久免费视频| 99这里只有精品| 中文av一区二区| 国产真实乱偷精品视频免| 日韩欧美亚洲国产精品字幕久久久| 亚洲激情综合网| 91视频免费播放| 亚洲精品欧美激情| 91性感美女视频| 亚洲欧美日韩国产手机在线| 丁香婷婷综合五月| 久久久精品2019中文字幕之3| 精一区二区三区| 精品国产人成亚洲区| 久久精品99久久久| 精品国产精品网麻豆系列| 久久99久久精品| 精品国免费一区二区三区| 男人操女人的视频在线观看欧美| 欧美美女喷水视频| 麻豆国产精品一区二区三区| 日韩三级中文字幕| 精品亚洲国产成人av制服丝袜| 精品国产免费一区二区三区四区 | 精品一区在线看| 日韩欧美久久一区| 国产成人在线免费观看| 国产欧美日韩卡一| 99麻豆久久久国产精品免费| 亚洲视频香蕉人妖| 欧美精品久久99久久在免费线| 日本不卡在线视频| 久久伊人蜜桃av一区二区| 成人在线视频首页| 亚洲免费在线电影| 欧美日本免费一区二区三区| 日韩影视精彩在线| 久久影院电视剧免费观看| 成人av片在线观看| 午夜精品免费在线| 欧美精品一区在线观看| gogo大胆日本视频一区| 亚洲一区二区三区四区在线免费观看| 欧美视频第二页| 久久精品国产99久久6| 国产精品素人一区二区| 欧美伊人久久大香线蕉综合69 | 另类调教123区| 国产精品色噜噜| 欧美丝袜第三区| 国产乱理伦片在线观看夜一区| 国产精品久久三| 欧美一区二区啪啪| 成人黄色小视频| 美女网站一区二区| 亚洲黄色免费网站| 久久久久久久电影| 欧美影片第一页| 成人综合激情网| 免费的成人av| 一区二区三区高清不卡| 欧美成人精精品一区二区频| 色婷婷国产精品| 国产资源在线一区| 日韩精品视频网站| 中文字幕在线观看一区| 精品奇米国产一区二区三区| 在线观看国产日韩| 成人综合婷婷国产精品久久免费| 日本成人在线不卡视频| 一区二区三区四区在线| 久久精品视频免费| 日韩精品一区二区三区视频| 欧美在线一区二区三区| 99热99精品| 风间由美中文字幕在线看视频国产欧美 | 国产精品国产自产拍在线| 91精品在线一区二区| 在线视频一区二区三| 99国产精品视频免费观看| 国产一区二区在线影院| 日韩电影在线一区二区三区| 一区二区三区在线高清| 国产精品久久久久四虎| 国产网站一区二区| 精品国产髙清在线看国产毛片| 欧美精品丝袜久久久中文字幕| 欧美亚洲丝袜传媒另类| 91黄视频在线| 在线看一区二区| 欧美综合天天夜夜久久| 色乱码一区二区三区88| 日本国产一区二区| 91视频一区二区三区| 91麻豆精东视频| 色欧美片视频在线观看在线视频| 成人深夜在线观看| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产欧美在线观看一区| 久久精品欧美一区二区三区麻豆| 久久精品欧美一区二区三区不卡 | 欧美丰满少妇xxxxx高潮对白| 欧美日韩一区二区在线视频| 91久久精品午夜一区二区| 91久久精品网| 欧美精品1区2区| 日韩欧美一级在线播放| 日韩精品中文字幕一区 | 亚洲欧美怡红院| 亚洲精品久久嫩草网站秘色| 亚洲精品高清在线| 三级亚洲高清视频| 青青草视频一区| 国产精华液一区二区三区| 成人亚洲一区二区一| 色欧美片视频在线观看| 欧美视频日韩视频| 精品久久五月天| 国产精品传媒入口麻豆| 香蕉加勒比综合久久| 免费在线看一区| 成人福利视频在线| 欧美网站一区二区| 2021久久国产精品不只是精品| 亚洲国产精品精华液2区45| 亚洲色图制服诱惑| 免费高清成人在线| 国产白丝精品91爽爽久久| 色综合久久久久综合体桃花网| 欧美三级在线视频| 久久久99精品免费观看| 一区二区高清在线| 国产麻豆视频精品| 91行情网站电视在线观看高清版| 欧美一区二区三区的| 久久精品人人做| 午夜不卡av在线| 国产成人福利片| 欧美高清精品3d| 国产精品久久久一本精品| 午夜激情综合网| av网站一区二区三区| 欧美一区二区福利在线| 亚洲你懂的在线视频| 国产一区激情在线| 欧美性感一区二区三区| 国产欧美日本一区二区三区| 性做久久久久久免费观看欧美| 国产福利一区在线| 欧美一区二区三区色| 亚洲欧美成人一区二区三区| 久久99国产精品麻豆| 欧美日韩综合一区| 国产精品对白交换视频| 精品一区二区成人精品| 欧美理论电影在线| 一区二区三区加勒比av| 成人精品高清在线| 久久久久久久久久电影| 美腿丝袜在线亚洲一区| 欧美区视频在线观看| 亚洲毛片av在线| 粉嫩一区二区三区性色av| 日韩精品中文字幕一区 | 精品一区二区三区蜜桃| 欧美电影在哪看比较好| 一区二区三区电影在线播| 成人av动漫网站| 国产欧美视频一区二区| 黄色精品一二区| 日韩精品专区在线影院重磅| 午夜精品在线看| 欧美日韩国产一级| 午夜亚洲国产au精品一区二区| 一本色道久久综合狠狠躁的推荐 | 久久亚洲一级片| 狠狠色狠狠色综合| 精品播放一区二区| 国产精品影视天天线| 久久美女艺术照精彩视频福利播放| 久久er精品视频|