這篇**基於博主的「c++ 貪吃蛇基本演算法」通過加入另乙個二維陣列maps以用來儲存蛇身的**,並通過簡單的遞迴演算法在蛇自噬時清除蛇的後半部分,並且修復了一些原來沒發現的bug。
#include
#include
#include
#include
#include
#include
using
namespace
std;
char
map[15][18];
char maps[15][18];
int error(char x,char y)
//糾正強行自噬
int pos(long x,long y)
; setconsolecursorposition(direct,pos);
}//改變游標位置
int color(long clr)
//改變輸出顏色
int show(long judge)
//是否顯示游標
int eat(long x,long y)
}int main()
//地圖初始化
xh=7,yh=9;
xt=7,yt=8;
map[xt][yt]='d';maps[xh][yh]='a';
//蛇初始化
srand(time(0));
dowhile(map[x0][y0]!=' '||(x0!=xh&&y0!=yh));
map[x0][y0]='m';
//出公尺
pos(30,8);
cout
<<"請輸入等級(1-8): ";
cin>>level;
//輸入等級
show(0);
x=20;y=3;
pos(x,y);
for(long i=0;i<=14;i++)
}y++;
pos(x,y);
}x=20+yh*2;y=3+xh;
pos(x,y);
cout
<<"■";
//輸出棋盤
key='d';
while(1)
}//糾正加速與強行自噬
switch(key)
if(map[xh][yh]=='b')
//遊戲結束
if(map[xh][yh]=='w'||map[xh][yh]=='a'||map[xh][yh]=='s'||map[xh][yh]=='d')
eat(xh,yh);
}//判斷自噬
switch(key)
x=20+yh*2;y=3+xh;
pos(x,y);
cout
<<"■";
//移動蛇頭
if(map[xh][yh]=='m')
while(map[x0][y0]!=' '||(x0!=xh&&y0!=yh));
map[x0][y0]='m';
x=20+y0*2;y=3+x0;
pos(x,y);
color(0x03);
cout
<<"■";
color(0x0f);
//出公尺
}
else
}
//移動蛇尾
}}
}
自迴旋貪吃蛇演算法
這是一道大約15年這個時候我去某b開頭的網際網路公司面試時的一道基礎演算法題,其描述是有乙隻小老鼠,假設其在 x,y 點,它的初始方向為y軸負半軸,它不能碰到x,y軸,也不能與自己走過的路徑重合。並且其所走的所有座標點必須 x,y 求它走過的路徑和最終停在哪個點。當時我並沒有在限定時間解出這道題,如...
C 貪吃蛇二
小菜學習winform 一 貪吃蛇 說到oo可能一說一大堆,這裡面小菜只是簡單的把貪吃蛇抽象出來,先來說蛇,具有的屬性和行為,屬性比如蛇的長度 蛇的寬度 蛇的行動方向等 行為比如是否吃到食物 是否撞牆等,那我們可以抽象乙個蛇的類,這樣實現 1 using system 2using system.c...
C 貪吃蛇設計
class map enum char map row col 地圖 map void drawmap 繪製地圖 bool isvaildpoint int x,int y 1.利用列舉來定義常量,在類外部可以通過作用域解析來獲取列舉常量,便於所有類的交流.2.通過二維陣列儲存地圖,在構造的時候讀取...