在前面20天我們大致上完成了這個賓果app,但好還能再更好,所以我們要來計算連線數啦~
但要怎麼呈現也是個問題,是要印在畫面上的某個textView,還是跳出一個dialog來告訴使用者呢?
但在印之前還有個問題是要怎麼計算連線數,目前大致上可以分成直行、橫行、跟兩條斜線,
確定好目標後就可以開始上工啦,既然不知道要先印在哪裡,先印在Logcat裡面也是可以的
我們會先用一個for迴圈去確定要跑幾次(由生成的層數決定),再來用一個for迴圈去跑裡面的按鈕,這時就要來想一下怎麼設這個迴圈了。
橫行的第二個迴圈初始點會用第幾層乘上層數。
假設現在層數是3,第二個迴圈從第0層的時候從0(第一顆按鈕tag是0,第二顆是1,第三顆是2…,第九顆是8)開始0、1、2,再來要從3、4、5,最後是6、7、8,也就是初始點要是0、3、6,而停止的時間就是下次的起始點,所以就是層數乘上(i+1),弄出來就會像下面這樣。
再來就是加個判斷,這會會弄個 iButtonCheck 去檢查是不是每個按鈕都有被點擊過,
當按鈕被點擊時iButtonCheck 就會加1,當一個橫行跑完後會去判斷iButtonCheck有沒有等於層數(以上面層數是3來說,假設按鈕都被點擊了,iButtonCheck在繞完第一個橫行後應該會=3,也就是等於層數,這時就會有個計算連線的iLine,這個iLine就會加1。iButtonCheck在繞完第一個橫行後應該會不等於3的時候就不理他)
最後再來用log看連線數有沒有算對,大致上會長下面這樣
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 呦:
嘗試偵測的畫面:
相信今天大家的動腦動得夠多了,我們明天再來處理其他連線的判斷。