C語言編程學(xué)習(xí)小程序之迷宮自動尋路源代碼分享

迷宮自動尋路的小程序,比較有意思,它會記錄自己所走過的步數(shù),往出口的方向做嘗試,從而達(dá)到走出迷宮的目的!

話不多說,先上圖:

這是一個奔跑在尋找出口小路上的小.......五角星( ^_^ )/~~哈哈

怎么樣,是不是感覺挺有意思的,下面貼代碼:

#include

#include

#include

#include

#include

using namespace std;

class node

{

public:

int x, y;

int lastOpt;

};

deque sta;

int x, y;

int endx, endy;

int mapW, mapH;

int steps;

int xopt[5] = { 0,0,1,0,-1 };

int yopt[5] = { 0,1,0,-1,0 };

int map[100][100] =

{

};

void init()

{

x = 1;

y = 1;

endx = 1;

endy = 9;

mapH = 10;

mapW = 10;

for (int i = 0; i

for (int j = 0; j

{

if (i == 0 || j == 0 || i == mapH || j == mapW)

map[i][j] = -1;

}

steps = 0;

map[1][2] = -1;

map[2][2] = -1;

map[3][2] = -1;

map[4][2] = -1;

map[6][2] = -1;

map[7][2] = -1;

map[8][2] = -1;

map[9][2] = -1;

map[9][3] = -1;

map[8][3] = -1;

map[1][4] = -1;

map[3][4] = -1;

map[4][4] = -1;

map[5][4] = -1;

map[6][4] = -1;

map[7][4] = -1;

map[1][6] = -1;

map[2][6] = -1;

map[3][6] = -1;

map[4][6] = -1;

map[5][6] = -1;

map[6][6] = -1;

map[7][6] = -1;

map[8][6] = -1;

map[8][7] = -1;

map[8][8] = -1;

map[7][8] = -1;

map[6][8] = -1;

map[5][8] = -1;

map[4][8] = -1;

map[3][8] = -1;

map[2][8] = -1;

map[1][8] = -1;

map[endx][endy] = 5;

}

void dis()

{

system("cls");

int ori = map[x][y];

map[x][y] = 1;

for (int i = 0; i

{

for (int j = 0; j

{

if (map[i][j] == 0)

printf(" ");

else if (map[i][j] == -1)

printf("");

else if (map[i][j] == 1)

printf("★");

else if (map[i][j] == 2)

printf(" .");

else if (map[i][j] == 5)

printf("※");

}

cout

}

for (int j = 0; j

cout

printf("\n\n 移動步數(shù):%d 出口坐標(biāo):(%d,%d)\n", steps, endx, endy);

map[x][y] = ori;

}

int can(int n)

{

if (map[x + xopt[n]][y + yopt[n]] == 0 || map[x + xopt[n]][y + yopt[n]] == 5)

return 1;

return 0;

}

void visit(int n)

{

map[x][y] = 2;

x += xopt[n];

y += yopt[n];

node tem;

tem.x = x;

tem.y = y;

tem.lastOpt = n;

sta.push_back(tem);

steps++;

}

int main()

{

init();

node tem;

while (x != endx || y != endy)

{

int cans = 0;

for (int i = 1; i

{

if (can(i))

{

cans = 1;

visit(i);

break;

}

}

if (!cans)

{

if (!sta.empty())

{

tem = sta.back();

map[tem.x][tem.y] = 0;

sta.pop_back();

}

else

{

map[x][y] = 2;

x += xopt[tem.lastOpt];

x += yopt[tem.lastOpt];

dis();

break;

}

}

dis();

Sleep(500);

}

if (x == endx && y == endy)

printf("\n 我找到終點(diǎn)啦!\n");

else

printf("\n \n 我走完了,但是沒找到終點(diǎn)!\n");

getchar();

return 0;

}

開心,跑出迷宮了~~~

哈哈 找到終點(diǎn)啦

C語言制作表白神器-LOVE

#include

#include

#include

#include

//3維數(shù)組,存放LOVE字符

char LETTER[][5][5] = {

{

0, 1, 0, 0, 0,

0, 1, 0, 0, 0,

0, 1, 0, 0, 0,

0, 1, 0, 0, 0,

0, 1, 1, 1, 0

},

{

0, 0, 1, 0, 0,

0, 1, 0, 1, 0,

0, 1, 0, 1, 0,

0, 1, 0, 1, 0,

0, 0, 1, 0, 0

},

{

0, 1, 0, 1, 0,

0, 1, 0, 1, 0,

0, 1, 0, 1, 0,

0, 1, 0, 1, 0,

0, 0, 1, 0, 0

},

{

0, 1, 1, 1, 0,

0, 1, 0, 0, 0,

0, 1, 1, 1, 0,

0, 1, 0, 0, 0,

0, 1, 1, 1, 0

}

};

int status = 1;//控制線程函數(shù)的運(yùn)行狀態(tài)

int speed = 500;//字符變換的速度

HANDLE hout;//控制臺標(biāo)準(zhǔn)輸出句柄

CONSOLE_SCREEN_BUFFER_INFO csbi;//控制臺屏幕緩沖區(qū)信息結(jié)構(gòu)體

char *symbol[] = {"☆", "★", "", "※", "", ""};// 用這些特殊字符組成LOVE中的各個字母

WORD attr[] = {

FOREGROUND_RED | FOREGROUND_INTENSITY, //紅色

FOREGROUND_GREEN | FOREGROUND_INTENSITY,//綠色

FOREGROUND_BLUE | FOREGROUND_INTENSITY,//藍(lán)色

FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY//白色

};

//在屏幕上畫出LOVE

void DrawLove()

{

int i, j, c;

COORD pos;//光標(biāo)的坐標(biāo)

DWORD dwLen;

for(c = 0; c

{

for(i = 0; i

{

pos.X = c * 5 * 2;

pos.Y = i;

SetConsoleCursorPosition(hout, pos);

for(j = 0; j

{

if(LETTER[c][i][j])

{

//獲取當(dāng)前屏幕緩沖區(qū)信息

GetConsoleScreenBufferInfo(hout, &csbi);

printf("%s", symbol[rand() %

(sizeof symbol / sizeof symbol[0])]);

//用指定的顏色填充字符

FillConsoleOutputAttribute(hout, attr[rand() %

(sizeof attr / sizeof attr[0])], 2,

csbi.dwCursorPosition, &dwLen);

}

else

{

printf(" ");//打印兩個空格

//線程的處理函數(shù)

DWORD WINAPI ThreadProc(LPVOID lpParam)

{

while(1)

{

if(status)

{

DrawLove();

Sleep(speed);

}

}

return 0;

}

int main()

{

HANDLE hThread;

int inChar;

hout = GetStdHandle(STD_OUTPUT_HANDLE);

srand((unsigned)time(0));

hThread = CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL);

CloseHandle(hThread);

while(1)

{

inChar = getch();

if('q' == inChar)

{

break;

}

else if('w' == inChar && speed > 50)

speed -= 50;

else if('s' == inChar && speed

speed += 50;

else if('p' == inChar)

status = 0;

else if('c' == inChar)

status = 1;

}

return 0;

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,156評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,401評論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,069評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,873評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,635評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,128評論 1 323
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,203評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,365評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,881評論 1 334
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,733評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,935評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,475評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,172評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,582評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,821評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,595評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,908評論 2 372

推薦閱讀更多精彩內(nèi)容