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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tetrisblock.java

?? J2ME 從入門到精通(程序開發(fā)使用案例) 書中代碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
//    next = Math.abs(rand.nextInt()) % 7 + 1;

    /* 得到當(dāng)前下墜物 */
    switch (pattern) {
      case 1:
        readPattern(blockpattern1);
        break;
      case 2:
        readPattern(blockpattern2);
        break;
      case 3:
        readPattern(blockpattern3);
        break;
      case 4:
        readPattern(blockpattern4);
        break;
      case 5:
        readPattern(blockpattern5);
        break;
      case 6:
        readPattern(blockpattern6);
        break;
      case 7:
        readPattern(blockpattern7);
        break;
    }

    /* 得到下一個下墜物 */
    switch (next) {
      case 1:
        readNextPattern(blockpattern1);
        break;
      case 2:
        readNextPattern(blockpattern2);
        break;
      case 3:
        readNextPattern(blockpattern3);
        break;
      case 4:
        readNextPattern(blockpattern4);
        break;
      case 5:
        readNextPattern(blockpattern5);
        break;
      case 6:
        readNextPattern(blockpattern6);
        break;
      case 7:
        readNextPattern(blockpattern7);
        break;
    }

    x = 5; /* 游戲容器內(nèi)徑的一半 */
    y = 0; /*     y坐標(biāo) */
    rot = 0;




    //判斷map數(shù)據(jù),決定y的真正值,之所以這么處理,是因為當(dāng)game over的時候,最后一個下墜物,可能只能畫出一部分
    //為了達到這個效果,必須讓y成為一個恰當(dāng)?shù)呢撝?
    while (isCrashAtBegin()) {
      y--;
      if(y<-4){
        break;
      }
    }

    oldx = x;
    oldy = y;

    oldrot = rot;

  }

  /**
   * 設(shè)置當(dāng)前下墜物變量的內(nèi)容
   * @param nowblock int[][][] 7種下墜物常量之一
   */

  private void readPattern(int[][][] nowblock) {
    blockpattern = new int[4][4][4];

    for (int i = 0; i < 4; i++) {
      for (int j = 0; j < 4; j++) {
        for (int k = 0; k < 4; k++) {
          blockpattern[i][j][k] = nowblock[i][j][k];
        }
      }
    }
  }

  /**
   * 設(shè)置下一個下墜物變量的內(nèi)容。只需要包存4中旋轉(zhuǎn)變化中的第一種即可,所以roto為值=0
   * @param nowblock int[][][] 7種下墜物常量之一
   * 很容易理解
   */

  private void readNextPattern(int[][][] nowblock) {
    blockNextpattern = new int[4][4];

    for (int i = 0; i < 4; i++) {
      for (int j = 0; j < 4; j++) {
        blockNextpattern[i][j] = nowblock[0][i][j];
      }
    }
  }

  /* 旋轉(zhuǎn)下墜物 */
  protected void rotBlock() {
    rot++;

    if (rot == 4) {
      rot = 0;
    }
  }

  /**
   * 繪制下墜物,包括清除下墜物的舊圖像,調(diào)用繪制下墜物新圖像的函數(shù)
   * 本地方法
   * @param g Graphics
   */

  public void paint(Graphics g) {

    //如果3維都沒有變化,則無需重畫
    if ( (oldrot != rot) || (oldx != x) || (oldy != y)) {

      //清除舊圖形
      g.setColor(TetrisCanvas.BACKGROUND);
      for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
          if (blockpattern[oldrot][i][j] == 1) {
            g.fillRect(gamearea_x +
                       (oldx + j) * brick_Width,
                       gamearea_y +
                       (oldy + i) * brick_Width,
                       brick_Width, brick_Width);
          }
        }
      }
      drawBlock(g);
      oldrot = rot;
      oldx = x;
      oldy = y;
    }
  }

  /**
   * 繪制下墜物
   * @param g Graphics
   * 本地,遠端均可使用
   */

  public void drawBlock(Graphics g) {
    for (int i = 0; i < 4; i++) {
      for (int j = 0; j < 4; j++) {
        if (blockpattern[rot][i][j] == 1) {
          drawBrick(gamearea_x +
                    (x + j) * brick_Width,
                    gamearea_y +
                    (y + i) * brick_Width, g, pattern - 1);
        }
      }
    }
  }

  /*
   * 遠端用戶使用,清除當(dāng)前下墜的方塊
   * 
   */
  public void eraseBlock(Graphics g)
  {
      //清除舊圖形
      g.setColor(TetrisCanvas.BACKGROUND);
      
      int px = gamearea_x + 5 * brick_Width;
      int py = gamearea_y ;
      int width = brick_Width * 4;
      g.fillRect(px, py, width, width);
             
      //繪制重新接收的當(dāng)前方塊
      drawBlock(g);

  }
  /**
   * 判斷下墜物是不是和map中已有的磚塊重疊,為了處理gameover的時候,只需畫出部分下墜物的情況
    @return true:有重疊,false:無重疊
   */

  public boolean isCrashAtBegin() {
    //行
    for (int i = 3; i >= 0; i--) {
      //列
      for (int j = 0; j < 4; j++) {
        int mx = x + j;

        int my = y + i;
        if (my < 0) {
          my = 0;
        }

        if (blockpattern[rot][i][j] == 1 && map.get(mx, my) != 8 &&
            map.get(mx, my) != 0) {
          return true;

        }
      }
    }
    return false;
  }

  /**
   * 畫小磚塊
   * @param px x坐標(biāo)
   * @param py y坐標(biāo)
   * @param g Graphics
   * @param colorIndex 顏色索引值
   */

  public void drawBrick(int px, int py, Graphics g, int colorIndex) {
    //畫白邊
    g.setColor(255, 255, 255);
    g.fillRect(px, py, 1, brick_Width);
    g.fillRect(px, py, brick_Width, 1);
    //畫中心
    int color = BRICK_COLORS[colorIndex];
    g.setColor(color);
    g.fillRect(px + 1, py + 1, brick_Width - 1,
               brick_Width - 1);
    //畫灰邊
    g.setColor(0x00c0c0c0);
    g.fillRect(px + brick_Width - 1, py + 1, 1,
               brick_Width - 1);
    g.fillRect(px + 1, py + brick_Width - 1,
               brick_Width - 2, 1);
  }

  /**
   * 在游戲容器的右邊繪出下一個下墜物
   * @param g Graphics
   */

  public void drawNextBlock(Graphics g) {
    //清除繪制區(qū)域
    g.setColor(TetrisCanvas.BACKGROUND);
    int px = gamearea_x + 12 * brick_Width;
    int py = gamearea_y + 2 * brick_Width;
    int width = brick_Width * 4;
    g.fillRect(px, py, width, width);

    for (int i = 0; i < 4; i++) {
      for (int j = 0; j < 4; j++) {
        if (blockNextpattern[i][j] == 1) {
          drawBrick(px + j * brick_Width,
                    py + i * brick_Width, g, next - 1);
        }
      }
    }
  }

  /**
   * 判斷下墜物是否能下移
   * @param kyouseiflag boolean true:自動下移 false:人工按鍵下移
   * @return boolean
   */
  public boolean checkDown() {

    boolean check = true;

    /* 分別掃描下墜物的4行,從最下面的那行開始 */
    for (int i = 0; i < 4; i++) {
      int row = 3;
      while (row >= 0) {
        if (blockpattern[rot][row][i] == 1) {
          if (map.get(x + i, y + row + 1) != 0) {
            check = false;
          }

          row = -1; /* 終止循環(huán) */
        }
        else {
          row--;
        }
      }
    }

    return check;
  }

  /* 下墜物下移1行 */
  public void down() {
    y = y + 1;
  }

  /* 判斷是否能旋轉(zhuǎn) */
  public boolean checkRot() {
    boolean check = true;

    int tmpRot = rot + 1;
    if (tmpRot == 4) {
      tmpRot = 0;
    }

    for (int i = 0; i < 4; i++) {
      for (int j = 0; j < 4; j++) {
        if (blockpattern[tmpRot][i][j] == 1) {
          if (map.get(x + j, y + i) != 0) {
            check = false;
          }
        }
      }
    }

    return check;
  }

  /* 判斷下墜物是否可以移動 */
  public boolean checkMove(int direct) {

    boolean check = true;

    /* 分別掃描下墜物的4行 */
    for (int i = 0; i < 4; i++) {
      if (direct == 1) { /* 左移 */
        int row = 0;
        while (row <= 3) {
          if (blockpattern[rot][i][row] == 1) {
            if (map.get(x + row - 1, y + i) != 0) {
              check = false;
            }

            row = 4; /* 終止循環(huán) */
          }
          else {
            row++;
          }
        }
      }
      else { /* 右移 */
        int row = 3;
        while (row >= 0) {
          if (blockpattern[rot][i][row] == 1) {
            if (map.get(x + row + 1, y + i) != 0) {
              check = false;
            }

            row = -1; /* 終止循環(huán) */
          }
          else {
            row--;
          }
        }
      }
    }

    return check;
  }

  /* 左右移動 */
  public void move(int direct) {
    if (direct == 1) {
      x = x - 1;
    }
    else {
      x = x + 1;
    }
  }

  public int getY() {
    return y;
  }

  /* 根據(jù)下墜物的當(dāng)前位置設(shè)置地圖數(shù)據(jù) */
  public void fixBlock() {
    for (int i = 0; i < 4; i++) {
      for (int j = 0; j < 4; j++) {
        if (blockpattern[rot][i][j] == 1) {
          map.set(x + j, y + i, pattern);

        }
      }
    }
  }
  
  public int getPattern()
  {
	  return pattern;
  }
  
  public int getNext()
  {
	  return next;
  }
  
  public void generatePN()
  {
	  pattern = next;
	    
	  next = Math.abs(rand.nextInt()) % 7 + 1;
  }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品欧美一区二区三区小说| 久久色中文字幕| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲视频1区2区| 日本va欧美va欧美va精品| 99精品久久只有精品| 精品91自产拍在线观看一区| 亚洲福利电影网| 成人午夜免费av| xf在线a精品一区二区视频网站| 一区二区三区欧美激情| 国产·精品毛片| 欧美电影精品一区二区| 日韩va欧美va亚洲va久久| 欧美性一级生活| 亚洲另类在线制服丝袜| 成人av网站在线观看免费| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 91麻豆福利精品推荐| www一区二区| 免费观看日韩av| 欧美久久久久久久久中文字幕| 亚洲美女精品一区| 9l国产精品久久久久麻豆| 欧美国产日本视频| 成人精品免费看| 日本一区二区视频在线| 国产99精品视频| 中文字幕不卡在线| 成人自拍视频在线观看| 国产欧美日韩视频在线观看| 国产精品一级在线| 久久精品视频一区二区| 国产成人夜色高潮福利影视| 国产色一区二区| 成人性生交大片免费看视频在线 | 欧美久久久一区| 天天av天天翘天天综合网色鬼国产 | 337p亚洲精品色噜噜狠狠| 五月激情综合网| 欧美一区二区三区在线视频| 久久丁香综合五月国产三级网站| 日韩欧美激情四射| 激情文学综合网| 欧美国产日产图区| 色嗨嗨av一区二区三区| 亚洲成人激情综合网| 欧美一区二区三区四区视频| 精品一区二区三区欧美| 亚洲国产精品二十页| 91婷婷韩国欧美一区二区| 亚洲综合在线五月| 日韩午夜在线播放| 风间由美一区二区三区在线观看 | 91首页免费视频| 亚洲高清不卡在线| 久久久亚洲午夜电影| av欧美精品.com| 三级在线观看一区二区| 国产亚洲精久久久久久| 色天使色偷偷av一区二区 | 亚洲精品视频在线看| 欧美色窝79yyyycom| 日本不卡123| 中文字幕中文字幕在线一区| 欧美精品丝袜久久久中文字幕| 精品一区二区三区在线视频| 国产精品久久看| 欧美一区二区美女| av一二三不卡影片| 日韩 欧美一区二区三区| 国产精品视频第一区| 欧美日韩激情一区二区三区| 久久精工是国产品牌吗| 国产精品对白交换视频| 色94色欧美sute亚洲线路一久 | 国产九色精品成人porny| 国产精品美女久久久久久久久久久| 91久久精品日日躁夜夜躁欧美| 青青草视频一区| 国产精品久久久久精k8 | 欧美午夜精品免费| 国产成人午夜精品5599| 天天操天天干天天综合网| 日韩毛片精品高清免费| 精品国产免费人成电影在线观看四季 | 99国产精品久久久久| 免费在线看一区| 亚洲午夜精品网| 国产精品久久久久久亚洲伦| 欧美精品一区二区三区高清aⅴ| 欧美日韩中字一区| 99久久精品国产一区| 国产成人午夜99999| 蜜臀久久久久久久| 亚洲成人精品在线观看| 亚洲精品你懂的| 国产精品久久免费看| 国产亚洲一二三区| 26uuu国产日韩综合| 日韩精品一区二区三区在线观看| 欧美日本国产视频| 欧美日韩一区二区三区在线| 色8久久精品久久久久久蜜 | 一区二区在线观看免费| 国产精品久久久久精k8| 国产欧美视频一区二区三区| 久久影视一区二区| 久久尤物电影视频在线观看| 欧美r级电影在线观看| 欧美电影免费观看高清完整版在线 | 免费在线观看不卡| 奇米精品一区二区三区四区| 午夜成人免费视频| 天天影视色香欲综合网老头| 日韩中文欧美在线| 视频一区二区中文字幕| 日韩成人免费在线| 久久69国产一区二区蜜臀| 久久精品国产一区二区三 | 精品久久久久一区| 欧美精品一区二区蜜臀亚洲| xfplay精品久久| 欧美激情一区在线观看| 国产精品久久久久久久久搜平片 | 中文字幕一区二区三区在线观看| 中文字幕在线免费不卡| 成人欧美一区二区三区| 亚洲一二三专区| 视频一区二区三区中文字幕| 美女视频黄免费的久久 | 日本一区二区电影| 亚洲激情六月丁香| 天堂蜜桃91精品| 激情六月婷婷久久| 不卡视频在线看| 欧洲一区在线电影| 日韩欧美资源站| 欧美高清在线一区二区| 亚洲国产精品久久人人爱| 奇米精品一区二区三区四区| 国产91丝袜在线18| 欧美性色欧美a在线播放| 日韩女优视频免费观看| 国产精品久久看| 日韩和的一区二区| 国产成人av在线影院| 欧美在线观看禁18| 精品99久久久久久| 亚洲一级片在线观看| 国产精品一区一区三区| 在线一区二区三区| www欧美成人18+| 夜夜操天天操亚洲| 精品一区二区三区久久久| 日本久久一区二区三区| 欧美成人vps| 亚洲久本草在线中文字幕| 国内精品不卡在线| 欧洲一区在线电影| 国产日产欧产精品推荐色| 午夜av区久久| 成人性生交大片免费看在线播放 | 久久成人综合网| 欧洲一区二区三区在线| 国产人久久人人人人爽| 日韩高清在线观看| 91理论电影在线观看| 久久老女人爱爱| 日本不卡视频一二三区| 91在线一区二区| 欧美国产日产图区| 在线观看亚洲成人| 亚洲蜜臀av乱码久久精品蜜桃| 青青草国产成人99久久| 色综合久久久久综合99| 久久久99精品久久| 日本视频中文字幕一区二区三区| 91伊人久久大香线蕉| 国产午夜亚洲精品午夜鲁丝片 | 国产精品国产三级国产普通话三级| 五月天激情综合| 91福利区一区二区三区| 国产精品久久久久四虎| 国产精品系列在线观看| 欧美不卡一区二区三区四区| 亚洲 欧美综合在线网络| 一本色道久久综合精品竹菊| 国产精品少妇自拍| 国产精品一二三在| 久久人人超碰精品| 久久99久久精品| 精品国产乱码久久久久久1区2区 | 丝袜亚洲另类欧美综合| 欧美无人高清视频在线观看| 亚洲视频一区二区免费在线观看| 成人小视频在线观看| 国产精品久久久久久久久久免费看| 成人性视频免费网站| 欧美国产日本视频|