|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.03.2013, 01:44 | #1 |
Форумчанин
Регистрация: 28.05.2011
Сообщений: 309
|
Управление машинкой
Всем доброго времени суток!
Делаю игру. Есть карта загруженная в picturebox, я мышкой рисую маршрут(ниже код) и машинка должна двигаться по этому маршруту. Вопросы: 1.Машинку тоже загрузить через пикчербокс и выставить "на передний план" или лучше по-другому как-то ? 2.Как заставить эту машинку двигаться именно по маршруту? Как получить координаты линий? Заранее спасибо! Код:
Спеши медленно.
|
21.03.2013, 08:38 | #2 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Вот по ним и выводить после изображение машинки по таймеру... |
|
21.03.2013, 08:58 | #3 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,886
|
По Вашему, машинка, наверное, сама должна сканировать местность ?
Вы даже не храните координаты точек линии. Чтобы выводить машинки, надо подсчитывать вектор скорости по векторам точек, у машинки хранить вектор размещения, вектор скорости и следующую точку. Как только разность векторов размещения точки и вектора размещения машинки меньше вектора скорости - надо поменять точку на следующую по маршруту. Движение же машинок обычное - к вектору размещения добавляем вектор скорости. Теория по векторам http://habrahabr.ru/post/131931/ Но можно и в упрощённом виде делать простым расчётом координат (но его простота только в меньшей необходимости понимания теории, кода же гораздо меньше будет с векторами) Ну в Ваш код вообще странный, каждый раз при запуске программы будете рисовать трассу ? Лучше уж сразу предусмотреть ввод/вывод в файл, собственно, массив координат точек и тут нужен. |
21.03.2013, 11:07 | #4 |
Форумчанин
Регистрация: 28.05.2011
Сообщений: 309
|
Да я думал как-то записывать координаты точек линий в массив, а потом передвигать машинку по ней. Но как координаты линий ? Что-то не понимаю..
С векторами достаточно сложно.. Да, такое задание, что штурман рисует каждый раз трассу(да, по той же карте ), на карте есть бездорожье, песок и озера. По бездорожью едет с одной скоростью, по песку меньшей, а бензина тратиться больше. Озера надо объезжать. Игра происходить будет так: пользователь проложил маршрут, а потом стрелочками увеличил(уменьшил скорость). И машинка объехала маршрут по линиям. Понимаю, игра какая-то бессмысленная, но такое задание. Буду рад любым советам по поводу реализации этого всего.
Спеши медленно.
|
21.03.2013, 12:00 | #5 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
во-вторых, любой отрезок (впрочем, как и линия) на плоскости однозначно задаётся двумя несовпадающими точками, лежащими на этом отрезке/прямой. Для отрезка эти точки являются координатами начала отрезка и конца. в-третьих, у Вас все линии связанные (начало следующей линии всегда совпадает с концом предудущей - это одна и та же точка). Поэтому Вам достаточно хранить последовательные координаты точек T1 T2 ... TN (для каждой точки нужно хранить X и Y) |
|
21.03.2013, 12:58 | #6 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,886
|
Сложите всё вместе - сделайте что можете, картинки с машинками, картой, с запоминанием в массив точек, с расчётами скорости движения, примерно так - поле пусть условно поделено на некие клетки, где указывается тип, и пусть функция будет, принадлежности точки (пикселя) к клетке. Ну и таймер понадобится, скорее всего, попытайтесь обход точек на расчётах координат написать в его обработчике, сперва 1 машинки потом другой. Возможно понадобится проверка столкновений машинок потом - тут тоже можно будет воспользоваться полем - чтобы на 1 клетке в момент времени могла находиться только 1 машинка, а если другая старается её занять - значит обе проигрывают из-за столкновения.
Всё соберёте и киньте сюда архивом, и вопросы распишите. Постараемся помочь, но от Вас всё равно некую основу надо. |
21.03.2013, 13:38 | #7 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
|
|
21.03.2013, 16:24 | #8 |
Форумчанин
Регистрация: 28.05.2011
Сообщений: 309
|
phomm, спасибо за алгоритм. Я тоже думал на счет разбиения поля на квадратики, и каждый квадратик какая-то поверхность(земля, песок, вода).
Но сейчас у меня проблема, никак не могу понять как заставить машинку перемещаться по моему маршруту, который я задаю отрезками. Подходил к преподавателю, тот особо не объяснил(или я плохо понял).
Спеши медленно.
|
21.03.2013, 20:00 | #9 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,886
|
По таймеру производится приращение к координатам величин, которые соответствуют разности координат первой и второй точке на маршруте поделённой на количество итераций для прохождения этого маршрута (или в зависимости от длины пути), это и будет скорость, её по таймеру прибавляем к размещению.
Нарисуйте себе на листочке сетку координатную, задайте 2 точки , и распишите сколько за один "шаг" интервал времени должна продвинуться машинка - по линии находите точку куда она должна сместиться и смотрите на закономерности расчёта координат для этой точки. В таймерном цикле будет эффект движения. |
21.03.2013, 20:10 | #10 |
Форумчанин
Регистрация: 28.05.2011
Сообщений: 309
|
Я как раз так сейчас и делаю
Спеши медленно.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Управление игрушечной машинкой с компьютера | 8Observer8 | C# (си шарп) | 11 | 26.10.2012 17:27 |
Управление 2 экранами | Alexandr555 | Компьютерное железо | 13 | 06.07.2011 22:30 |
Управление | Костян 98 | Общие вопросы Delphi | 21 | 30.05.2011 16:31 |
Управление памятью | ilham | Операционные системы общие вопросы | 2 | 17.12.2008 18:29 |