這是此系列教程的第一部分,我将從最基本開始教大家怎樣編寫一個iPhone遊戲。衆所周知,OpenGL和Quartz的學習不是那麼簡單的。本教程将簡化開發的過程而不會使用這兩種技術。我們将使用UIImageView作為圖像部分。
在此教程系列中,我将教大家有關iPhone遊戲程式設計的方方面面。遊戲包括圖形,音效,遊戲邏輯以及簡單的電腦AI。
我們将編寫的遊戲叫iTennis。它實際上是一個以網球為主題的乒乓遊戲。它将遵循乒乓遊戲的所有規則和邏輯。我選擇其作為第一個遊戲教程是不需要任何特殊動畫效果的。如果大家有興趣,我将在以後的系列中更加深入,介紹一個更加複雜的遊戲。下面是遊戲的截圖:
下面是項目需要的圖像。按圖示下載下傳壓縮的圖像檔案。
打開Xcode建立一個View Based應用程式,取名為iTennis。
加壓下載下傳的圖像檔案,将其拖放到項目下的Resources(資源)檔案夾。完成後,資源檔案夾應該像這樣。
現在可以開始編寫代碼了。為了在代碼中與我們的圖像互動,我們首先需要建立一個IBOutlet連結。我們還需要加入一些遊戲變量以便在可以在教程中使用。打開iTennisVeiwController.h加入以下代碼:
如你所見,我們有好些IBOutlet。這是因為我們需要與許多對象互動。暫時先忽略ballVelocity和gameState變量。現在,我們可以開始建立我們的使用者界面了。輕按兩下iTennisViewController.xib在Interface Builder中打開。下面是一個視訊介紹怎樣建立界面。
現在你已經做好了連結,關閉Interface Builder傳回Xcode。我們需要設定一些常量。你可以寫死這些數值,但是将它們定為常量是你在調整遊戲架構時更易于改變。打開iTennisViewController.m,加入下列代碼。
我們來解釋下這些常量的意義。前面兩個是遊戲的狀态。我們用它們來确定螢幕上将顯示什麼。遊戲是暫停?是在運作?還是處于标題畫面?以後我們會加入更多的狀态。下面兩個變量是球運作的速度。由于遊戲是2D的,隻需要X和Y的速度作為它們的速度矢量。再下面一行(注:應該是@synthesize這一行)是用來自動産生getter和setter方法的變量。
現在,我們在viewDidLoad方法中加入下列代碼:
首先,我們将遊戲狀态設定為暫停狀态。這樣在視圖被加載後,遊戲不會立即開始。接着,我們建立球速向量。調整前面定義的常量,可以使球運作更快或更慢些。最後,建立一個NSTimer的執行個體。第一個參數是時階。在此,我們設定為0.05秒。調整此參數可以改變整個遊戲的速度。下面一個參數是目标。此參數告訴定時器回調的位置。再下面的參數就是回調的名稱了。簡單地說,就是通知定時器每隔0.05秒調用一次self.gameLoop。在這裡我們不用管userInfo參數。最後一個參數是告訴定時器重複執行。
初始化後,我們來建立遊戲循環。加入下面代碼:
首先我們檢查遊戲是否處于運作狀态(暫停狀态時,不需要移動球)。如果遊戲沒有運作,tabToBegin标簽将會被顯示出來。我們先前定義的這個标簽隻是通知使用者觸動螢幕開始。如果遊戲真正運作,我們會根據其速度向量來移動球。下面幾行是邊界檢查。如果球到達螢幕邊界,我們就會将其速度方向,這樣球就會“來回彈跳”。沒有這些代碼,球就會飛出螢幕了。
最後我們還要加入的代碼是touchesBegan方法。此方法是在遊戲暫停時用來啟動遊戲的。加入下面代碼:
這段代碼首先檢查遊戲是否處于暫停狀态。如果是,則隐藏tapToBegin标簽并設定遊戲為運作狀态。遊戲将啟動。以後,我們将會在此函數中寫入玩家球拍控制。
最後,作為一個好的iPhone開發者,我們需要清除配置設定的資源。在dealloc方法中加入下面代碼。
遊戲開發教程系列第一部分到此結束。有什麼問題,請留言。
本文轉自 wws5201985 51CTO部落格,原文連結:http://blog.51cto.com/wws5201985/786469,如需轉載請自行聯系原作者