C 貪吃蛇自噬

2021-07-16 19:31:05 字數 1789 閱讀 6800

這篇**基於博主的「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.通過二維陣列儲存地圖,在構造的時候讀取...