生成迷宮的程式

2021-09-30 15:52:29 字數 3688 閱讀 4353

private sub form_click()

10     szx = 5000

szy = 5000

tr = 20

l = 50

mx = szx / l

my = szy / l

dim a(1001, 1001)

goto 110

20     while not (x = 2 and y = 1)

30         if a(x - 1, y) * a(x, y - 1) * a(x, y + 1) * a(x + 1, y) = 0 then goto 70

40         for i = 0 to 3

xx = x + (i = 0) - (i = 2)

yy = y + (i = 1) - (i = 3)

if a(xx, yy) = s - 1 then goto 60

50         next

return

60         x = xx

y = yy

s = a(x, y)

goto 90

70         r = int(rnd(1) * 4)

xx = x + (r = 0) - (r = 2)

yy = y + (r = 1) - (r = 3)

if a(xx, yy) <> 0 then goto 70

80         x = xx

y = yy

s = s + 1

a(x, y) = s

90     wend

return

110     for i = 0 to mx + 1

a(i, 0) = -1

a(i, my + 1) = -1

next

for i = 0 to my + 1

a(0, i) = -1

a(mx + 1, i) = -1

next

120     x = mx - 1

y = my

s = 1

a(x, y) = s

gosub 20

130     for q = my to 1 step -1

for p = mx to 1 step -1

if a(p, q) > 0 then goto 160

140             r = int(rnd(1) * 4)

pp = p + (r = 0) - (r = 2)

qq = q + (r = 1) - (r = 3)

if a(pp, qq) < 1 then goto 140

150             x = p

y = q

s = a(pp, qq) * 2 + 1000

a(x, y) = s

gosub 20

f = 1

160         next p, q

if f then f = 0: goto 130

200         cls

210         for x = 1 to mx

for y = 1 to my

220                 t = abs(a(x, y) - a(x + 1, y))

if t <= 1 or t - 1000 = a(x, y) or t - 1000 = a(x + 1, y) then goto 230

225                 line (x * l + tr, y * l - l + tr)-(x * l + tr, y * l + tr)

230                 t = abs(a(x, y) - a(x, y + 1))

if t <= 1 or t - 1000 = a(x, y) or t - 1000 = a(x, y + 1) then goto 240

235                 line (x * l - l + tr, y * l + tr)-(x * l + tr, y * l + tr)

240             next y, x

250             line (tr, tr)-(tr + szx, tr + szy), , b

line (l + tr, tr)-(l + l + tr, tr), &h8000000f

line (szx - l + tr, szy + tr)-(szx - l - l + tr, szy + tr), &h8000000f

260             goto 1010

400             while not (x = 2 and y = 1)

1000                 for i = 1 to 4

for j = 1 to 8

print a(j, i); " ";

next

print inkey$;

next

return

wend

1010 end sub

vb部分相關文章

推薦

※vb快速讀取 textbox 第 n 行的資料 ※

vb禁止使用 alt-tab 或 ctrl-alt-del ※

生成迷宮的程式 ※

另一方法轉換大小寫 ※

vb控制項註冊 - 利用資源檔案將dll、ocx打包進exe檔案 ※

vb利用資源檔案進行工作 ※

***vb高效程式設計(優化) ※

vb陽曆轉陰曆 ※

純vb**取得硬碟的物理序列號 ※

vb獲得磁碟的檔案系統 ※

做vb的,經常註冊和反註冊ocx控制項和dll鏈 ※

vb從程式中生成exe檔案 ※

vb6監視/操作剪貼簿示例(vb6.0**) ※

vb6裡自動提交/自動填表的一種相對通用的方案 ※

vb移動沒有標題的窗體 ※

vb隨機字母的函式 ※

vb刪除帶子資料夾和檔案的資料夾 ※

vb怎樣遮蔽 alt+f4鍵 ※

vb 隱藏程序 ※

vb遮蔽文字框點右鍵時的彈出選單 ※

vb手控combobox的開啟或收起 ※

在vb中ini檔案的讀寫、刪除(對中文支援很好) ※

vb全域性熱鍵的寫法(佔很少的資源) ※

vb取消文字框的貼上功能 ※

vb常用檔案操作類 ※

vb獲取特殊資料夾 ※

vb獲取windows各常用目錄的函式(模組) ※

vb生成太極圖 ※

vb:常用內部函式大全,你會了幾個呢? ※

vb中sendmessage函式 ※

精簡vb程式的** ※

vb:將數字轉換為大寫中文 ※

vb:設定 msgbox 在若干時間之後若無回應則自動關閉 ※

vb:讀取及設定numlock/capslock/scrolllock的值 ※

vb:您知道 mid$ 函量可以放在 '=' 的左方嗎 ※

vb後台獲得按鍵,並執行自己的函式(非鉤子及熱鍵) ※

vb:將短檔名格式轉成長檔名 ※

在vb中使用iphlpapi.dll獲取網路資訊(上) ※

在vb中使用iphlpapi.dll獲取網路資訊(下)

>>>

迷宮自動生成程式

這學期開始時本來打算寫個自動生成迷宮的程式。但當時水平所限,寫不出來。假期這兩天把這個想法付諸實施,現在想想這個程式挺有意思的。程式和道理都非常簡單,有些類似於走迷宮。思路是這樣 1.首先假設迷宮場地是充滿牆壁沒有道路的。我們的工作其實就是把迷宮 挖 出來。不妨把開始時的迷宮看成一些小的 房間 每個...

3 隨機迷宮生成演示程式

假期寫了個基於隨機迷宮的遊戲,學習了相關隨機迷宮的生成演算法。其他演算法都好理解,也很容易寫出來。但就是隨機prim,怎麼都寫不對,生成的迷宮亂七八糟的,急死人了 沒辦法只好看別人的,但是又死活看不明白注釋,除錯又不太直觀,只好魔改程式,讓程式顯示構造迷宮過程中各個格仔的狀態。才弄懂明白,原來是隨機...

隨機生成迷宮

首先初始地圖所有位置均設為障礙牆,然後任意插入乙個牆體進牆佇列 再判斷此時牆體是否可以設定為路 判斷依據 上下左右四個位置是否只有乙個位置是路 若設定為路,則將該位置四周所有的牆插入佇列 若無法設定為路,直接從牆佇列中刪去當前結點所在的節點,若牆佇列不為空,則從佇列中隨機選取一處障礙重新執行,重複以...