iT邦幫忙

2022 iThome 鐵人賽

DAY 22
0

上期我們測完了橫行的連線,這次要來偵測直行啦~~直行感覺上會比橫行還要難一些。
https://ithelp.ithome.com.tw/upload/images/20220916/20140063ZbQGnzvjUB.png

以第三層為例,之前是0、1、2,3、4、5,6、7、8,但現在要變成0、3、6,1、4、7,2、5、8,第一個for迴圈不用動,第二個的j一開始預設為等於i,再來每次都要增加j+層數,
ex:層數一樣假設為3,在第0層的時候,i=0 , j就會等於0,0+3=3,3+3=6。
這樣就可以達到我們要的效果了,結果如下:
https://ithelp.ithome.com.tw/upload/images/20220919/20140063lQKokvpMzV.png

弄完了直行跟橫行,兩條斜線就比較簡單啦~這邊依樣以層數為3舉例,仔細觀察會發現左上往右下的斜線是0、4、8,也就是層數+1後去加前一個數字(從0開始)
而右上往左下的斜線是2、4、6,這邊就變成層數-1後去加前一個數字(從層數-1開始)
就是這個樣子:
https://ithelp.ithome.com.tw/upload/images/20220919/20140063mbg07YNXLC.png

   private void checkLine() {
   int iButtonCheck = 0; //確定幾顆按鈕被點擊,(當整排按鈕被點擊數=層數時)=連線
   int iline = 0;

   //橫排
   for (int i = 0; i < m_iSize; i++) {
       iButtonCheck = 0;

       for (int j = i * m_iSize; j < m_iSize * (i + 1); j++) {
           if (m_alBingoButtons.get(j).isSelected() == false) {//有任一格false就連線失敗
               break;
           } else if (m_alBingoButtons.get(j).isSelected() == true) {
               iButtonCheck++;
           }
       }
       if (iButtonCheck == m_iSize) {
           iline++;
       }
   }

   //直排
   for (int i = 0; i < m_iSize; i++) {
       iButtonCheck = 0;

       for (int j = i; j < m_iSize * (m_iSize - 1) + i + 1; j = j + m_iSize) {
           if (m_alBingoButtons.get(j).isSelected() == false) {//有任一格false就連線失敗
               break;
           } else if (m_alBingoButtons.get(j).isSelected() == true) {
               iButtonCheck++;
           }
       }
       if (iButtonCheck == m_iSize) {
           iline++;  //加線
       }
   }
   //斜線-左上往右下
   iButtonCheck = 0;

   for (int i = 0; i < m_iSize * m_iSize; i = i + m_iSize + 1) {
       if (m_alBingoButtons.get(i).isSelected() == false) {//有任一格false就連線失敗
           break;
       } else if (m_alBingoButtons.get(i).isSelected() == true) {
           iButtonCheck++;
       }
   }
   if (iButtonCheck == m_iSize) {
       iline++;  //加線
   }

   //斜線-右上往左下
   iButtonCheck = 0;

   for (int i = m_iSize - 1; i <= m_iSize * (m_iSize - 1); i = i + m_iSize - 1) {
       if (m_alBingoButtons.get(i).isSelected() == false) {//有任一格false就連線失敗
           break;
       } else if (m_alBingoButtons.get(i).isSelected() == true) {
           iButtonCheck++;
       }
   }
   if (iButtonCheck == m_iSize) {
       iline++;  //加線
   }

   Log.i("LogTest", "連線數:" + String.valueOf(iline));
}

這樣就可以偵測所有的連線數啦~


上一篇
Day21 Android Studio 賓果連線數計算
下一篇
Day23 點開遊戲看到按鈕直覺上應該會直接按按鈕吧?奇怪怎麼沒反應 是不會壞了?為了避免這樣,只好設個dialog
系列文
上班到一半突然被通知被炒了的我只好來寫個賓果30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
Zero皇
iT邦研究生 3 級 ‧ 2022-09-22 20:59:27

終於來到連線功能了!

jafarwu iT邦新手 4 級 ‧ 2022-09-23 23:15:12 檢舉

終於要來星爆了

0
zoeke9011
iT邦新手 5 級 ‧ 2022-09-23 17:22:05

恭喜?

jafarwu iT邦新手 4 級 ‧ 2022-09-23 23:14:40 檢舉

/images/emoticon/emoticon07.gif

我要留言

立即登入留言