**小時候玩過的貪吃蛇是這樣的:
或者是這樣的:
而我現在能打出來的卻是:
只能說是:理想很豐滿,現實很骨感。
這兩周的作業都是「貪吃蛇」,這對乙個小白來說簡直是痛不欲生,因為不會做!所以網上查了很多資料以及看了很多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)
此處受到dalao指點:對於方向的操控,只需要用乙個case,分別讓w、a、s、d對應0、1、2、3;從而「啟用」函式move 中的dx dy;從而達到移動的目的,最後就可以簡化程式。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以及網上的帖子也是很痛苦…
然後經過多次試驗,使用「單身已久」的手速(好吧其實是快進),就可以達到這樣的效果
字元遊戲 貪吃蛇
貪吃蛇遊戲的設計思路很簡單,相信有過一些程式設計經驗的同學都不至於束手無策,可在我剛剛接觸程式設計時,這個小小的貪吃蛇遊戲可是讓我費了不少腦筋,即使軟導老師已經把偽 告訴了我們,我還是花費了好大的功夫。話不多說,我們現在就開始吧,首先我們整理一下思路。首先列印地圖,然後用兩個一維陣列來表示蛇頭的座標...
字元遊戲 貪吃蛇
貪吃蛇是一款十分經典的遊戲。下面介紹一下字元版本貪吃蛇。偽 框架 輸出字元矩陣 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 輸入 生成地圖 生成蛇 生成食物 蛇移動 畫面重新整理 吃...