作者globav ()
看板Visual_Basic
標題[VB6 ] 請問VB6- 走迷宮閃爍的問題~
時間Sun Apr 12 01:16:33 2009
因為課業上的需求,所以做了一個走迷宮的小遊戲,
基本上的執行都沒問題,可是唯一的問題就出在:
我每走一步(每按一次移動鍵)迷宮地圖就會閃爍一次。
因為我對VB的了解和使用還不是很熟悉,不知道要怎麼排解這個問題,
所以想請板上的高手們幫忙,可以教我或提示我應該怎麼修改嗎?
程式碼有點長,不過都在畫迷宮,所以節錄部分貼~
Dim Maze(40, 40) As Integer
Dim ax, ay As Integer
Dim bx, by As Integer
Dim cx, cy As Integer
-------------------------------------------------
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Cls
For y = 0 To ay
Maze(0, y) = "1"
Maze(ax, y) = "1"
Next y
For x = 0 To ax
Maze(x, 0) = "1"
Maze(x, ay) = "1"
Next x
For x = 1 To ax - 1
For y = 1 To ay - 1
Maze(x, y) = 1
For j = 4 To 7
Maze(2, j) = 0
Next
For j = 7 To 10
Maze(3, j) = 0
Next
(省略畫迷宮~)
Next y
Next x
Label1.Caption = "0"
Maze(20, 20) = 2 '起點
bx = 20
by = 20
Maze(37, 37) = 3 '終點
show_maze
End Sub
---------------------------------------------------------
Sub show_maze()
Cls
For y = 0 To ay
For x = 0 To ax
If Maze(x, y) = 1 Then
Print "■"; '地圖呈現的圖樣
ElseIf Maze(x, y) = 2 Then
Print "♂"; '起點
ElseIf Maze(x, y) = 3 Then
Print "㊣"; '終點
Else
Print " ";
End If
Next x
Print
Next y
'Label1.Caption = Label1.Caption & bx & "," & by
End Sub
-----------------------------------------------------
Private Sub Command1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 52 '4
Label1.Caption = Label1.Caption + 1
cx = -1
cy = 0
check_moving
Case 56 '8
Label1.Caption = Label1.Caption + 1
cx = 0
cy = -1
check_moving
Case 54 '6
Label1.Caption = Label1.Caption + 1
cx = 1
cy = 0
check_moving
Case 50 '2
Label1.Caption = Label1.Caption + 1
cx = 0
cy = 1
check_moving
End Select
End Sub
--------------------------------------------------
Private Sub Form_Load()
ax = 39
ay = 39
End Sub
--------------------------------------------------
Sub check_moving()
Dim T As Integer
T = Label1.Caption
nx = bx + cx
ny = by + cy
If nx < 0 Or nx > ax Then Exit Sub
If ny < 0 Or ny > ay Then Exit Sub
If Maze(nx, ny) = 0 Or Maze(nx, ny) = 3 Or Maze(nx, ny) = 4 Then '允許移動
Maze(nx, ny) = 2
Maze(bx, by) = 0
bx = nx
by = ny
Else
'會撞牆,不移動
End If
show_maze
End If
End Sub
--------------------------------------------------
以上。
對不起貼上來的程式碼很多,
希望有人可以幫我解決這個問題~
非常感謝:)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.211.28.23
1F:→ MOONRAKER:每次都cls當然會一直閃了 04/12 02:00
2F:→ MOONRAKER:現在還有這種DOS幽靈如影隨形的程式,也不簡單 04/12 02:01
3F:→ globav:甚麼是幽靈程式XDD 把show_maze的cls刪掉之後, 04/12 13:02
4F:→ globav:每移動一次,它又重複print一個迷宮出來耶~ 04/12 13:03
5F:→ globav:刪commond的cls好像沒甚麼差別說.. 04/12 13:04
6F:→ MOONRAKER:因為你都用文字模式在印迷宮,自然需要cls 04/12 17:35
7F:→ MOONRAKER:也一定會有閃動問題,免不了的。(你認命吧。) 04/12 17:35
8F:→ MOONRAKER:正確的方法是把他重寫成圖形式的,每次只重劃必要部份 04/12 17:36
9F:→ globav:圖形式..有查到可以讀取txt檔內1和0產生迷宮..是指那個嗎? 04/12 18:10
10F:→ MOONRAKER:把迷宮存到txt只是前端 後端怎麼畫出來跟存不存txt無關 04/12 22:29
11F:→ MOONRAKER:要改成用畫的 你需要知道shape的用法 (VB6 way) 04/12 22:36
12F:→ globav:謝謝MOONRAKER~ 我已經解決這個問題了~!!:) 04/14 22:33
13F:→ likemeizu999:剛剛還想貼上程式碼玩走迷宮XD 04/15 12:17
14F:→ globav:樓上~畫迷宮那段程式碼超長XD.書面最後總共有70頁說XDD 04/15 18:09
15F:→ globav:後來是把Form屬性欄的AutoReDrew改True就不會閃爍了~ 04/15 18:10