板凳
zqnhlm [专家分:780] 发布于 2005-07-22 20:34:00
我这有一道,迷宫如DATA数据,0代表可以走的,1代表障碍,我只能求出一条路径。
CLS
DIM maze(0 TO 11, 0 TO 11) AS INTEGER
DIM wz(1 TO 4, 1 TO 2) AS INTEGER
DIM lj(1 TO 100, 1 TO 2) AS INTEGER
DIM n AS INTEGER
DIM i AS INTEGER
DIM j AS INTEGER
DIM x AS INTEGER
DIM y AS INTEGER
FOR i = 1 TO 10
FOR j = 1 TO 10
READ maze(i, j)
NEXT j
NEXT i
DATA 0,1,1,1,1,1,0,0,0,0
DATA 0,0,0,0,0,1,0,1,0,0
DATA 0,0,0,1,0,1,0,0,0,0
DATA 0,1,0,1,0,1,0,1,1,0
DATA 0,1,0,1,0,1,0,1,0,0
DATA 0,1,1,1,0,1,0,1,0,1
DATA 0,1,0,0,0,1,0,1,0,1
DATA 0,1,0,1,1,1,0,1,0,0
DATA 1,0,0,0,0,0,0,1,0,0
DATA 0,0,0,0,1,1,1,1,0,0
FOR i = 0 TO 11
maze(i, 0) = 1: maze(i, 11) = 1
maze(0, i) = 1: maze(11, i) = 1
NEXT i
FOR i = 1 TO 4
READ wz(i, 1), wz(i, 2)
NEXT i
DATA 0,1,1,0,0,-1,-1,0
x = 1: y = 1
DO WHILE x <> 10 OR y <> 10
FOR i = 1 TO 4
IF maze(x + wz(i, 1), y + wz(i, 2)) = 0 THEN
n = n + 1
lj(n, 1) = x: lj(n, 2) = y
maze(x, y) = 1
x = x + wz(i, 1): y = y + wz(i, 2)
EXIT FOR
END IF
NEXT i
IF i = 5 THEN
n = n - 1
maze(lj(n, 1), lj(n, 2)) = 0
maze(x, y) = 1
x = lj(n, 1): y = lj(n, 2)
END IF
LOOP
n = n + 1
lj(n, 1) = 10: lj(n, 2) = 10
FOR i = 1 TO n
PRINT lj(i, 1); lj(i, 2),
NEXT i
END
3 楼
moz [专家分:37620] 发布于 2005-07-22 21:20:00
[url=http://www.programfan.com/club/showbbs.asp?id=85759]这是我上个月写的[/url]
而且我只是把迷宫画了出来,至于怎样走也是很简单的事情,只是我已经没有心情再去做了,太烦了,也没意思.
DEFINT A-Z
CLEAR
x = 128
y = 96
c = 5
DIM box%(x, y)
SCREEN 12
CLS
LINE (0, 0)-(639, 479), 7, B
FOR i = 5 TO 639 STEP 5
LINE (i, 0)-(i, 479), c
NEXT
FOR j = 5 TO 479 STEP 5
LINE (0, j)-(639, j), c
NEXT
LINE (0, 0)-(5, 5), 1, BF
LINE (635, 475)-(639, 479), 1, BF
RANDOMIZE TIMER
i = 1
j = 1
DO UNTIL i = x AND j = y
II = i
JJ = j
q = 0
DO
DO
k = RND * 3 + 1
j = JJ + (k MOD 2) * (k - 2)
i = II + (k MOD 2 - 1) * (k - 3)
LOOP WHILE i < 1 OR j < 1 OR i > x OR j > y
q = q + 1
LOOP WHILE box%(i, j) AND q < 8
LINE ((II * 5 - (k MOD 2) * 4 - (k \ 4) * 5), (JJ * 5 + (k MOD 2 - 1) * 4 + (k = 1) * 5))-((II * 5 - (k MOD 2) - (k \ 4) * 5), (JJ * 5 + (k MOD 2 - 1) + (k = 1) * 5)), 0
box%(i, j) = 1
LOOP
FOR p = 1 TO 128
FOR t = 1 TO 96
IF box%(p, t) = 0 THEN
i = p
j = t
DO
II = i
JJ = j
q = 0
DO
DO
k = RND * 3 + 1
j = JJ + (k MOD 2) * (k - 2)
i = II + (k MOD 2 - 1) * (k - 3)
LOOP WHILE i < 1 OR j < 1 OR i > x OR j > y
q = q + 1
LOOP WHILE box%(i, j) AND q < 8
LINE ((II * 5 - (k MOD 2) * 4 - (k \ 4) * 5), (JJ * 5 + (k MOD 2 - 1) * 4 + (k = 1) * 5))-((II * 5 - (k MOD 2) - (k \ 4) * 5), (JJ * 5 + (k MOD 2 - 1) + (k = 1) * 5)), 0
box%(i, j) = 2
LOOP WHILE q < 8
END IF
NEXT t, p
k$ = INPUT$(1)
SCREEN 0