天天看點

《Android遊戲開發詳解》——第1章,第1.8節控制流程第2部分——while和for循環

本節書摘來自異步社群《android遊戲開發詳解》一書中的第1章,第1.8節控制流程第2部分——while和for循環,作者 【美】jonathan s. harbour,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

1.8 控制流程第2部分——while和for循環

android遊戲開發詳解

在前面的小節中,我們介紹了使用if和else語句塊來産生代碼分支。現在,我們來介紹兩種類型的循環:while循環和for循環。循環允許我們執行重複性的任務。循環特别重要,沒有它們,遊戲将無法運作。

1.8.1 while循環

假設你想要編寫一個函數列印出所有的正整數,直到達到給定的輸入n。解決這個問題的政策(算法)如下。

1.  建立一個新的整型,将其值初始化為1。

2.  如果該整數小于或等于給定的輸入n,列印其值。

3.  将該整數增加1。

4.  重複步驟2和步驟3。

我們已經學習了如何執行該算法的前3步。讓我們寫下已經知道的内容。

程式清單1.18 計數器(非完整版)

我們必須在代碼中解決兩個問題。首先,函數應該傳回什麼類型(通過程式清單1.18的第1行中的問号來表示)?它應該是一個int類型嗎?實際上,在我們的例子中,甚至沒有一條return語句;該函數并不會産生任何可供我們使用的結果。當沒有傳回任何值的時候,就像前面的函數那樣,我們說傳回類型是void。

其次,如何讓這段代碼重複步驟2和步驟3?這實際上很簡單。我們使用一個while循環,隻要某個條件能夠滿足,就會讓這個循環保持運作。在我們的例子中,所需要做的隻是用關鍵字“while”替代關鍵字“if”。完整的函數如程式清單1.19所示(修改的代碼突出顯示)。

程式清單1.19 計數器(完整版)

讓我們一行一行地來看看該函數(參見程式清單1.19)。

第1行聲明了函數的傳回類型(void)、函數名稱(countton)和輸入(n)。

第2行聲明了一個名為counter的新的整型,并且将其值初始化為1。

第3行開始一個while循環,隻要條件(counter <= n)滿足,它就會運作。

第4行列印出counter變量的目前值。

第5行将counter增加1。

當到達第5行的時候(第6行的花括号表示循環結束),代碼将再次執行第3行。這裡會重複,直到counter變得比n大,此時,會跳出while循環。要看看這是如何工作的,讓我們在代碼中的任意地方調用該函數。

這就是while循環。隻是編寫一條if語句,并且将關鍵字“while”放到那裡,代碼就可以重複一項任務了。

關鍵知識點

while循環

隻要給定的條件計算為true,while循環就将繼續疊代。如果我們有一個條件總是為true,例如,while (5 > 3) …,while循環将不會結束。這就是一個無限循環。

1.8.2 for循環

程式清單1.19中的計數邏輯的使用如此頻繁,以至于人們為此專門設計了一個循環。它叫作for循環。for循環的文法考慮到了各種問題的較為整潔的解決方案,使得我們能夠節省代碼行。如圖1-6所示。

《Android遊戲開發詳解》——第1章,第1.8節控制流程第2部分——while和for循環

for循環需要做3件事情。必須初始化計數器變量,設定終止條件,然後定義一個自增表達式。該循環将持續疊代(重複),直到終止條件計算為假(在上面的示例中,就是直到i大于6)。每次疊代之後,i都會按照自增表達式中給出的規則來遞增。

在程式清單1.19中使用一個for循環來計數重新編寫代碼的話,可以得到程式清單1.20。

程式清單1.20 計數器(for循環版)

一旦掌握了文法,編寫for循環比編寫while循環要快很多。for循環很快将會變為我們的無價之寶,并用來幹從移動精靈到渲染動畫的每一件事情。`

繼續閱讀