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

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

?? mapui.java

?? 利用Java Swing 編寫游戲源代碼 適用平臺 Win9x/Me/NT/2000/XP 包含很多示例文件。
?? JAVA
字號:
package kyodai.map;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import kyodai.*;

/**
 * <p>Title: LianLianKan</p>
 * <p>Description: 連連看</p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: www.wuhantech.com</p>
 * @author ZhangJian
 * @version 1.0
 */

public class MapUI
    extends JPanel
    implements ActionListener, Runnable {
  private Map map;
  private JButton[] dots;

  private Point lastPoint = new Point(0, 0); //上一個點的坐標
  private boolean isSelected = false; //是否已經選擇了一個點

  private int score = 0; //記錄用戶的得分
  private ClockAnimate clockAnimate; //同步顯示時鐘
  //AnimateDelete animate; //動畫
  JButton goTop10;

  private ScoreAnimate scoreAnimate;
  int stepScore = 0; //計算距離的分
  int limitTime = 0; //限定尋找的時間(秒)

  private boolean isPlaying = false; //當前是否正在游戲中

  public MapUI(Map map, JButton[] dots) {
    this.map = map;
    this.dots = dots;

    //animate = new AnimateDelete(dots);

    GridLayout gridLayout = new GridLayout();
    this.setLayout(gridLayout);
    gridLayout.setRows(Setting.ROW);
    gridLayout.setColumns(Setting.COLUMN);
    gridLayout.setHgap(2);
    gridLayout.setVgap(2);
    this.setLayout(gridLayout);
    this.setBackground(Kyodai.DarkColor);

    for (int row = 0; row < Setting.ROW; row++) {
      for (int col = 0; col < Setting.COLUMN; col++) {
        int index = row * Setting.COLUMN + col;
        dots[index].addActionListener(this);
        this.add(dots[index]);
      }
    }
  }

  public void setMap(Map map) {
    this.map = map;
  }

  /**
   * 獲取主界面上的goTop10按鈕,以便操作
   * @param goTop10
   */
  public void setTop10Button(JButton goTop10) {
    this.goTop10 = goTop10;
  }

  /**
   * 根據數組來繪置畫面
   */
  private void paint() {
    for (int row = 0; row < Setting.ROW; row++) {
      for (int col = 0; col < Setting.COLUMN; col++) {
        int index = row * Setting.COLUMN + col;
        /*message("row = " + row + ", col = " + col + ", index = " + index
                + ", map[][] = " + map.getMap()[row][col]);*/
        if (map.getMap()[row][col] > 0) {
          dots[index].setIcon(Kyodai.BlocksIcon[map.getMap()[row][col] - 1]);
          dots[index].setEnabled(true);
        }
        else {
          dots[index].setIcon(null);
          dots[index].setEnabled(false);
        }
      }
    }
  }

  public void repaint(Graphics g) {
    paint();
  }

  /**
   * 判斷當前是否已經沒有可消除的方塊
   * @param a
   * @return
   */
  private boolean validMap(Point a) {
    if (map.getCount() == 0) {
      return true;
    }

    Line line = new Line(0, new Point(), new Point());
    map.setTest(true); //只測試
    line = map.findNext(a);
    int offset = 0;
    if (line.direct == 1) { //找到了可消除的
      return true;
    }
    else {
      return false;
    }
  }

  /**
   * 更新當前顯示的分數
   * @param l
   * @param c
   */
  private void showScore(int l, int c) {
    if (scoreAnimate == null) {
      return;
    }
    scoreAnimate.setScore(l, c);
  }

  /**
   * 刷新當前的排列方式
   */
  public void refresh() {
    if (!isPlaying) { //不在游戲中,返回
      return;
    }
    if (map.getCount() == 0) {
      Kyodai.showHint("還刷,都沒了!");
    }
    if (Setting.Sound == 1) {
      new Sound(Sound.REFRESH);
    }

    if (validMap(new Point( -1, -1))) {
      score -= Setting.freshScore;
      showScore(score - 1, score);
    }
    else {
      showScore(score, score + Setting.freshScore);
      score += Setting.freshScore;
    }

    score -= Setting.freshScore;
    showScore(score - 1, score);

    map.refresh();
    paint();
  }

  /**
   * 消除兩個點
   * @param a
   * @param b
   */
  void earse(Point a, Point b) {
    //paint();

    int offset;
    offset = a.x * Setting.COLUMN + a.y;
    dots[offset].setIcon(null);
    dots[offset].setEnabled(false);

    offset = b.x * Setting.COLUMN + b.y;
    dots[offset].setIcon(null);
    dots[offset].setEnabled(false);

    //如果地圖清除完成,關閉
    if (map.getCount() == 0) {
      int remainTime = limitTime - clockAnimate.getUsedTime();
      message("remainTime = " + remainTime);
      if (remainTime > 0) {
        showScore(score, score + remainTime * Setting.timeScore);
        score += remainTime * Setting.timeScore;
      }
      isPlaying = false;
      stop();
      Kyodai.showHint("時間+ " + remainTime * Setting.timeScore + ",想看看你的排名嗎?");
      goTop10.setEnabled(true);
    }
    else {
      //test1(map.getDeleteArray());
    }
  }

  /**
   * 自動尋找最佳答案
   * @param a
   */
  public void findNext(Point a) {
    if (!isPlaying) { //不在游戲中,返回
      return;
    }
    if (map.getCount() == 0) {
      Kyodai.showHint("你找昏了頭吧,沒了!");
      return;
    }
    Line line = new Line(0, new Point(), new Point());
    map.setTest(true); //告訴map當前只是測試,并不需要進行刪除動畫
    line = map.findNext(a);
    int offset = 0;
    if (line.direct == 1) { //找到了可消除的
      if (Setting.Sound == 1) {
        new Sound(Sound.HINT);
      }
      offset = line.a.x * Setting.COLUMN + line.a.y;
      dots[offset].setBorder(Kyodai.Hint);
      offset = line.b.x * Setting.COLUMN + line.b.y;
      dots[offset].setBorder(Kyodai.Hint);
      score -= Setting.hintScore;
      showScore(score - 1, score);
    }
    else {
      Kyodai.showHint("找不到,請刷新");
    }
  }

  /**
   * 自動找出并消除地圖上的兩個點
   * @param a
   * @param showMessage
   * @return
   */
  public boolean bomb(Point a, boolean showMessage) {
    if (!isPlaying) { //不在游戲中,返回
      return false;
    }
    if (map.getCount() == 0) {
      Kyodai.showHint("你炸昏了頭吧,沒了!");
      return false;
    }
    Line line = new Line(0, new Point(), new Point());
    map.setTest(false);
    line = map.findNext(a);
    int offset = 0;
    if (line.direct == 1) { //找到了可消除的
      if (Setting.Sound == 1) {
        new Sound(Sound.BOMB);
      }
      offset = line.a.x * Setting.COLUMN + line.a.y;
      dots[offset].setBorder(Kyodai.unSelected);
      offset = line.b.x * Setting.COLUMN + line.b.y;
      dots[offset].setBorder(Kyodai.unSelected);
      map.earse(line.a, line.b);
      earse(line.a, line.b);

      score -= Setting.bombScore;
      showScore(score - 1, score);
      return true;
    }
    else {
      if (showMessage) {
        Kyodai.showHint("炸彈用不了,請刷新");
      }
      return false;
    }
  }

  private void message(String str) {
    //System.out.println(str);
    Kyodai.showHint(str);
  }

  /**
   * 自動游戲
   */
  public void autoPlay() {
    if (!isPlaying) { //不在游戲中,返回
      return;
    }
    //如果使用該功能,不計時間分
    limitTime = 0;

    while (map.getCount() > 0) {
      if (bomb(new Point( -1, -1), false)) {
        message("炸彈使用成功!");
      }
      else {
        message("找不到可用點,刷新……");
        refresh();
      }
    }
  }

  /**
   * 獲取系統的計分板
   * @param score
   */
  public void setScore(ScoreAnimate score) {
    this.scoreAnimate = score;
  }

  /**
   * 獲取系統的計時板
   * @param clock
   */
  public void setClock(ClockAnimate clock) {
    this.clockAnimate = clock;
  }

  public void actionPerformed(ActionEvent e) {
    JButton button = (JButton) e.getSource();
    int offset = Integer.parseInt(button.getActionCommand());
    int row, col;
    row = Math.round(offset / Setting.COLUMN);
    col = offset - row * Setting.COLUMN;
    if (map.getMap()[row][col] < 1) { //如果上面沒有圖片
      return;
    }

    if (Setting.Sound == 1) {
      new Sound(Sound.SELECT);
    }

    if (isSelected) {
      message("上次已經選擇了一個點");
      message("上次選擇點的坐標為: " + lastPoint.x + ", " + lastPoint.y +
              " 值為: " + map.getMap()[lastPoint.x][lastPoint.y] +
              " 位移為: " + (lastPoint.x * Setting.COLUMN + lastPoint.y));

      if (lastPoint.x == row && lastPoint.y == col) { //是上次選擇的點
        message("這次選擇的點和上次的是同一點,取消選擇狀態");
        button.setBorder(Kyodai.unSelected);
        isSelected = false;
      }
      else {
        //判斷是否可以消除
        message("這次選擇的點和上次的點并不相同");
        Point current = new Point(row, col);
        message("這次選擇的點的坐標為: " + row + ", " + col + " 值為: " +
                map.getMap()[row][col] +
                " 位移為: " + (row * Setting.COLUMN + col));
        map.setTest(false);
        if (map.test(lastPoint, current)) {
          message("兩點可以消除,執行消除");
          //消除前先取消當前選擇點的邊框,因為有可能是提示
          dots[row * Setting.COLUMN + col].setBorder(Kyodai.unSelected);

          map.earse(current, lastPoint);
          earse(current, lastPoint);
          dots[lastPoint.x * Setting.COLUMN +
              lastPoint.y].setBorder(Kyodai.unSelected);
          lastPoint = new Point(0, 0);
          isSelected = false;

          showScore(score, score + Setting.correctScore + stepScore);
          score += Setting.correctScore + stepScore;

          if (Setting.Sound == 1) {
            new Sound(Sound.EARSE);
          }
        }
        else {
          message("這次選擇的點與上次選擇的點無解,改變選擇為當前點");
          dots[lastPoint.x * Setting.COLUMN +
              lastPoint.y].setBorder(Kyodai.unSelected);
          button.setBorder(Kyodai.Selected);
          lastPoint.x = row;
          lastPoint.y = col;
          isSelected = true;

          score -= Setting.wrongScore;
          showScore(score - 1, score);
        }
      }
    }
    else {
      message("上次并未選擇的點,置當前點為選擇點");
      message("當前點坐標為: " + row + ", " + col + " 值為: " +
              map.getMap()[row][col] +
              " 位移為: " + (row * Setting.COLUMN + col));
      button.setBorder(Kyodai.Selected);
      lastPoint.x = row;
      lastPoint.y = col;
      isSelected = true;
    }
  }

  /**
   * 加密當前的分數
   * @param score
   * @return
   */
  public String encode() {
    if (score < 0) {
      Kyodai.showHint("負分還想有排名?下次努力吧!");
    }

    int level, f1, f2;
    level = Setting.LevelIndex;
    f1 = (score - 102) * (score - 102);
    f2 = (1978 - score) * (1978 - score);
    return "s=" + score + "&l=" + level + "&f1=" + f1 + "&f2=" + f2;
  }

  public void start() {
    goTop10.setEnabled(false);

    isPlaying = true;
    limitTime = map.getCount() * Setting.limitScore;
    message("limitTime = " + limitTime);
    paint();
  }

  public void run() {

  }

  public void stop() {
    clockAnimate.stop();
  }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区中文字幕在线| 欧美日韩小视频| 免费在线观看日韩欧美| 天天av天天翘天天综合网色鬼国产| 国产精品久久久久aaaa| 日本一区二区三区国色天香| 久久综合色天天久久综合图片| 久久综合色鬼综合色| 国产视频一区不卡| 国产精品网站导航| 亚洲欧美在线高清| 亚洲午夜激情av| 日韩精彩视频在线观看| 蜜臀91精品一区二区三区| 久久99久久久久久久久久久| 国产专区欧美精品| av中文字幕亚洲| 一本色道久久综合亚洲aⅴ蜜桃 | 日韩三级.com| 久久亚洲综合av| 国产精品水嫩水嫩| 亚洲婷婷综合色高清在线| 亚洲国产wwwccc36天堂| 青青草原综合久久大伊人精品优势| 精品亚洲国产成人av制服丝袜| 国产精品一二三| 一本大道久久a久久综合婷婷| 欧美日韩精品电影| 久久精品水蜜桃av综合天堂| 18成人在线视频| 日本在线不卡视频| 床上的激情91.| 欧美日韩精品三区| 国产精品理论在线观看| 日韩综合小视频| 成人精品免费网站| 欧美福利电影网| 国产精品三级av| 亚洲成人久久影院| 不卡av在线网| 精品国产乱码久久久久久影片| 亚洲免费成人av| 国产精品一区二区黑丝| 欧美调教femdomvk| 国产精品无人区| 美女视频黄久久| 在线免费视频一区二区| 国产无人区一区二区三区| 午夜国产精品一区| 99re热这里只有精品免费视频| 日韩写真欧美这视频| 亚洲人吸女人奶水| 国产传媒欧美日韩成人| 欧美一级二级在线观看| 尤物视频一区二区| 成人国产亚洲欧美成人综合网 | 欧美电视剧在线观看完整版| 亚洲精品亚洲人成人网| 成人网男人的天堂| 精品国产乱码久久久久久久久| 亚洲大尺度视频在线观看| 成人app在线观看| 国产日韩精品一区| 国产九色sp调教91| www国产亚洲精品久久麻豆| 日本sm残虐另类| 欧美午夜不卡视频| 亚洲一区在线看| 欧美综合欧美视频| 亚洲综合成人在线视频| 欧美午夜寂寞影院| 亚洲一级二级三级| 欧美日韩久久一区二区| 亚洲国产视频一区二区| 91高清视频在线| 亚洲一级二级在线| 欧美军同video69gay| 午夜精品福利久久久| 91精品国产欧美一区二区18| 日韩中文字幕亚洲一区二区va在线| 欧洲精品视频在线观看| 午夜不卡av在线| 日韩午夜三级在线| 麻豆精品精品国产自在97香蕉| 日韩欧美国产一区在线观看| 卡一卡二国产精品| 国产欧美日韩久久| 91小宝寻花一区二区三区| 中文字幕一区二区不卡| 在线一区二区观看| 日韩国产欧美在线观看| 久久综合九色综合欧美98| 成人午夜av影视| 亚洲成人久久影院| xnxx国产精品| 91视频国产观看| 日韩国产一区二| 国产精品美女久久久久久久久| 欧美中文字幕一区二区三区亚洲| 天堂久久久久va久久久久| 久久九九全国免费| 欧美在线短视频| 国产一区二区三区精品欧美日韩一区二区三区 | 中文字幕一区二区三区四区| 91福利视频在线| 精品一区二区国语对白| 国产精品久久久久国产精品日日| 91精品福利在线| 国产麻豆成人精品| 亚洲乱码国产乱码精品精98午夜| 91精品啪在线观看国产60岁| 国产精品系列在线观看| 亚洲高清免费视频| 国产精品天天看| 91精品国产全国免费观看| 不卡一区在线观看| 免费高清在线一区| 亚洲欧洲制服丝袜| 久久新电视剧免费观看| 欧美日韩中文国产| 成人18视频在线播放| 精品夜夜嗨av一区二区三区| 亚洲精品伦理在线| 亚洲国产精品传媒在线观看| 欧美日本乱大交xxxxx| 91丨porny丨首页| 国产一区二区三区香蕉| 日本中文字幕一区| 亚洲一区二区在线观看视频| 亚洲国产精品二十页| 日韩欧美的一区| 欧美日韩一区二区三区四区五区| 成人午夜视频免费看| 国产在线精品视频| 免费看欧美美女黄的网站| 一区二区三区.www| 国产精品色在线| 国产日韩影视精品| 久久亚洲精华国产精华液| 日韩欧美一级精品久久| 欧美精品亚洲二区| 欧美系列在线观看| 欧美性猛交xxxxxxxx| 91美女在线视频| 95精品视频在线| 99免费精品视频| 成人精品在线视频观看| 国产一区在线观看视频| 看国产成人h片视频| 免费成人小视频| 精品一区二区三区在线观看| 日本免费在线视频不卡一不卡二 | 麻豆91在线播放免费| 婷婷综合五月天| 日韩精品一二三四| 日韩av中文在线观看| 奇米色一区二区| 狠狠色丁香婷婷综合| 精品中文av资源站在线观看| 精品一区在线看| 国产乱人伦偷精品视频免下载| 国产精品影音先锋| 成人毛片老司机大片| eeuss鲁一区二区三区| 色欲综合视频天天天| 欧美精品日韩一本| 日韩精品一区二区在线| 国产网站一区二区| 亚洲乱码中文字幕综合| 亚洲国产精品精华液网站| 老司机一区二区| 成人高清视频免费观看| 91精品福利视频| 欧美一区二区美女| 国产欧美一区视频| 亚洲美女精品一区| 日韩av电影天堂| 国产精品亚洲成人| 欧美偷拍一区二区| 久久日韩精品一区二区五区| 国产精品对白交换视频| 午夜精品久久久久久久久| 狠狠色狠狠色合久久伊人| 色综合婷婷久久| 日韩免费看的电影| 亚洲男女一区二区三区| 老司机精品视频在线| 不卡av在线免费观看| 日韩一区二区不卡| 中文字幕一区三区| 久久狠狠亚洲综合| 色94色欧美sute亚洲13| 日韩欧美激情一区| 亚洲免费高清视频在线| 国产一区二区三区蝌蚪| 欧美视频三区在线播放| 中文字幕电影一区| 日韩电影在线一区二区三区| 91欧美一区二区| 久久久综合网站|