出差***累死,還用vb 做,還***這點公尺,無聊,寫個小東西:
「生命遊戲」
本世紀70年代,人們曾瘋魔一種被稱作「生命遊戲」的小遊戲,這種遊戲相當簡單。假設有乙個像棋盤一樣的方格網,每個方格中放置乙個生命細胞,生命細胞只有兩種狀態:「生」或「死」。遊戲規則如下:
1、如果乙個細胞周圍有3個細胞為生(乙個細胞周圍共有8個細胞),則該細胞為生,即該細胞若原先為死,則轉為生,若原先為生,則保持不變;
2、如果乙個細胞周圍有2個細胞為生,則該細胞的生死狀態保持不變;
3、在其它情況下,該細胞為死,即該細胞若原先為生,則轉為死,若原先為死,則保持不變。
依此規則進行迭代變化,使細胞生生死死,會得到一些有趣的結果。該遊戲之所以被稱為「生命遊戲」,是因為其簡單的遊戲規則,反映了自然界中的生存規律:如果乙個生命,其周圍的同類生命太少的話,會因為得不到幫助而死亡;如果太多,則會因為得不到足夠的資源而死亡。
vb project 「生命遊戲」
1.介面很簡單,乙個start button,乙個label
2.**:
'by metaphy
'2006-2-24
option explicit
private awidth as integer
private aheight as integer
private ax as integer
private ay as integer
private sidelen as integer
private orgstat as variant '細胞初始態
private endstat as variant '結束態
'初始常量
private sub form_load()
' mainfrm.backcolor = rgb(180, 180, 180)
ax = 50
ay = 50
sidelen = 105
awidth = 100
aheight = 70
redim orgstat(100, 70) as integer
redim endstat(100, 70) as integer
end sub
'畫布初始
private sub initcanvas()
dim i, j as integer
for i = 0 to awidth
line (ax + i * sidelen, ay)-(ax + i * sidelen, ay + aheight * sidelen)
next
for j = 0 to aheight
line (ax, ay + j * sidelen)-(ax + awidth * sidelen, ay + j * sidelen)
next
end sub
'畫布重畫
private sub recanvas()
dim i, j as integer
for i = 0 to awidth - 1
for j = 0 to aheight - 1
if endstat(i, j) = 1 then
'line (ax + i * sidelen, ay + j * sidelen)-(ax + (i + 1) * sidelen, ay + (j + 1) * sidelen), rgb(255, 255, 0), bf
line (ax + i * sidelen + 1, ay + j * sidelen - 1)-(ax + (i + 1) * sidelen + 1, ay + (j + 1) * sidelen - 1), rgb(0, 0, 0), bf
else
line (ax + i * sidelen + 1, ay + j * sidelen - 1)-(ax + (i + 1) * sidelen + 1, ay + (j + 1) * sidelen - 1), rgb(255, 255, 255), bf
end if
if i = awidth - 1 then line (ax, ay + j * sidelen)-(ax + awidth * sidelen, ay + j * sidelen)
next
line (ax + i * sidelen, ay)-(ax + i * sidelen, ay + aheight * sidelen)
next
i = awidth
j = aheight
line (ax + i * sidelen, ay)-(ax + i * sidelen, ay + aheight * sidelen)
line (ax, ay + j * sidelen)-(ax + awidth * sidelen, ay + j * sidelen)
end sub
'迭代,得到細胞狀態
private sub changestate(times as integer)
dim i, j, tim as integer
dim lives as integer
for i = 0 to awidth - 1
for j = 0 to aheight - 1
randomize
orgstat(i, j) = int(2 * rnd)
endstat(i, j) = 0
next
next
for tim = 0 to times - 1
for i = 1 to awidth - 2 '最外面一層不參與
for j = 1 to aheight - 2
lives = 0
lives = orgstat(i - 1, j - 1) + orgstat(i, j - 1) + orgstat(i + 1, j - 1) _
+ orgstat(i - 1, j) + orgstat(i + 1, j) _
+ orgstat(i - 1, j + 1) + orgstat(i, j + 1) + orgstat(i + 1, j + 1)
if lives = 2 then
endstat(i, j) = orgstat(i, j)
elseif lives = 3 then
endstat(i, j) = 1
else
endstat(i, j) = 0
end if
next
next
for i = 0 to awidth
for j = 0 to aheight
orgstat(i, j) = endstat(i, j)
next
next
next
end sub
'顯示部分資訊
private sub someinfo(times as string)
label1.caption = "迭代次數:" + times
end sub
private sub start_click()
dim times as integer
randomize
times = int(200 * rnd + 1)
call someinfo(str(times))
call changestate(times)
call recanvas
end sub
Algorithm Gossip 生命遊戲
file name arithmetic.c creat data 2015.1.31 author zy algorithm gossip 生命遊戲 生命遊戲 game of life 為1979年由英國數學家j.h.conway 所提出的,某一細胞的鄰居包括上,下,左,右,左上,左下,右上與右下...
演算法 生命遊戲
問題描述 在乙個環境中,有很多細胞,細胞的位置周圍,上,下,左,右,左上,左下,右上,右下,八個方位 如果這個細胞周圍存在乙個及乙個一下,則下一代會消失 如果這個細胞周圍存在四個及四個以上,則下一代會消失 如果這個細胞周圍存在兩個或三個,則下一代保留 如果這個位置,本來沒用細胞,但是周圍有三個細胞,...
康威生命遊戲
規則生命遊戲中,對於任意細胞,規則如下 每個細胞有兩種狀態 存活或死亡,每個細胞與以自身為中心的周圍八格細胞產生互動 如圖,黑色為存活,白色為死亡 當前細胞為存活狀態時,當周圍的存活細胞低於2個時 不包含2個 該細胞變成死亡狀態。模擬生命數量稀少 當前細胞為存活狀態時,當周圍有2個或3個存活細胞時,...