字符遊戲之正常貪喫蛇

遊戲策劃

一、遊戲名稱:貪喫蛇
二、遊戲玩法:相信大家小時候都有玩過,本人就不詳細的介紹了。
三、遊戲所需:一隻字符蛇(以H爲頭,以X作爲身子),食物($).

設計思路

一、首先,要設計一個地圖,如圖,一個11*11的地圖。
這裏寫圖片描述

二、接下來我們要我們的蛇。
這裏寫圖片描述

三、接下來,我們要讓蛇在用戶輸入了之後可以動。
這裏寫圖片描述

四、然後只是會動還不行,還要有食物,並且吃了食物之後能夠長大。
這裏寫圖片描述

這裏寫圖片描述

僞代碼

/read Press/
if Press == ‘w’
  then snake goes up
if Press ==’a’
  then snake moves to left
if Press ==’s’
  then snake goes dowm
if Press ==’d’
  then snake moves to right
end if
if snake eat food
  then snakeLength add one
end if
if snake eat itself or hit the wall
  then print gameover!
end if
if snake exist lastly
  then print you are win!
end if

代碼實現

都說寫僞代碼容易,寫真正的代碼難(是真的!!!)
好,現在我們開始寫我們的代碼了!
這裏寫圖片描述
 首先吧,調用幾個庫,設定幾個函數與變量,基本上都很好懂,但是我的第十一行設定的函數可能讓你費解,沒事,我解釋給你聽,但是不要學我用這個方法(說多了都是淚┭┮﹏┭┮)
 爲什麼要設置插入到數組左邊呢?(哦,原諒我,現在才發現我左右不分)
因爲我一開始就設置了數組的最右邊就是蛇頭了,吃了食物蛇身子要變長,怎麼辦呢?就是增加一個座標,因爲頭的座標在最右邊,所以要寫個函數把其插到最左邊,(蛇的座標之所以一開始搞成這樣。。。也是看了老師的開頭代碼有關。。。在做這些的時候無比想念python的方便/(ㄒoㄒ)/~ ~)
 當然啦,一開始只是在做讓蛇走動的時候自然是無所謂的,但是一旦要變長的時候這個麻煩才凸顯出來,所以最好是一開始就把蛇頭放在最左邊,那樣子就不需要,寫一個比較麻煩的插到左邊的函數了,雖然在C語言裏面插到右邊一樣麻煩~~
這裏寫圖片描述
 上面第一行代碼呢,是進行清屏的代碼,用一個for循環輸出map,再在下面設置一個printf函數輸出蛇的長度,最後一個代碼呢,是讀取你輸入的鍵。
這裏寫圖片描述
當輸入的鍵爲w時向上運動並改變direction,再加個判斷死亡的條件之一,撞到自己。
這裏寫圖片描述
上面就是snakeMove函數,在我的這個遊戲之中,direction有四個值:1、2、3、4,分別代表着上、右、下、左,這樣就可以確定蛇頭的方向了,在這個函數之中只有蛇頭的座標是新算的,其他的都是由上一個點的座標傳承過來的。
這裏寫圖片描述
上面即爲判斷蛇是否撞牆。

總結

最後,上面的代碼還不是非常的完整。
在此講一下思路,就不貼出代碼了。
①蛇的自動前進,可以用kbhit()函數判斷是否有按鍵按下,只要設置當沒有按鍵按下的時候蛇沿着所在的方向自動前進就是了,至於頻率自己調控就好了。
②勝利判斷,好吧,一開始沒有設置,是因爲我沒有考慮有人可以玩到最後,包括我自己也玩不到(雖然我知道怎麼必勝,但是原諒我比較菜),勝利是隻要判斷map裏面還有沒有空格即可。
③食物生成,好吧,其實我在上面忘了寫了,現在簡單說一下,只要用隨機數生出食物的座標,再將map那個座標換成食物就好了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章