Предлагаю немного посоревноваться в искусстве управления роботом.
Краткое описание:
Робот представляет собой три массивных колеса (изображение в 2D), соединённых невесомыми пружинами, внизу расположена земля, имеется сила тяжести, трение. Столкновения колёс между собой и с землёй абсолютно неупругие.
Радиус колеса - 32 (в пикселях), длина ненагруженных пружин - 150, земля находится на уровне -32, то есть колесо, касающееся земли, находится на уровне 0.
ЭТО ВСЁ УЖЕ НАПИСАНО! Ваша задача - написать robot.dll.
Программа, визуализирующая робота, обращается к robot.dll, которая экспортирует единственную ф-цию RTICK. Единственный параметр ф-ции - указатель на структуру, содержащую текущее значения координат и скоростей колёс, а так же усилия, приложенные к пружинам.
Задача - заставить робота двигаться вправо, цель - за минуту уйти как можно дальше.
Ф-ция RTICK вызывается 60 раз в секунду.
Тут уже готовая программа и исходник robot.dll на C++:
http://www.gamedev.ru/files/?id=74460
Можно этот исходник брать за основу. Естественно, на VB6 писать dll можно (и нужно!), просто этот пример я сделал для других сайтов, где далеко не все знакомы с VB.
Текущий результат, который пока можно считать рекордом - 3688.
Немного подробностей. Единицы все условные:
Масса колеса - 1.
Время - 1 "тик", то есть примерно 1/60 сек.
Расстояние - пиксели.
Соответственно скорость - пиксели за тик.
Единица силы - та величина, при которой за 1 тик тело массой в 1 ускоряется на 1.
Ускорение св. падения - 0.1.
Трение об воздух - каждый тик скорость каждого шара умножается на 0.997.
К-т жёсткости пружины - 6/150 (по Гуку).
Сила трения покоя и движения - 3 * сила_сжатия_тел.
Можно только влиять на три пружины, сила от -3 до 3, если дать больше - программа ограничит. Отрицательная сжимает пружину, положительная разжимает. Пружина с индексом №0 соединяет колёса №0 и №1, пружина с индексом №1 соединяет колёса №1 и №2, пружина с индексом №2 соединяет колёса №2 и №0.
Могу, при необходимости, дать исходник физики, но вряд ли это нужно. Мне кажется, что будет и проще, и интереснее сделать так, чтобы робот сам динамически принимал решение.
Более подходящего раздела для этой темы не нашёл.