寫在開頭:
本人初入iOS,想借此系列的文章記錄自己的學習過程,同時也和大家分享一些學習心得,作為一個剛學編程的新人,想自己寫一個小app或者小游戲可能是一件比較困難的事情,于是乎我就嘗試用自己所學的有限的知識能不能做幾個小應用,哪怕非常簡單的也不要緊,整個嘗試的過程非常有趣,如果你和我同為新人,那么一起來學習討論吧!
文章底部有下載鏈接
先上游戲展示:
所用知識:OC基礎知識以及UI基礎控件的使用,如UIButton UILabel 等等
各位觀眾老爺大家好,這是鄙人的第二篇文章,其實應該是一篇的,由于發第一篇文章的時候正寫2048寫的起勁,于是乎第一篇討論其了如何做2048這個小游戲,但是畢竟我們的主題是萌新的成長史,不可能一個初學者一上來第一個程序就寫2048,所以,今天我就和大家聊聊我本菜雞的第一個iOS小程序,進入本期主題
三子棋
話說我都不知道這個游戲究竟應該叫什么名字,規則就是三個棋子的五子棋,上一下游戲畫面大家立馬就懂了
請大家先無視我給起的如此邪惡的游戲名字。。。
游戲規則就是三個O或者三個X連成一條直線就可以獲得游戲勝利,不管橫著還是斜著,如果格子填滿了還為分勝負則為平局
接下來說下游戲的開發思路
1. 用什么控件來表示圖上能看的到的東西
本菜采用的是游戲的9個格子用9個按鈕表示,因為玩的過程中要點擊才有變化,所以我只想到了按鈕,有人可能要問,這些邊框和O X之類的圖片怎么來的,呃。。都是本菜自己用畫圖工具畫的,就畫了三張好像。。
就是如圖的這么三個簡單的小圖片,我畫的都是正方形的哦,為了不影響美觀
RESTART當然是一個按鈕,下面的游戲名字則是一個Label
勝利的提示信息大家先忽略吧,大家可以先用一些簡單控件代替。
2. 點擊按鈕后的按鈕背景圖片變化
首先設置一個BOOL類型的屬性,比如
@property (nonatomic, assign) BOOL isO;
每次點擊的方法里先讓 isO的屬性取反
self.isO = ! self.isO;
這樣確保每一次點擊isO的值都不一樣,然后就可以根據每次的值給按鈕設置背景圖了
別放了點擊之后讓按鈕的enable屬性成為NO。
因為xcode默認會設置按鈕highlighted時的顏色,所以注意調整disable狀態的背景圖和原來一樣,這樣就不至于點完之后圖片顏色發生變化了?
3. 如何判斷勝平負
這里我深深的感覺到自己菜就寫不出精簡的代碼的道理,這一塊我自己看自己寫的代碼都覺得肯定可以得到優化,但誰讓我現在菜呢,不知道更好的辦法,不過沒關系,等我學到的時候我也會會的,現在我就用最笨的方法完成游戲的功能。
剛開始學習的時候,老師告訴我每個控件都有自己的tag值,我就想我能不能通過tag值進行判斷呢,于是乎我就讓九個按鈕的tag值依次等于1到9,但是我還是一直想不出簡單的方法可以通過tag值判斷勝利條件,直到我靈機一動。。。。
每當你點擊了哪個按鈕之后,如果它為O ,就讓它的tag值加100,如果為X就加1000;
然后設置八個變量,分別等于每種勝利所需要的三個按鈕的tag值的和,不知道這么說大家能聽懂不
這里我貼一些我寫的代碼吧。。如果某一個的和在300和1000之間,那么O勝利,如果超過了3000那么X勝利
數值當然不用一定設置成我這個樣子,我當時就是隨便一想,然后就隨便一寫,然后確實能成功。。。
這里要說下平局的情況的判斷,我的方法是設置一個count = 0;
每一次點擊讓它加1,如果count = 9,而且又沒有哪一方獲勝的話,就提示為平局
4. 重新開始按鈕
把按鈕的屬性設成初始的時候就可以了,別忘了把enable屬性改成YES
好像已經說完了,雖然說我完成了最后的功能,但是不得不說看著自己寫的一堆重復又蹩腳的代碼真的很是蛋疼,所以說當一只菜鳥并非長久之計啊,得變得更強才行。
如果你和我一樣,同為一個喜歡自己寫東西的萌新,熱烈歡迎過來留言討論,大家一起交流進步。
附上游戲下載地址 ?點這里下載? ?密碼 abcf