蘭頓螞蟻 零玩家的遊戲

2021-10-03 01:27:50 字數 2813 閱讀 7505

在平面上的正方形格被填上黑色或白色。在其中一格正方形有乙隻「螞蟻」,它的頭部朝向上下左右其中一方。

若螞蟻在白格,右轉90度,將該格改為黑格,向前移一步;

若螞蟻在黑格,左轉90度,將該格改為白格,向前移一步。

使用easyx圖形庫實現圖形的繪製。

執行效果如下:

原始碼如下:

/******************************

* 蘭頓螞蟻

* 編譯環境:vc++ 2017

* 最後修改:2018/12/21

******************************/

#include

#include

#include

namespace langtonant

; direct left

, right

, up

, down

; image blockmap;

// 地圖影象

int blocksize;

// 方塊大小

bool

* map =

nullptr

;// 地圖(邏輯)

// 地圖大小(邏輯)

int mapwidth;

int mapheight;

// 當前方向

direct currentdirect;

// 當前位置

int currentx;

int currenty;

// 是否超出邊界(開始有規律)

bool outmap =

false

;void

init

(int

,int

,int

,int

,int

, direct = up)

;// 初始化

const image&

update()

;// 更新邏輯影象

void

quit()

;// 結束,**記憶體

}// 主函式

intmain()

langtonant::

quit()

;// 居中顯示結束語

outtextxy

(400

-textwidth

(l"langton's ant is running in a loop.")/

2,300-

textheight

('l')/

2, l"langton's ant is running in a loop.");

endbatchdraw()

;_getch()

;closegraph()

;return0;

}// 初始化蘭頓螞蟻

void langtonant::

init

(int blocksize,

int mapw,

int maph,

int startx,

int starty, direct startdirect)

// 更新邏輯和影象

const image & langtonant::

update()

if(map[currentx + currenty * mapwidth]

)// 黑色

else

// 繪製影象

setworkingimage

(&blockmap)

;// 轉向

map[currentx + currenty * mapwidth]

=!map[currentx + currenty * mapwidth]

;// 重繪底部

setfillcolor

(map[currentx + currenty * mapwidth]

? black : white)

;solidrectangle

(currentx*blocksize, currenty*blocksize,

(currentx +1)

*blocksize -1,

(currenty +1)

*blocksize -1)

;// 移動

currentx +

= currentdirect.dx;

currenty +

= currentdirect.dy;

// 繪製螞蟻

setfillcolor

(red)

;solidcircle

(currentx*blocksize + blocksize /

2, currenty*blocksize + blocksize /

2, blocksize /3)

;setworkingimage()

;return blockmap;

}// 退出蘭頓螞蟻

void langtonant::

quit()

// 左轉

langtonant::direct & langtonant::direct::

turnleft()

// 右轉

langtonant::direct & langtonant::direct::

turnright()

歷屆試題 蘭頓螞蟻

規則雖然簡單,螞蟻的行為卻十分複雜。剛剛開始時留下的路線都會有接近對稱,像是會重複,但不論起始狀態如何,螞蟻經過漫長的混亂活動後,會開闢出一條規則的 高速公路 螞蟻的路線是很難事先 的。你的任務是根據初始狀態,用計算機模擬蘭頓螞蟻在第n步行走後所處的位置。資料格式 輸入資料的第一行是 m n 兩個整...

藍橋杯 蘭頓螞蟻

問題描述 蘭頓螞蟻,是於1986年,由克里斯 蘭頓提出來的,屬於細胞自動機的一種。平面上的正方形格仔被填上黑色或白色。在其中一格正方形內有乙隻 螞蟻 螞蟻的頭部朝向為 上下左右其中一方。螞蟻的移動規則十分簡單 若螞蟻在黑格,右轉90度,將該格改為白格,並向前移一格 若螞蟻在白格,左轉90度,將該格改...

藍橋杯 蘭頓螞蟻

蘭頓螞蟻,是於1986年,由克里斯 蘭頓提出來的,屬於細胞自動機的一種。平面上的正方形格仔被填上黑色或白色。在其中一格正方形內有乙隻 螞蟻 螞蟻的頭部朝向為 上下左右其中一方。螞蟻的移動規則十分簡單 若螞蟻在黑格,右轉90度,將該格改為白格,並向前移一格 若螞蟻在白格,左轉90度,將該格改為黑格,並...