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

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

?? ketrismap.java.bak

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

import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import java.io.InputStream;

/**
 * 游戲地圖,地圖高16個小磚塊,寬16小磚塊,但是游戲容器高16,寬12(包括左右2堵墻)
 * 所以容器的內直徑為10
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author: an unknown Japanese,Jagie
 * @version 1.0
 */

public class KetrisMap {

  //地圖數據
  protected int mapdata[][];
  protected boolean mapBlockExist[]; //長度為16的boolean數組,如果mapBlockExist[i]=true,則第i+1行有磚塊
  private int score; //分數
  public static final Font SCOREFONT = Font.getFont(Font.FACE_SYSTEM,
      Font.STYLE_PLAIN,
      Font.SIZE_LARGE);

  public static Player player;

  static {
    try {
      InputStream is =
          KetrisMap.class.getResourceAsStream("/chimes.wav");

      player = Manager.createPlayer(is, "audio/x-wav");

    }
    catch (IOException ioe) {
      ioe.printStackTrace();
    }
    catch (MediaException me) {
      me.printStackTrace();
    }

  }

  public KetrisMap() {
    mapdata = new int[16][12];
    mapBlockExist = new boolean[16];

  }

  public void init() {
    //清除計分
    score = 0;
    //先把全部元素清0
    for (int i = 0; i < 16; i++) {
      for (int j = 0; j < 12; j++) {
        mapdata[i][j] = 0;
      }
      mapBlockExist[i] = false;
    }

    //設置2堵墻
    for (int i = 0; i < 16; i++) {
      mapdata[i][0] = 8;
      mapdata[i][11] = 8;
    }

    //設置容器底
    for (int i = 0; i < 12; i++) {
      mapdata[15][i] = 8;
    }

    mapBlockExist[15] = true;
  }

  /**
   * 獲取地圖某行某列的數據
   * @param x int 行號
   * @param y int 列號
   * @return int 地圖數據,非0表示有磚塊
   */
  public int get(int x, int y) {
    int data = mapdata[y][x];

    return data;
  }

  /* 設置地圖數據 */
  public void set(int x, int y, int val) {
    if (x >= 0 && y >= 0) {
      mapdata[y][x] = val;
      mapBlockExist[y] = true;
    }

  }

  /**
   * 該方法其實只負責非運動磚塊
   * @param g Graphics
   */
  public void paint(Graphics g) {
    //清屏
    KetrisCanvas.clear(g);
    g.setColor(0x000000);
    g.fillRect(0, 0, getWidth(), getHeight());
    for (int i = 0; i < 16; i++) {
      for (int j = 0; j < 12; j++) {
        if (mapdata[i][j] == 8) {
          KetrisBlock.drawBrick(KetrisCanvas.GAMEAREA_X +
                                j * KetrisCanvas.BRICK_WIDTH,
                                KetrisCanvas.GAMEAREA_Y +
                                i * KetrisCanvas.BRICK_WIDTH, g, 7);
        }
      }
    }
  }

  public boolean check(Graphics g, int row) {
    boolean deleteFlag = false;

    //最多可以連消4行
    int tmpRowNo;
    if (row + 4 >= 15) {
      tmpRowNo = 15;
    }
    else {
      tmpRowNo = row + 4;
    }

    for (int y = row; y < tmpRowNo; y++) {
      boolean flag = true;

      for (int x = 1; x < 11; x++) {
        if (mapdata[y][x] == 0) { /* 空白區 */
          flag = false;
        }
      }

      /* 需要消行 */
      if (flag) {
        mapBlockExist[y] = false;
        for (int x = 1; x < 11; x++) {
          mapdata[y][x] = 0;
        }

        deleteRow(g, y);

        deleteFlag = true;
        //加分
        score += 10;
        paintScore(g);
        //發聲
        try {
          if (player != null) {
            player.start();
          }

        }
        catch (MediaException me) {
          System.out.println("sound not availible");
        }

      }
    }

    return deleteFlag;
  }

  //刪除行,只是簡單的把該行置黑
  protected void deleteRow(Graphics g, int y) {
    g.setColor(KetrisCanvas.BACKGROUD);
    g.fillRect(KetrisCanvas.GAMEAREA_X + KetrisCanvas.BRICK_WIDTH,
               KetrisCanvas.GAMEAREA_Y + y * KetrisCanvas.BRICK_WIDTH,
               10 * KetrisCanvas.BRICK_WIDTH, KetrisCanvas.BRICK_WIDTH);

  }

