何為智慧型蛇

2021-08-14 04:28:23 字數 935 閱讀 2986

之前寫了乙個貪吃蛇的小遊戲(命令列視窗),現在開始寫乙個簡單的ai,大多數據都是從網上查詢的,但是絕對不會抄,會自己實現和在基礎上改進吧。

網上的資料我看得懂的有四種方法:貪婪法、bfs、dfs和a*法

貪婪法就是走曼哈頓距離,即abs(x-food_x)+abs(y-food_y)最小且不會撞到牆或者是撞到自己身上。

int movechangex[4]=;

int movechangey[4]=;

char moveoper[4]= ;

char moveai_greedy() }}

if(min!=int_max)

return moveoper[min_i];

else

return

0;}

bfs法就是廣度優先搜尋,將每個蛇頭可以走到的地方插進佇列中,直到搜尋到食物的位置,再反向將這條路徑存進棧中,但是這種方法有可能會暫時找不到路徑,所以根據網上的資料,可以加乙個閒逛機制,就是如果找不到路的話,就先閒逛一下。

void moveai_bfs(void)

}struct snakepoint* temp=snake;

while(temp!=null)

clearmovearr(movearr);

queue

int,int>> q;

int x,y;

int temp_x,temp_y;

tempmap[snake->y][snake->x]=0;

isvisited[snake->y][snake->x]=true;

q.push(make_pair(snake->x,snake->y));

while(!q.empty())

for(int i=0;i<4;++i)}}

}

智慧型蛇演算法

編寫智慧型演算法 編寫人工智慧程式,使得 snake 每秒自動走一步。決定蛇行走的方向函式的偽 hx,hy 頭的位置 fx,fy 食物的位置 function wheregonext hx,hy,fx,fy 記錄可走的方向 用陣列distance 3 記錄離食物的距離 分別計算蛇頭周邊四個位置到食物...

智慧型蛇初試

在完成了貪吃蛇的程式後,便想能不能設計乙個程式來 智慧型 的操控貪吃蛇,以求獲取乙個前所未有的最高分。首先,智慧型蛇得會 自己 動,這或許只用乙個迴圈就行了,但是執行迴圈的時間太短,我們得用sleep 函式來設定停頓的時間,來使其看起來像是 自動 的。其次,寫乙個函式,來判斷蛇可以向那幾個方向移動,...

貪吃蛇高階 智慧型蛇

做完了人工操控的貪吃蛇,由於太懶了 我們來設計乙個可以自動尋找食物的智慧型蛇吧w 思路 我們只需對原來人工操作的貪吃蛇 稍作修改即可。首先,我們要讓蛇能夠根據食物的位置自動判斷自己移動的方向。注意,此時如果只是簡單判斷蛇的head與食物的距離,蛇就非常容易把自己繞死。這時有乙個比較簡單的思路 遍歷全...