首先我們先看我從網上找的一條智慧型蛇:
(來自網際網路)
如何才能做出能讓其自己運動且至少不會很快死的程式((t_t)!)
以下給出實驗情況:
一、實驗目的
了解 演算法 與 「智慧型」 的關係
通過演算法賦予蛇智慧型
了解 linux io 設計的控制
二、實驗環境
linux only. 你可以選擇 unbutu、centos 等發行版。
建議編輯環境 vim 或 vscode, 編譯 gcc
第一次使用 linux,建議使用虛擬機器。可以使用其他同學準備好的 vbox 映象
三、控制輸入/輸出裝置
你知道為什麼一行**要控制在80(字元)列以內? 原因是 … 原來歷史上讀程式的卡片機只能讀80個字元。當然,超過 80 個字元也打不出來閱讀了。
那麼乙個語句超過 80 個字元怎麼辦? 續行符…
言歸正傳,早期的輸出裝置顯示器、印表機,輸入裝置鍵盤(打字機)都是80列行緩衝順序輸入和輸出裝置。即你列印檔案時,印表機必須等收到行結束符,印表機才會動作。然而,輸入/輸出隨著應用需求不斷進化,字元介面控制與管理已經非常標準化了。
由於要使用linux,首先用v-box開啟虛擬機器(表示上次裝了win7後又要裝一遍linux,無語。。)
以下給出上一次中關於一些基本元素的**函式:
以上也是老師提供的,相信上一次你看過我的那些函式,還是和老師有些異同的。
經過老師的課上點撥,我也想試試關於字元貪吃蛇運用ascii中的字元來代表貪吃蛇。
以下為ascii碼表,我首先嘗試了用0000 0100代表食物,然後h代表頭部,0001 0110代表身體。(這僅僅是個想法!!)
然後就目前而言我的智慧型蛇**暫時如下(還未完工):
「` int len = 5;
int life = 0;
int food = 0;
int fx = 0, fy = 0;//食物座標
int hx = 1, hy = 5;//蛇頭座標
int x[snake_max_length]=;//sanke
int y[snake_max_length]=;//snake
char map[12][12] = ;
void snakemove(int x, int y) //若鍵盤輸入的方向與蛇頭方向相反,則什麼事都不發生
if (map[x[len - 1] + x][y[len - 1] + y] == wall_cell || map[x[len - 1] + x][y[len - 1] + y] == snake_body) //若碰到牆壁或者自己就死掉
if (map[x[len - 1] + x][y[len - 1] + y] == snake_food) //碰到食物就增長
else
x[len - 1] += x;
y[len - 1] += y;
hx = x[len - 1];
hy = y[len - 1];
map[hx][hy] = snake_head;
for (i = 0; i < len - 1; i++)
}//沒碰到食物
} void put_money(void)
} }
void output(void)
} void gameover(void)
char wheregonext(int hx, int hy, int fx, int fy) ;
distance[0] = abs(fx - (hx - 1)) + abs(fy - hy);
distance[1] = abs(fx - hx) + abs(fy - (hy - 1));
distance[2] = abs(fx - (hx + 1)) + abs(fy - hy);
distance[3] = abs(fx - hx) + abs(fy - (hy + 1));
if (map[hx - 1][hy] == 『*』 || map[hx - 1][hy] == 『x』)
distance[0] = 9999;
if (map[hx][hy - 1] == 『*』 || map[hx][hy - 1] == 『x』)
distance[1] = 9999;
if (map[hx + 1][hy] == 『*』 || map[hx + 1][hy] == 『x』)
distance[2] = 9999;
if (map[hx][hy + 1] == 『*』 || map[hx][hy + 1] == 『x』)
distance[3] = 9999;
// printf(「%d %d %d %d \n」,distance[0], distance[1], distance[2], distance[3]);
// for (i = 0; i < 4; i++)
else continue;
} printf(「%d\n」, min);
return moveble[temp];
} int main()
system(「cls」);
if (life != 0)
if (len == 20)
output(); } }
求大佬們放過。。。。。
字元遊戲 智慧型蛇
基本原理 對於貪吃蛇怎麼在螢幕上移動,其實就是不斷重新整理螢幕,在乙個迴圈裡,每一次迴圈就像一張,以計算機的強大計算速度,連線成動態移動的蛇輕而易舉。由5個主要函式組成 1.首先初始化地圖,包括圍牆,蛇和食物。2.是否產生食物,判別條件為蛇頭是否與食物座標重合。3.獲取移動速度,蛇越長移速越快,移速...
字元遊戲 智慧型蛇
這裡我們暫且將食物數量設定為1,就如經典貪吃蛇那樣。接下來就是判斷要如何走了,而影響蛇行走方向的要素無非就是蛇頭與各個物件的關係,與蛇身的關係 下一步不能碰到蛇身自己撞死自己,下一步不能碰到牆,下一步要在以上條件之下盡可能往離食物更近的方向走。由於之前設計的貪吃蛇就有判斷下一步會不會自殺的函式塊ju...
字元遊戲 智慧型蛇
智慧型蛇是字串版貪吃蛇的公升級版。在這篇文章中,我將記錄我的學習過程,起到同大家分享 交流的目的。本次專案的任務是讓蛇有一定的智慧型,能通過演算法具有 感知 決策 行動 的能力。開發環境為linux。在編寫前,首先要掌握如何在終端上實現清屏。在字元終端上完成 清屏 修改游標位置 設定字元前景和背景色...