  /* 該方法在有消去行為后調用 */
  public void repaintMap(Graphics g) {
    //從容啟底開始
    for (int i = 14; i > 0; i--) {
      int tmp;

      //有磚塊的行才移動
      if (mapBlockExist[i]) {
        //只有下一行為空白行才進行移動
        if (!mapBlockExist[i + 1]) {
          tmp = i + 1;

          if (!mapBlockExist[i + 2]) {
            tmp = i + 2;

            if (!mapBlockExist[i + 3]) {
              tmp = i + 3;
            }
          }
          deleteRow(g, i);
          //行復制
          for (int j = 1; j < 11; j++) {
            mapdata[tmp][j] = mapdata[i][j];
            mapdata[i][j] = 0;
          }
          mapBlockExist[i] = false;
          mapBlockExist[tmp] = true;

          drawBlock(g, tmp);
        }
      }
    }
  }

  public void drawBlock(Graphics g, int y) {
    for (int x = 1; x < 11; x++) {
      if (mapdata[y][x] != 0) {
        KetrisBlock.drawBrick(KetrisCanvas.GAMEAREA_X +
                              x * KetrisCanvas.BRICK_WIDTH,
                              KetrisCanvas.GAMEAREA_Y +
                              y * KetrisCanvas.BRICK_WIDTH, g,
                              mapdata[y][x] - 1);

      }
    }
  }

