• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    軟件測試中java連連看源代碼

    發布: 2010-9-19 10:20 | 作者: 網絡轉載 | 來源: 領測軟件測試網采編 | 查看: 221次 | 進入軟件測試論壇討論

    領測軟件測試網

    軟件測試中java連連看源代碼

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

    public class lianliankan implements ActionListener {
     JFrame mainFrame; // 主面板
     Container thisContainer;
     JPanel centerPanel, southPanel, northPanel; // 子面板
     JButton diamondsButton[][] = new JButton[6][5];// 游戲按鈕數組
     JButton exitButton, resetButton, newlyButton; // 退出,重列,重新開始按鈕
     JLabel fractionLable = new JLabel("0"); // 分數標簽
     JButton firstButton, secondButton; // 分別記錄兩次被選中的按鈕
     int grid[][] = new int[8][7];// 儲存游戲按鈕位置
     static boolean pressInformation = false; // 判斷是否有按鈕被選中
     int x0 = 0, y0 = 0, x = 0, y = 0, fristMsg = 0, secondMsg = 0, validateLV; // 游戲按鈕的位置坐標
     int i, j, k, n;// 消除方法控制

     public void init() {
      mainFrame = new JFrame("JKJ連連看");
      thisContainer = mainFrame.getContentPane();
      thisContainer.setLayout(new BorderLayout());
      centerPanel = new JPanel();
      southPanel = new JPanel();
      northPanel = new JPanel();
      thisContainer.add(centerPanel, "Center");
      thisContainer.add(southPanel, "South");
      thisContainer.add(northPanel, "North");
      centerPanel.setLayout(new GridLayout(6, 5));
      for (int cols = 0; cols < 6; cols++) {
       for (int rows = 0; rows < 5; rows++) {
        diamondsButton[cols][rows] = new JButton(String
          .valueOf(grid[cols + 1][rows + 1]));
        diamondsButton[cols][rows].addActionListener(this);
        centerPanel.add(diamondsButton[cols][rows]);
       }
      }
      exitButton = new JButton("退出");
      exitButton.addActionListener(this);
      resetButton = new JButton("重列");
      resetButton.addActionListener(this);
      newlyButton = new JButton("再來一局");
      newlyButton.addActionListener(this);
      southPanel.add(exitButton);
      southPanel.add(resetButton);
      southPanel.add(newlyButton);
      fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable
        .getText())));
      northPanel.add(fractionLable);
      mainFrame.setBounds(280, 100, 500, 450);
      mainFrame.setVisible(true);
     }

     public void randomBuild() {
      int randoms, cols, rows;
      for (int twins = 1; twins <= 15; twins++) {
       randoms = (int) (Math.random() * 25 + 1);
       for (int alike = 1; alike <= 2; alike++) {
        cols = (int) (Math.random() * 6 + 1);
        rows = (int) (Math.random() * 5 + 1);
        while (grid[cols][rows] != 0) {
         cols = (int) (Math.random() * 6 + 1);
         rows = (int) (Math.random() * 5 + 1);
        }
        this.grid[cols][rows] = randoms;
       }
      }
     }

     public void fraction() {
      fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable
        .getText()) + 100));
     }

     public void reload() {
      int save[] = new int[30];
      int n = 0, cols, rows;
      int grid[][] = new int[8][7];
      for (int i = 0; i <= 6; i++) {
       for (int j = 0; j <= 5; j++) {
        if (this.grid[i][j] != 0) {
         save[n] = this.grid[i][j];
         n++;
        }
       }
      }
      n = n - 1;
      this.grid = grid;
      while (n >= 0) {
       cols = (int) (Math.random() * 6 + 1);
       rows = (int) (Math.random() * 5 + 1);
       while (grid[cols][rows] != 0) {
        cols = (int) (Math.random() * 6 + 1);
        rows = (int) (Math.random() * 5 + 1);
       }
       this.grid[cols][rows] = save[n];
       n--;
      }
      mainFrame.setVisible(false);
      pressInformation = false; // 這里一定要將按鈕點擊信息歸為初始
      init();
      for (int i = 0; i < 6; i++) {
       for (int j = 0; j < 5; j++) {
        if (grid[i + 1][j + 1] == 0)
         diamondsButton[i][j].setVisible(false);
       }
      }
     }

     public void estimateEven(int placeX, int placeY, JButton bz) {
      if (pressInformation == false) {
       x = placeX;
       y = placeY;
       secondMsg = grid[x][y];
       secondButton = bz;
       pressInformation = true;
      } else {
       x0 = x;
       y0 = y;
       fristMsg = secondMsg;
       firstButton = secondButton;
       x = placeX;
       y = placeY;
       secondMsg = grid[x][y];
       secondButton = bz;
       if (fristMsg == secondMsg && secondButton != firstButton) {
        xiao();
       }
      }
     }

     public void xiao() { // 相同的情況下能不能消去。仔細分析,不一條條注釋
      if ((x0 == x && (y0 == y + 1 || y0 == y - 1))
        || ((x0 == x + 1 || x0 == x - 1) && (y0 == y))) { // 判斷是否相鄰
       remove();
      } else {
       for (j = 0; j < 7; j++) {
        if (grid[x0][j] == 0) { // 判斷第一個按鈕同行哪個按鈕為空
         if (y > j) { // 如果第二個按鈕的Y坐標大于空按鈕的Y坐標說明第一按鈕在第二按鈕左邊
          for (i = y - 1; i >= j; i--) { // 判斷第二按鈕左側直到第一按鈕中間有沒有按鈕
           if (grid[x][i] != 0) {
            k = 0;
            break;
           } else {
            k = 1;
           } // K=1說明通過了第一次驗證
          }
          if (k == 1) {
           linePassOne();
          }
         }
         if (y < j) { // 如果第二個按鈕的Y坐標小于空按鈕的Y坐標說明第一按鈕在第二按鈕右邊
          for (i = y + 1; i <= j; i++) { // 判斷第二按鈕左側直到第一按鈕中間有沒有按鈕
           if (grid[x][i] != 0) {
            k = 0;
            break;
           } else {
            k = 1;
           }
          }
          if (k == 1) {
           linePassOne();
          }
         }
         if (y == j) {
          linePassOne();
         }
        }
        if (k == 2) {
         if (x0 == x) {
          remove();
         }
         if (x0 < x) {
          for (n = x0; n <= x - 1; n++) {
           if (grid[n][j] != 0) {
            k = 0;
            break;
           }
           if (grid[n][j] == 0 && n == x - 1) {
            remove();
           }
          }
         }
         if (x0 > x) {
          for (n = x0; n >= x + 1; n--) {
           if (grid[n][j] != 0) {
            k = 0;
            break;
           }
           if (grid[n][j] == 0 && n == x + 1) {
            remove();
           }
          }
         }
        }
       }
       for (i = 0; i < 8; i++) { // 列
        if (grid[i][y0] == 0) {
         if (x > i) {
          for (j = x - 1; j >= i; j--) {
           if (grid[j][y] != 0) {
            k = 0;
            break;
           } else {
            k = 1;
           }
          }
          if (k == 1) {
           rowPassOne();
          }
         }
         if (x < i) {
          for (j = x + 1; j <= i; j++) {
           if (grid[j][y] != 0) {
            k = 0;
            break;
           } else {
            k = 1;
           }
          }
          if (k == 1) {
           rowPassOne();
          }
         }
         if (x == i) {
          rowPassOne();
         }
        }
        if (k == 2) {
         if (y0 == y) {
          remove();
         }
         if (y0 < y) {
          for (n = y0; n <= y - 1; n++) {
           if (grid[i][n] != 0) {
            k = 0;
            break;
           }
           if (grid[i][n] == 0 && n == y - 1) {
            remove();
           }
          }
         }
         if (y0 > y) {
          for (n = y0; n >= y + 1; n--) {
           if (grid[i][n] != 0) {
            k = 0;
            break;
           }
           if (grid[i][n] == 0 && n == y + 1) {
            remove();
           }
          }
         }
        }
       }
      }
     }

     public void linePassOne() {
      if (y0 > j) { // 第一按鈕同行空按鈕在左邊
       for (i = y0 - 1; i >= j; i--) { // 判斷第一按鈕同左側空按鈕之間有沒按鈕
        if (grid[x0][i] != 0) {
         k = 0;
         break;
        } else {
         k = 2;
        } // K=2說明通過了第二次驗證
       }
      }
      if (y0 < j) { // 第一按鈕同行空按鈕在與第二按鈕之間
       for (i = y0 + 1; i <= j; i++) {
        if (grid[x0][i] != 0) {
         k = 0;
         break;
        } else {
         k = 2;
        }
       }
      }
     }

     public void rowPassOne() {
      if (x0 > i) {
       for (j = x0 - 1; j >= i; j--) {
        if (grid[j][y0] != 0) {
         k = 0;
         break;
        } else {
         k = 2;
        }
       }
      }
      if (x0 < i) {
       for (j = x0 + 1; j <= i; j++) {
        if (grid[j][y0] != 0) {
         k = 0;
         break;
        } else {
         k = 2;
        }
       }
      }
     }

     public void remove() {
      firstButton.setVisible(false);
      secondButton.setVisible(false);
      fraction();
      pressInformation = false;
      k = 0;
      grid[x0][y0] = 0;
      grid[x][y] = 0;
     }

     public void actionPerformed(ActionEvent e) {
      if (e.getSource() == newlyButton) {
       int grid[][] = new int[8][7];
       this.grid = grid;
       randomBuild();
       mainFrame.setVisible(false);
       pressInformation = false;
       init();
      }
      if (e.getSource() == exitButton)
       System.exit(0);
      if (e.getSource() == resetButton)
       reload();
      for (int cols = 0; cols < 6; cols++) {
       for (int rows = 0; rows < 5; rows++) {
        if (e.getSource() == diamondsButton[cols][rows])
         estimateEven(cols + 1, rows + 1, diamondsButton[cols][rows]);
       }
      }
     }

     public static void main(String[] args) {
      lianliankan llk = new lianliankan();
      llk.randomBuild();
      llk.init();
     }
    }

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: java JAVA Java 軟件測試 源代碼 連連看


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>