[VB6 ] 請問VB6- 走迷宮閃爍的問題~

看板Visual_Basic作者時間16年前 (2009/04/12 01:16), 編輯推噓0(0015)
留言15則, 3人參與, 最新討論串1/1
因為課業上的需求,所以做了一個走迷宮的小遊戲, 基本上的執行都沒問題,可是唯一的問題就出在: 我每走一步(每按一次移動鍵)迷宮地圖就會閃爍一次。 因為我對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

04/12 02:00, , 1F
每次都cls當然會一直閃了
04/12 02:00, 1F

04/12 02:01, , 2F
現在還有這種DOS幽靈如影隨形的程式,也不簡單
04/12 02:01, 2F

04/12 13:02, , 3F
甚麼是幽靈程式XDD 把show_maze的cls刪掉之後,
04/12 13:02, 3F

04/12 13:03, , 4F
每移動一次,它又重複print一個迷宮出來耶~
04/12 13:03, 4F

04/12 13:04, , 5F
刪commond的cls好像沒甚麼差別說..
04/12 13:04, 5F

04/12 17:35, , 6F
因為你都用文字模式在印迷宮,自然需要cls
04/12 17:35, 6F

04/12 17:35, , 7F
也一定會有閃動問題,免不了的。(你認命吧。)
04/12 17:35, 7F

04/12 17:36, , 8F
正確的方法是把他重寫成圖形式的,每次只重劃必要部份
04/12 17:36, 8F

04/12 18:10, , 9F
圖形式..有查到可以讀取txt檔內1和0產生迷宮..是指那個嗎?
04/12 18:10, 9F

04/12 22:29, , 10F
把迷宮存到txt只是前端 後端怎麼畫出來跟存不存txt無關
04/12 22:29, 10F

04/12 22:36, , 11F
要改成用畫的 你需要知道shape的用法 (VB6 way)
04/12 22:36, 11F

04/14 22:33, , 12F
謝謝MOONRAKER~ 我已經解決這個問題了~!!:)
04/14 22:33, 12F

04/15 12:17, , 13F
剛剛還想貼上程式碼玩走迷宮XD
04/15 12:17, 13F

04/15 18:09, , 14F
樓上~畫迷宮那段程式碼超長XD.書面最後總共有70頁說XDD
04/15 18:09, 14F

04/15 18:10, , 15F
後來是把Form屬性欄的AutoReDrew改True就不會閃爍了~
04/15 18:10, 15F
文章代碼(AID): #19uD1sn9 (Visual_Basic)