  private void paintScore(Graphics g) {
    //清除記分牌
    g.setColor(KetrisCanvas.BACKGROUD);
    g.fillRect(KetrisCanvas.GAMEAREA_X + 12 * KetrisCanvas.BRICK_WIDTH,
               KetrisCanvas.GAMEAREA_Y + 6 * KetrisCanvas.BRICK_WIDTH,
               KetrisCanvas.BRICK_WIDTH * 4, KetrisCanvas.BRICK_WIDTH * 4);
    //計分
    g.setColor(0, 255, 0);
    g.setFont(SCOREFONT);
    g.drawString("" + score,
                 KetrisCanvas.GAMEAREA_X + 14 * KetrisCanvas.BRICK_WIDTH,
                 KetrisCanvas.GAMEAREA_Y + 8 * KetrisCanvas.BRICK_WIDTH,
                 g.BASELINE | g.HCENTER);
  }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久99久久精品免费观看 | 欧美蜜桃一区二区三区| 国产精品中文欧美| 麻豆精品在线播放| 久久99精品久久久久婷婷| 欧美a级理论片| 久久国产精品99久久久久久老狼| 视频一区二区中文字幕| 日韩国产一区二| 日韩精品电影在线| 精品一区二区三区蜜桃| 国产精品一级在线| 91浏览器入口在线观看| 在线观看精品一区| 91精品国产麻豆| 久久久欧美精品sm网站| 国产精品不卡在线| 亚洲一二三四在线| 老司机精品视频导航| 国产高清在线观看免费不卡| 99麻豆久久久国产精品免费| 欧美三级午夜理伦三级中视频| 91麻豆精品国产91久久久久久久久| 日韩情涩欧美日韩视频| 国产精品不卡在线| 亚洲网友自拍偷拍| 国产一区二区三区香蕉| 99久久婷婷国产综合精品| 欧美日韩亚洲国产综合| 久久中文字幕电影| 亚洲精品国久久99热| 美国毛片一区二区三区| av成人动漫在线观看| 91精品婷婷国产综合久久性色| 久久色视频免费观看| 亚洲最色的网站| 国产一区二区在线影院| 在线亚洲免费视频| 国产亚洲欧美色| 亚洲无人区一区| 成人激情午夜影院| 日韩三级伦理片妻子的秘密按摩| 中文字幕高清一区| 久久av老司机精品网站导航| 99国产欧美另类久久久精品| 欧美哺乳videos| 亚洲激情中文1区| 国产99久久久精品| 日韩欧美国产综合| 亚洲图片自拍偷拍| 色先锋久久av资源部| 久久综合狠狠综合| 久久精品国产亚洲a| 欧洲精品视频在线观看| 国产精品网站在线| 国产在线播放一区三区四| 欧美日韩一区二区在线视频| 国产精品久久久久aaaa樱花| 国产在线播放一区二区三区| 日韩网站在线看片你懂的| 一区二区三区欧美| 91在线观看免费视频| 亚洲国产高清不卡| 激情深爱一区二区| 日韩美女在线视频 | 91精品国产欧美一区二区成人| 伊人开心综合网| 91在线视频18| 国产精品麻豆网站| 波多野结衣在线一区| 精品福利在线导航| 激情综合五月天| 精品国产一区二区三区av性色| 奇米影视在线99精品| 欧美顶级少妇做爰| 午夜成人免费视频| 91精品国产91久久久久久一区二区| 亚洲一区二区三区小说| 欧美日韩国产另类不卡| 亚洲成人在线观看视频| 这里只有精品视频在线观看| 三级影片在线观看欧美日韩一区二区| 欧美亚洲国产一区二区三区| 亚洲成人中文在线| 欧美一区二区观看视频| 激情六月婷婷久久| 久久精品人人做| aaa欧美日韩| 亚洲精品免费一二三区| 欧美精品1区2区| 精品一区二区av| 欧美极品美女视频| 日本高清不卡一区| 日本va欧美va精品| 久久一区二区三区四区| 成人avav在线| 五月天视频一区| 久久夜色精品国产欧美乱极品| 国产成人啪午夜精品网站男同| 国产精品的网站| 欧美绝品在线观看成人午夜影视| 丝袜美腿亚洲色图| 久久久精品影视| 欧美丝袜丝交足nylons图片| 麻豆精品新av中文字幕| 国产精品欧美精品| 欧美三级韩国三级日本一级| 极品美女销魂一区二区三区| 亚洲美女视频在线| 欧美一二三区精品| 99国产精品久久久久久久久久| 亚洲综合激情网| 精品日韩在线观看| 一本色道久久综合狠狠躁的推荐| 奇米精品一区二区三区在线观看 | 欧美不卡在线视频| 色婷婷久久久亚洲一区二区三区| 日韩国产精品久久| 亚洲乱码中文字幕| 精品久久久久久亚洲综合网 | 丁香婷婷综合五月| 午夜伊人狠狠久久| 国产精品久久久久久久午夜片| 制服丝袜一区二区三区| 波多野洁衣一区| 国产一区二区三区不卡在线观看| 尤物av一区二区| 国产精品动漫网站| 国产亚洲婷婷免费| 欧美岛国在线观看| 欧美嫩在线观看| 色哟哟欧美精品| 成人avav在线| 国产福利不卡视频| 日韩av一区二区在线影视| 亚洲欧美精品午睡沙发| 国产清纯美女被跳蛋高潮一区二区久久w | 五月综合激情日本mⅴ| 国产欧美日韩亚州综合| 精品久久久久久无| 欧美色成人综合| 一本大道av伊人久久综合| 成人国产精品免费| 韩国欧美国产1区| 久久爱另类一区二区小说| 五月天婷婷综合| 日韩av网站免费在线| 亚洲电影第三页| 三级在线观看一区二区| 天堂成人免费av电影一区| 亚洲综合一区二区精品导航| 亚洲三级免费观看| 亚洲精品成a人| 夜夜嗨av一区二区三区网页 | 欧美国产日韩在线观看| 久久综合资源网| 久久精品欧美日韩精品| 欧美极品美女视频| 国产精品久久久久aaaa| 亚洲人成网站精品片在线观看| 综合久久久久久| 综合色天天鬼久久鬼色| 亚洲免费观看高清完整| 亚洲综合色在线| 奇米四色…亚洲| 国产伦精品一区二区三区在线观看| 美腿丝袜在线亚洲一区| 国产成人无遮挡在线视频| 波多野结衣在线一区| 在线亚洲免费视频| 91精品国产一区二区三区| 久久影院午夜论| 国产精品色婷婷久久58| 日韩毛片一二三区| 天天操天天干天天综合网| 毛片基地黄久久久久久天堂| 国产黑丝在线一区二区三区| 一本在线高清不卡dvd| 91精品国产91久久久久久一区二区 | 国产精品的网站| 一区二区三区高清不卡| 日韩精品免费视频人成| 国模冰冰炮一区二区| 99久久精品情趣| 欧美性大战久久久久久久蜜臀| 欧美日高清视频| 久久久久久久久蜜桃| 一区二区在线观看免费视频播放| 日韩激情在线观看| 国产成人在线免费| 欧美日韩国产美| 国产日韩欧美不卡在线| 午夜av区久久| av在线这里只有精品| 日韩一区二区电影| 最新久久zyz资源站| 韩国女主播成人在线观看| 色婷婷久久久久swag精品| 久久久久久久久久久久电影| 亚洲综合一区二区精品导航|