Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Странное поведение VB6 Добавлено: 06.09.04 16:55  

Автор вопроса:  Yeputons | ICQ: 278444762 
Hi! Я делаю игру Emeker Cat. Я хочу чтобы кошка "шла". Фазы движения нарисовал. Написл код, запустил и - стоп! Кошка не пошла а "поплыла" по экрану. Запустил пошаговою отладку - кошка пошла. Запустил - поплыла. Че делать. Вот код:

Option Explicit
Dim CatMove As Byte
Dim CatFrame As Byte

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyRight: CatMove = 2: CatFrame = 1
Case vbKeyLeft: CatMove = 1: CatFrame = 1
End Select
End Sub

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyRight Or KeyCode = vbKeyLeft Then CatMove = 0
End Sub

Private Sub tmrMove_Timer()
If picCat.Left <= 0 And CatMove = 1 Then CatMove = 0
If picCat.Left >= (Me.ScaleWidth - picCat.Width) And CatMove = 2 Then CatMove = 0
Select Case CatMove
Case 1
    If CatFrame = 1 Then picCat.Picture = picCatMove(0).Picture
    If CatFrame = 2 Then picCat.Picture = picCatMove(1).Picture
    If CatFrame = 3 Then picCat.Picture = picCatMove(0).Picture
    If CatFrame = 4 Then picCat.Picture = picCatMove(2).Picture
    picCat.Left = picCat.Left - 10
    
    CatFrame = CatFrame + 1
    If CatFrame = 5 Then CatFrame = 1
Case 2
    If CatFrame = 1 Then picCat.Picture = picCatMove(3).Picture
    If CatFrame = 2 Then picCat.Picture = picCatMove(4).Picture
    If CatFrame = 3 Then picCat.Picture = picCatMove(3).Picture
    If CatFrame = 4 Then picCat.Picture = picCatMove(5).Picture
    picCat.Left = picCat.Left + 10
    
    CatFrame = CatFrame + 1
    If CatFrame = 5 Then CatFrame = 1
End Select
End Sub

Интервал таймера tmrMove - 10.

Ответить

  Ответы Всего ответов: 18  

Номер ответа: 1
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #1 Добавлено: 06.09.04 17:27
А вот такой шутник наш великий VB6!!! :)))

Ответить

Номер ответа: 2
Автор ответа:
 Yeputons



ICQ: 278444762 

Вопросов: 71
Ответов: 179
 Профиль | | #2 Добавлено: 06.09.04 18:11
А избежать или исправить это можно? А то не очень "вкусно" получается.

Ответить

Номер ответа: 3
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #3
Добавлено: 06.09.04 19:48
Ну можно попробовать поэкспериментировать с обновлением окошка... Если хочешь, пришли мне на мыло пример... Если успеешь сегодня, то посмотрю сегодня, а нет, так до завтрашнего вечера :)

Ответить

Номер ответа: 4
Автор ответа:
 Yeputons



ICQ: 278444762 

Вопросов: 71
Ответов: 179
 Профиль | | #4 Добавлено: 06.09.04 22:20
С интервалом таймера я уже эксперементировал. С операторами Me.Refresh и DoEvents тоже. Ничего не вышло.

Ответить

Номер ответа: 5
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #5 Добавлено: 06.09.04 23:05
Да, всегда я говороли – графические игрушки надо делать в DirectDraw. Все будет без проблем. Если заинтересовало, могу выслать движок.
А насчет твоего кода... А плывет она у тебя на какой картинке?

Ответить

Номер ответа: 6
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #6
Добавлено: 06.09.04 23:22
Говорю же выложи исходник, и все будет... Я никому недоверяю так как себе ;) Ведь правду же говорят что лучше один раз увидеть и убедиться самому, чем сто раз услышать с чужих слов ;)

Ответить

Номер ответа: 7
Автор ответа:
 Yeputons



ICQ: 278444762 

Вопросов: 71
Ответов: 179
 Профиль | | #7 Добавлено: 07.09.04 11:56
Плывет она у меня либо на кртинке picCatMove(0).Picture либо на picCatMove(3).Picture, В зависимости от направления движения. А что такое DirectDraw?

Sne, я выложил исходних в вопросе, что тебе еще надо?

Ответить

Номер ответа: 8
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #8
Добавлено: 07.09.04 12:14
Картинки, св-ва контролов... Ну не хочешь, как хочешь, мне что-ль надо...

Ответить

Номер ответа: 9
Автор ответа:
 Yeputons



ICQ: 278444762 

Вопросов: 71
Ответов: 179
 Профиль | | #9 Добавлено: 07.09.04 14:18
Sne, проверь почту.

Ответить

Номер ответа: 10
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #10
Добавлено: 07.09.04 19:36
Проверил, веришь или нет, но у меня кот бегает довольно шустро, и кажется все нормально... А что ты подразумеваешь под словом "плыть" ?
По-моему она нормально бегает :)

Ответить

Номер ответа: 11
Автор ответа:
 Yeputons



ICQ: 278444762 

Вопросов: 71
Ответов: 179
 Профиль | | #11 Добавлено: 07.09.04 19:39
Под словом "плыть" я подразумеваю. То что кот "идет" по экрану застыв в одной фазе. А насчет того что у тебя кот бегает... Хм... Может мне VB переустановить?

Ответить

Номер ответа: 12
Автор ответа:
 Yeputons



ICQ: 278444762 

Вопросов: 71
Ответов: 179
 Профиль | | #12 Добавлено: 07.09.04 20:00
Переустановил я VB. Не помогло.

Ответить

Номер ответа: 13
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #13
Добавлено: 10.09.04 16:52
Отсылай всех, у кого такой-же глюк на просмотр работоспособного кода к sne :)

Ответить

Номер ответа: 14
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #14
Добавлено: 10.09.04 17:32
:)) ко мне, за что такое наказание, ааа нееет :)))

А вообще, могу даже с экрана видео снять... все отлично бегает, правдо с такой скоростью передвижения лап, или что там у него, что их практически невидать... Может ты имел ввиду именно это...

Сейчас еще поэкспериментирую...

ЗЫ
Кстати у кого не будет работать, можно отослать по этой ссылке ;)

http://www.lleo.aha.ru/na/

ЗЗЫ
Самим лучше по линку не ходить... я никого туда не отсылаю :))

Ответить

Номер ответа: 15
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #15
Добавлено: 10.09.04 17:54
Вот чуть подправил 2 строчки, и все стало бегать:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If CatFrame = 0& Then CatFrame = vbNull

    Select Case KeyCode
        Case Is = vbKeyRight: CatMove = 2
        Case Is = vbKeyLeft: CatMove = 1
    End Select
End Sub

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам