C語言貪喫蛇的完善

在上次嘗試建立了一個貪喫蛇遊戲的雛形(蛇的長度固定、沒有金幣喫,其餘與正常規則相同)後,今天打算對其進行修改以實現上述兩項功能。
下面是上次的源代碼,經過分析我發現,只需增加一個在空白位置隨機產生金幣的函數,並修改move函數以使蛇吃了金幣後長度加一:
這裏寫圖片描述
這裏寫圖片描述

首先,我們需要增加一個在空白位置隨機產生金幣的函數food。先定義foodx 、foody以表示金幣的座標,然後使x、y是邊框範圍內隨機產生的數,最後,加上一個條件:產生的位置必須是空格,否則繼續生成隨機位置直到該位置爲空格,
在該位置放置金幣,用“S”表示。
代碼如下圖:
這裏寫圖片描述
之後需要對move函數稍作修改。首先,之前的判斷條件是隻要新產生的蛇頭位置不爲空格即game over,現在要改爲新產生的蛇頭位置既不是空白又不是金幣。在遊戲沒有結束的情況下,需要分兩種情況:第一,新蛇頭位置爲空白,即沒喫金幣,則和之前的版本完全一樣,照搬即可。第二,新蛇頭位置爲”S”,即吃了金幣,此時與之前的區別是蛇的長度加一,加的那一節長度到了哪裏去呢?是加到了蛇尾處。因爲原先是蛇的長度不變,因此每一段的要往前走一步取代之前它前面那一段的位置,因而原先的最後一個位置被淘汰,退化爲空格。而現在吃了金幣後長度加一,可理解爲金幣變成了新蛇頭,後面的都不變,因此在原先基礎上,把給原來最後一段賦值爲空格改爲賦值爲“X”,即蛇身。修改後move函數代碼如下圖:
這裏寫圖片描述
這裏寫圖片描述
此外還有一點需要注意:之前因爲蛇身長度恆爲4,因此存放蛇身位置的數組大小爲4,但這時因爲蛇身可能增長,所以數組需要留出些富裕以容納增加的長度,這次設計的空間爲10*11的,我們不妨就把這個數組的大小設爲200,這樣就綽綽有餘了。
這時字符遊戲貪喫蛇的改良就完成了,現在它已經有點貪喫蛇的樣子了:
這裏寫圖片描述
這裏寫圖片描述

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