字元遊戲 貪吃蛇簡介

2021-08-14 02:25:58 字數 2029 閱讀 9359

**小時候玩過的貪吃蛇是這樣的:

或者是這樣的:

而我現在能打出來的卻是:

只能說是:理想很豐滿,現實很骨感。

這兩周的作業都是「貪吃蛇」,這對乙個小白來說簡直是痛不欲生,因為不會做!所以網上查了很多資料以及看了很多dalao的文章,最後才勉勉強強打出走了很多彎路的貪吃蛇,見笑了。

首先是移動

const

int dx = ;

const

int dy = ;

void move(int

dir)

--snakelength;

updatemap(snakex[snakelength], snakey[snakelength], empty_cell);

}else

}if (snakelength > 0)

updatemap(snakex[0], snakey[0], snake_body);

updatemap(nx, ny, snake_head);

for (int i = snakelength; i; --i)

++snakelength;

snakex[0] = nx;

snakey[0] = ny;

}

這裡面融合了是否吃到食物的判斷以及對應的「增長」「不變」;

而食物的產生肯定也要乙個函式

int generatefood() 

foodx = random(n);

foody = random(m);

} while (mp[foodx][foody] != empty_cell);

updatemap(foodx, foody, food_cell);

return

1;}

關於地圖的初始化以及每次「操作」之後的更新

void outputmap() 

}int isfoodcell(int x, int y)

int random(int n)

int isoutofbound(int x, int y)

void updatemap(int x, int y, char newchar)

最後就是主函式

int main() 

else

} while (1);

initmap();

initsnake();

clearscreen();

outputmap();

while (!gameover)

switch (ch)

move(d);

setcursor(0, n + 2);

if (gameover)

if (win)

}return

0;}

此處受到dalao指點:對於方向的操控,只需要用乙個case,分別讓w、a、s、d對應0、1、2、3;從而「啟用」函式move 中的dx dy;從而達到移動的目的,最後就可以簡化程式。

至於其他的**,都是抄網上的,我也不知道原理是什麼,在此就不一一打出來解釋了,反正…就是做了很久,模仿dalao以及網上的帖子也是很痛苦…

然後經過多次試驗,使用「單身已久」的手速(好吧其實是快進),就可以達到這樣的效果

字元遊戲 貪吃蛇

貪吃蛇遊戲的設計思路很簡單,相信有過一些程式設計經驗的同學都不至於束手無策,可在我剛剛接觸程式設計時,這個小小的貪吃蛇遊戲可是讓我費了不少腦筋,即使軟導老師已經把偽 告訴了我們,我還是花費了好大的功夫。話不多說,我們現在就開始吧,首先我們整理一下思路。首先列印地圖,然後用兩個一維陣列來表示蛇頭的座標...

字元遊戲 貪吃蛇

貪吃蛇是一款十分經典的遊戲。下面介紹一下字元版本貪吃蛇。偽 框架 輸出字元矩陣 while not 遊戲結束 do ch 等待輸入 case ch do a 左前進一步,break d 右前進一步,break w 上前進一步,break s 下前進一步,break end case 輸出字元矩陣 e...

字元遊戲 貪吃蛇 智慧型

先借由自頂向下之邏輯使用偽程式碼方式將架構完成 include int char void 生成地圖 void 生成蛇 void 生成食物 void 蛇移動 void 畫面重新整理 void 吃 void 避免覆蓋 void 碰撞 void 輸入 生成地圖 生成蛇 生成食物 蛇移動 畫面重新整理 吃...