寫在開頭:
本人初入iOS,想借此系列的文章記錄自己的學(xué)習(xí)過程,同時(shí)也和大家分享一些學(xué)習(xí)心得,作為一個(gè)剛學(xué)編程的新人,想自己寫一個(gè)小app或者小游戲可能是一件比較困難的事情,于是乎我就嘗試用自己所學(xué)的有限的知識(shí)能不能做幾個(gè)小應(yīng)用,哪怕非常簡(jiǎn)單的也不要緊,整個(gè)嘗試的過程非常有趣,如果你和我同為新人,那么一起來(lái)學(xué)習(xí)討論吧!
沒圖你說(shuō)個(gè)球球啊,好。。先上動(dòng)圖展示:

素材是我自己用PS切的九個(gè)圖片,這個(gè)小游戲?qū)懫饋?lái)比較簡(jiǎn)單,我說(shuō)說(shuō)自己的方法吧:
1.應(yīng)用到的控件:
上面的全圖就是一個(gè)簡(jiǎn)單的imageView,而下面的圖片因?yàn)樾枰c(diǎn)擊,我就設(shè)成了按鈕,由于有一個(gè)需要空著,所以一開始我設(shè)置了八個(gè)按鈕,按鈕的移動(dòng)就是frame的變化,后來(lái)寫的時(shí)候發(fā)現(xiàn)這樣寫麻煩一些,靈機(jī)一動(dòng),用一個(gè)空白的按鈕代替了第九個(gè)格子,然后瞬間發(fā)現(xiàn)寫起來(lái)簡(jiǎn)單了不少
2. 按鈕移動(dòng)的條件判斷
也是這個(gè)小游戲的核心,我的判斷標(biāo)準(zhǔn)是如果那個(gè)空白的按鈕和有圖片的按鈕是挨著的,那么點(diǎn)擊有圖片的按鈕后將兩個(gè)按鈕的frame互換,注意必須挨著才行,不然你點(diǎn)擊第一個(gè)按鈕,它也會(huì)和第九個(gè)的空白按鈕互換位置,這樣就不符合游戲的要求了
好,那么如果判斷兩個(gè)格子是挨著的呢,有四種情況:分別是白色的按鈕在你點(diǎn)擊的按鈕的上邊,下邊,左邊或者右邊。
以上邊為例,比如 imageButton 是有圖片的按鈕,blankButton 是空白的按鈕,達(dá)成條件為
imageButton的最大Y值 等于 blankButton的最小Y值 ? 并且 他們的最小 X值都相等
達(dá)成上述條件,交換兩按鈕的frame,就是這么簡(jiǎn)單。。
3. 勝利條件
每個(gè)按鈕的frame達(dá)成勝利時(shí)的frame,然后勝利后順便給那個(gè)空白的按鈕配個(gè)圖片就好,加點(diǎn)延遲效果更棒哦
所以我這個(gè)程序?qū)懙牟⒉缓?,我是拿到了這全部8個(gè)按鈕,并且給它們寫條件,按鈕的初始順序也是已經(jīng)在storyboard里提前安排好了的,并非隨機(jī)生成的,以及最后的勝利判斷,判斷條件寫起來(lái)很麻煩,所以這些是我在以后需要去完善改進(jìn)的地方,如果你們有什么好的方法希望給我留言,謝謝大家。
代碼這里下載?https://github.com/SaberVicky/pintu