Плавное движение объекта в VB

Компьютеры программирование программы visual basic Visual studio

Подскажите, пожалуйста, как сделать движение объекта (в Visual Basic) плавным?
Задали д/з (я студент) написать игру, типа Пакмен, но проще:
дан объект (колобок), который входит в лабиринт и выходит из него самостоятельно при одном единственном нажатии на кнопку "play".
Саму задачу я решил с помощью "петель" (вроде так это называется), но объект просто движется из одной точки в другую, причем очень быстро. Т.е. нет анимации. Я читал на форумах, что нужно добавить таймер, но как его запрограммировать, чтобы анимация получалась плавной я так и не понял.

Примечание:
BaluBig

Если честно, то я не понял... Слишком сложные слова, я ещё не знаком с этитми терминами.
Можно как то на примере кода?
Я оставил только два первых шага объекта для примера, чтобы не засорять страницу..



Public Class Form1

Public Class packman

Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
Dim index As Integer

For index = 1 To 2 Step 1
Packman1.MoveRight() 'шаг вправо
Next

For index = 1 To 10 Step 1
Packman1.MoveDown() 'шаг вниз
Next

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'тут будут указания для таймера
End Sub
End Class
Ответы:
Принцип достаточно несложный. Время квантуется в такты. Для этого нужен таймер, который оповестит все заинтересованные объекты о наступлении следующего такта, таймер связывает реальное время и время системы. Есть объект, который хранит свое состояние (прежде всего текущие координаты) и для которого напрограммирован закон движения. Закон движения это функция, которая исходя из текущего состояния объекта (координат) вычисляет координаты на следующем шаге. Итого. Срабатывает таймер, объект вычисляет свои следующие координаты и, если они отличаются от текущих, стирает себя в старом положении и рисует в новом. Манипулируя интервалом таймера и параметрами закона движения можно добиться нужной плавности анимации.
Как-то так.
Значится так. Пусть у нас пакман в виде текстовой метки O< бегает по панели. Бегает так: 200 пикселей вниз, потом 100 пикселей вправо, за тем стоп.
Опишем класс Пакмана: http://pastebin.com/DQKdeDcs
Туда инкапсулирована та самая метка. Перед стартом нужно вызвать StartUp и передать начальные координаты и закон движения. Шаг движения делается методом Move, при этом контролируем проперть Done что бы понять, что движение завершено. По окончании вызываем ShutDown.
Закон движения - тоже класс: http://pastebin.com/UvH1wKkZ
Вся логика движения сидит в методе Evaluate, который принимает текущие координаты, возвращает новые, а так же возвращает признак того, что координаты изменились (результат функции True).
Собираем все в кучу: http://pastebin.com/YJiBf98R
Простая форма с кнопкой, панелью-полем и таймером. Интервал таймера равен 40, что соответствует 25 кадрам в секунду.
Весь проект http://www.sendspace.com/file/wpv635
Для красоты дизайна надо было пообъявлять там абстрактные классы, интерфейсы и т.п., но мы сейчас не о шаблонах проектирования ;-)


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.