iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0
Mobile Development

上班到一半突然被通知被炒了的我只好來寫個賓果系列 第 21

Day21 Android Studio 賓果連線數計算

  • 分享至 

  • xImage
  •  

在前面20天我們大致上完成了這個賓果app,但好還能再更好,所以我們要來計算連線數啦~
但要怎麼呈現也是個問題,是要印在畫面上的某個textView,還是跳出一個dialog來告訴使用者呢?
但在印之前還有個問題是要怎麼計算連線數,目前大致上可以分成直行、橫行、跟兩條斜線,
確定好目標後就可以開始上工啦,既然不知道要先印在哪裡,先印在Logcat裡面也是可以的

我們會先用一個for迴圈去確定要跑幾次(由生成的層數決定),再來用一個for迴圈去跑裡面的按鈕,這時就要來想一下怎麼設這個迴圈了。
https://ithelp.ithome.com.tw/upload/images/20220916/20140063ZbQGnzvjUB.png

橫行的第二個迴圈初始點會用第幾層乘上層數。
假設現在層數是3,第二個迴圈從第0層的時候從0(第一顆按鈕tag是0,第二顆是1,第三顆是2…,第九顆是8)開始0、1、2,再來要從3、4、5,最後是6、7、8,也就是初始點要是0、3、6,而停止的時間就是下次的起始點,所以就是層數乘上(i+1),弄出來就會像下面這樣。
https://ithelp.ithome.com.tw/upload/images/20220916/20140063Mb9krdttei.png

再來就是加個判斷,這會會弄個 iButtonCheck 去檢查是不是每個按鈕都有被點擊過,
當按鈕被點擊時iButtonCheck 就會加1,當一個橫行跑完後會去判斷iButtonCheck有沒有等於層數(以上面層數是3來說,假設按鈕都被點擊了,iButtonCheck在繞完第一個橫行後應該會=3,也就是等於層數,這時就會有個計算連線的iLine,這個iLine就會加1。iButtonCheck在繞完第一個橫行後應該會不等於3的時候就不理他)

最後再來用log看連線數有沒有算對,大致上會長下面這樣
https://ithelp.ithome.com.tw/upload/images/20220916/20140063DKL1WK4uY0.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++;
       }
       }
       Log.i("LogTest","連線數:"+String.valueOf(iline));
   }

弄完記得把 checkLine(); 加在 checkBingoButtonStatus 呦:
https://ithelp.ithome.com.tw/upload/images/20220916/20140063ghxNbr9dmW.png

嘗試偵測的畫面:
https://ithelp.ithome.com.tw/upload/images/20220916/20140063KvBA4DQmm5.png

相信今天大家的動腦動得夠多了,我們明天再來處理其他連線的判斷。


上一篇
Day20 切換switch模式後的各種問題(賓果的遊戲模式切換回輸入模式)
下一篇
Day22 賓果連線數計算完成!
系列文
上班到一半突然被通知被炒了的我只好來寫個賓果30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言