一步一步教你用Swift開發俄羅斯方塊:No.3 二維數組,swiftno.3

來源:互聯網
上載者:User

一步一步教你用Swift開發俄羅斯方塊:No.3 二維數組,swiftno.3

數組是一個很有用的資料結構,很多程式都建立在數組之上,我很少看到哪個應用程式不用到數組的。

而我們的俄羅斯方塊顯然也需要數組,而且是更為特殊的  二維數組

為什麼是二維數組呢?其實我們的整個遊戲空間,可以看做是一個二維數組地區,就像這樣:


我們的每一個block都佔據在這樣一個20x10的地區之內,20行,10列的一個200個block的二維數組讓我們可以根據(x,y)座標來確定block的位置,而這些blocks其實就是組成我們的L形,或者Z形 等等不同但我們都熟知的俄羅斯方塊;

swift提供了我們array[index]供我們使用,但是我們還需要一個自訂的array2D[x,y]來更方便我們的使用,所以,讓我們來自訂屬於自己的二維數組吧!


確保你選中Swiftris檔案夾,然後你可以選擇⌘ + N 或者 File > New > File…或者左下角的“+”號 > File 來建立新的swift類,如所示:


選擇Swift然後點擊Next, 給你的新類起個名字吧,我們叫做Array2D,意為二維數組,然後我們點擊create


在編輯地區會自動開啟我們剛剛建好的Array2D 類,我們照著進行修改



準備好了,雖然這段代碼不長,但是如果你是個swift的新手,這裡面卻有很多學問,基本上每行都有一個知識點需要學習!

友情提醒: 

-號的紅色代碼需要移除,+號的綠色代碼需要手動加上,注釋掉的#1,2,3,4 是便於給大家分段講解,大家輸入的時候可以不輸入

subscript函數裡面 array[(row * columns) + column] , 注意是row 而不是rows。如果你不小心寫成了rows,那很顯然,你的數組會越界。剛開始的時候我沒有注意,就導致數組越界了。


#1

這裡我們命名了一個叫做Array2D的class,在swift裡面通常array是用struct 而不是用class,但是這裡我們卻需要一個class,因為在我們的程式裡面,我們需要傳引用(pass by reference),而不是傳值(pass by value),class是傳引用的,而struct是傳值的

關於傳值和傳引用的區別如果學過C++的應該不難理解,我記得Effective c++這本書裡面對這部分有很詳盡的解釋,google一下應該也能找到很多答案,這裡我就不展開描述了。


想要查看

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.