A. MainWindow
MainWindow 為主要的GUI Class
其中調用game class的遊戲方式
主要為
void setlabel()
是用來初始化設定grid layout 和 buttons
讀入game class 中的2-D array
並且調用setImage來將值轉換成圖片
然後使用signalMapper和connection來將每個按鈕與on_pushButton_clicked(int id)吃一個按鈕的id做連結
並且on_pushButton_clicked(int id)會有兩個id之後才會動作+清空
void play()
是用來讀入兩個按鈕
首先利用isNear判斷是不是在隔壁
然後判斷兩個按鈕是否代表同樣的石頭
之後在利用條件判斷石頭或是炸彈並且做出動作
也是在這個函式
會有分數和步數的顯示
並且確認過關條件checkWin函式
之後在checkWin函式中
判斷條件傳出score 和 星數 和成功與否傳到Result class
B. game
game 中是主要的遊戲運算
void init()
為初始化亂數分配出石頭(6種)
void checkline()
這個函式為判斷是否有連線(分為row , col)
並且以數量去判斷出
為正常的3個,炸橫排或直排4個,星星5個
row+col都大等於三-> 炸彈
void rowBomb
void colBomb
即為正常的炸法
炸完之後會生成一排炸彈或是星星
void Bomb
則是炸彈的生成
void typeBomb
為四種炸彈的炸法
void moveDown
這個則是在炸空之後
把上面的石頭drop下來
並且傳入gener函式來將最上面空的重新亂數
C. Result
從MainWindow show出來
並且顯示出
Pass / Failed
Star星數
Score分數
以上 thx for reading