關於字元遊戲 智慧型蛇

2021-08-14 04:32:42 字數 2902 閱讀 3258

首先我們先看我從網上找的一條智慧型蛇:

(來自網際網路)

如何才能做出能讓其自己運動且至少不會很快死的程式((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。在編寫前,首先要掌握如何在終端上實現清屏。在字元終端上完成 清屏 修改游標位置 設定字元前景和背景色...