方案設計
首先初始化背景,使用全局二維數組map[][]表示實體內容,設置邊界條件,即數組邊界設置為WALL:
//初始化墻for(inti=0;i<ROW;i++){map[i][0]=map[i][COL-1]=WALL;}for(intj=0;j<COL;j++){map[0][j]=map[ROW-1][j]=WALL;}
游戲啟動時設置蛇在map數組中的位置,用全局一維數組snake保存蛇位置信息。
食物設置
在map數組內找到一格空地放置食物。為了防止每次產生的隨機數相同,初始化時種子設置為time,同時這里注意出現死循環。
voidcreate_food(){introw,col;intcnt=100;do{cnt--;row=rand()%(ROW-1)+1;col=rand()%(COL-1)+1;}while(map[row][col]!=SPACE&&cnt);map[row][col]=FOOD;}
蛇移動方案
1、空地
移動方向前方為空地,刪除蛇尾,空地置為蛇頭:
caseSPACE:map[snake[SnakeSize-1].X][snake[SnakeSize-1].Y]=SPACE;//原蛇尾位置置空for(inti=SnakeSize-1;i>0;i--)//蛇尾到蛇頭整體移動一位{snake[i]=snake[i-1];}map[snake[0].X][snake[0].Y]=SNAKE;//原蛇頭位置設置為蛇身snake[0]=next;//下一個位置設置為蛇頭map[snake[0].X][snake[0].Y]=HEAD;//更新mapbreak;
2、食物
更新分數及蛇尺寸信息,下一位置設置為蛇頭,同時新生成食物。
caseFOOD:for(inti=SnakeSize;i>0;i--)//蛇尾到蛇頭整體移動一位{snake[i]=snake[i-1];}map[snake[0].X][snake[0].Y]=SNAKE;//蛇頭置蛇snake[0]=next;//將下一個位置賦值給蛇頭score++;//分數加一SnakeSize++;//蛇尺寸加一map[snake[0].X][snake[0].Y]=HEAD;//更新mapcreate_food();break;
3、墻/蛇身/蛇頭
下一位置非SPACE時游戲結束。
方向控制
讀取鍵盤中斷,忽略大小寫,這里注意一點就是蛇往右運動的時候選擇往左是無效操作,即忽略反向運動的命令。
主流程用while(1)死循環:
while (1)
{
t2 = GetTickCount();
DrawMap();
if(kbhit())//獲取鍵盤敲擊事件
{
ChangeDir(); //根據輸入字符設置運動方向
creep(); //根據下一位置做出決策
t2 = GetTickCount();
t1 = t2;
}
if (t2 - t1 > time_interval) //這里是為了保證即使用戶不操作,time_interval超時后蛇同樣能前進一個位置
{
creep();
t1 = t2;
}
}
“C語言實現的貪吃蛇游戲代碼分享”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注本站網站,小編將為大家輸出更多高質量的實用文章!
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
(資料圖片僅供參考)半年多以前,張同學第一次在抖音發短視頻時,還只是一個“平平無奇”的鄉村中年。在城市里開店失敗,回老家養雞的過程也不太順利,他開始短視頻上更新自己的日常,一個院子、一張炕,更多瑣碎但又真實的元素填充著他的鄉村生活。出乎預料的,某一天,張同學突然火了。日均漲粉15萬,到2021年底時,其已經擁有了1500萬粉絲,成了當之無愧的鄉村新頂流。至今也沒有人能說清楚...
銀行降息是什么意思?銀行降息意味著什么?銀行降息意味著市場上的資金較多,銀行利用降息來調整利率,來改變現金流動,降息會使定期存款、理財產品等收益降低,同時會利好股票市場,因為市場上資金變多投資者就會去尋找收益率高的投資標的,股市增量資金會變多。銀行通過利率來進行調控貨幣供給,當貨幣供給小于貨幣實際需求時,就會進行降息來調控;當市場上貨幣供給大于貨幣實際需求時,就會進行加息來調控。銀行降息說明什么問...
道指是什么?道指:又稱道瓊斯指數,是世界上壽命最長的股票指數,全稱是股票價格平均指數。當別人說到道瓊斯指數時,就有可能是指道瓊斯指數四組中的第一組道瓊斯工業平均指數。道指和納指的區別是什么?道瓊斯指數是傳統行業代表性的公司,一般泛指工業指數。納斯達克指數比較偏向于高科技公司,后者是一種創新模式,發展更具潛力。道指和納指哪個能更有影響力?納指更有影響力道指是道瓊斯工業指數,是由華爾街日報和道瓊斯公司...