程序設(shè)計需要將各種需要模擬計算的內(nèi)容抽象為數(shù)字铺峭。
通常采用二維數(shù)組表示2D地圖?
又以不同的數(shù)字代表地圖上不同類型的事物汪拥,讓我們看一個地圖設(shè)計的例子:?
0 表示沒有任何障礙的平坦區(qū)域?
一個數(shù)字能夠表示地圖上的最小單位,多個數(shù)字一起則能表示出一片區(qū)域姨伤。
想象上面這片區(qū)域是一片平坦的區(qū)域,最外層的 0?則可以理解為區(qū)域的邊界。這片只有數(shù)字 0 的區(qū)域僅僅是在程序計算時的樣子悦穿,我們可以將地圖更好的呈現(xiàn)出來,比如讓 0 表示一塊草地业踢。
這塊草地與我們之前看到的 0 字區(qū)域不一樣栗柒,是視角發(fā)生了變化,看著更為立體些知举。?
1 表示玩家扮演的角色?
你能告訴我玩家扮演的角色在平坦區(qū)域的位置嗎瞬沦??
如果你看見了那個藍色的角色…… 等等我們還是先給它取一個名字太伊,畢竟“藍色的角色”太拗口
呃,藍色的1…… 就叫它 “藍波丸” 吧
2 表示角色不可以通行的墻逛钻,讓我們在地圖上設(shè)置一些墻?
經(jīng)過這樣的設(shè)定后绣的,我們就可以約束角色的活動范圍或者路線?
想想看叠赐,你如果控制著角色?藍波丸?該怎樣行走才能到達地圖的另一端??
藍波丸:等下屡江,我好像還不會走路?
新任務(wù)1:控制角色移動?
找到我們控制的角色芭概,放大局部地圖,如下:?
看起來 藍波丸 停在右下角的位置惩嘉,現(xiàn)在我們要讓 藍波丸 動起來罢洲。雖然目前我們還無法控制 藍波丸 不過可以先想象角色移動一步后的畫面?
藍波丸 可以向3個方向移動。地圖的邊界也就是數(shù)組的邊界文黎,藍波丸 和你一樣無法穿越邊界惹苗,角色無法穿越地圖邊界,而設(shè)計游戲的你無法穿越數(shù)組邊界耸峭。?
藍波丸 目前站在平坦區(qū)域的右下角桩蓉,由于地圖邊界的限制最多只能向3個方向移動,但如果 藍波丸 不在平坦區(qū)域的邊界附近則能向8個方向移動劳闹,如果將 藍波丸 能移動的所有方向用線畫出來剛好是個“米”字形狀院究。?
現(xiàn)在我們來制定一個具體的目標,向左移動 1 步?
現(xiàn)在我們要在二維數(shù)組中模擬圖中的變化本涕,所以我們需要?
1. 在 藍波丸 位置左邊寫入藍波丸?
2. 清除初始位置的 藍波丸?
將這兩步畫出來應(yīng)該是這樣