日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

字符游戏-智能蛇

發布時間:2025/1/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字符游戏-智能蛇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

顧名思義,智能蛇是一條可以自己思考、判斷并作出決定的蛇。

首先看看智能蛇的程序框架:
輸出字符矩陣
WHILE not 游戲結束 DO
wait(time)
ch=whereGoNext(Hx,Hy,Fx,Fy)
CASE ch DO
‘A’:左前進一步,break
‘D’:右前進一步,break
‘W’:上前進一步,break
‘S’:下前進一步,break
END CASE
輸出字符矩陣
END WHILE
輸出 Game Over!!!

接著是決定蛇行走的方向函數的偽代碼:
// Hx,Hy: 頭的位置
// Fx,Fy:食物的位置
function whereGoNext(Hx,Hy,Fx,Fy) {
// 用數組movable[3]={“a”,”d”,”w”,”s”} 記錄可走的方向
// 用數組distance[3]={0,0,0,0} 記錄離食物的距離
// 分別計算蛇頭周邊四個位置到食物的距離。H頭的位置,F食物位置
// 例如:假設輸入”a” 則distance[0] = |Fx – (Hx-1)| + |Fy – Hy|
// 如果 Hx-1,Hy 位置不是Blank,則 distance[0] = 9999
// 選擇distance中存最小距離的下標p,注意最小距離不能是9999
// 返回 movable[p]
}

對地圖做修改,用‘0’代表障礙物

增加的函數
char move(int Hx, int Hy, int Fx, int Fy) {
char movable[4] = { ‘w’,’a’,’s’,’d’ };
int distance[4] = { 0 };
int i, min = 0;
if (map[Hx-1][Hy] != WALL_CELL && map[Hx-1][Hy] != SNAKE_BODY && map[Hx-1][Hy] != ‘0’)
distance[0] = abs(Fx - (Hx-1)) + abs(Fy - Hy);
else
distance[0] = 9999;
if (map[Hx][Hy-1]!=WALL_CELL && map[Hx][Hy-1] != SNAKE_BODY&&map[Hx][Hy-1] != ‘0’)
distance[1] = abs(Fx - Hx) + abs(Fy - (Hy-1));
else
distance[1] = 9999;
if (map[Hx+1][Hy]!=WALL_CELL && map[Hx+1][Hy] != SNAKE_BODY && map[Hx+1][Hy] != ‘0’)
distance[2] = abs(Fx - (Hx+1)) + abs(Fy - Hy);
else
distance[2] = 9999;
if (map[Hx][Hy+1] !=WALL_CELL && map[Hx][Hy+1] != SNAKE_BODY && map[Hx][Hy+1] != ‘0’)
distance[3] = abs(Fx - Hx) + abs(Fy - (Hy+1));
else
distance[3] = 9999;
for (i = 0; i < 4; i++)
if (distance[i] < distance[min]&&distance[i]!=9999)
min = i;
return movable[min];
}

運行

雖說是智能蛇,但還是會做出一些“智障”的決定。所以,還需要學習更先進的算法,來讓智能蛇在這個游戲中做到完美。

總結

以上是生活随笔為你收集整理的字符游戏-智能蛇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。