Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.12.2011, 16:29   #1
glebast
Форумчанин
 
Аватар для glebast
 
Регистрация: 10.12.2011
Сообщений: 154
Хорошо Дорога в гонках.

Привет ребята. Хочу сделать игру 2д гоночки. Подскажите как сделать дорогу
чтобы создавалась иллюзия будто машина едет. И если не сложно, напишите код.
Заранее спасибо.
glebast вне форума Ответить с цитированием
Старый 30.12.2011, 19:19   #2
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

А что потом? Написать код движения машинок? А может и всю игру сразу,а? Здесь не опенсорс, а форум. Совет дать конкретно в чем-то - пожалуйста, но написать за вас - только за отдельную плату Хотя может вам повезет - здесь иногда проходят добродушные люди.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 30.12.2011, 19:31   #3
glebast
Форумчанин
 
Аватар для glebast
 
Регистрация: 10.12.2011
Сообщений: 154
Радость

Ну если вы заметили то я просил сделать дорогу. Я просто не знаю как сделать что дорога двигалась так будто едет машина.
glebast вне форума Ответить с цитированием
Старый 30.12.2011, 19:36   #4
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

В таймере делаем сдвиг картинки дороги на нужное количество пикселей. Это будет перерисовка канвы, плюс прорисовать верхнюю часть скрывшейся нижней частью картинки, замкнутый цикл.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 31.12.2011, 13:54   #5
glebast
Форумчанин
 
Аватар для glebast
 
Регистрация: 10.12.2011
Сообщений: 154
Восклицание

Вот именно это у меня не получается. Просто как я сделал то у меня нижний и верхний куски дороги исчезают и появляются. Расскажите пожалуйста поподробнее как сделать, чтоб был полноценный цикл.
Заранее спасибо!
glebast вне форума Ответить с цитированием
Старый 01.01.2012, 04:06   #6
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Для того чтобы решить эту задачу, желательно разбить игровое поле на определенного размера квадраты. Создать двумерный массив, соотвествующий элементам поля (например, верхний левый элемент соотвествует первому элементу). То есть каждый такой элемент должен содержать содержимое этого квадрата (например: лес, дорога, и т. д.). В таймере происходит автоматическое изменение элементов этого массива, например, сдвига, то есть каждый элемент занимает позицию на 1 меньшую (при прямолинейном движении). Написать подпрограмму, прорисовки элемента массива и выполнять прорисовку всех элементов массива, при помощи этой подпрограммы.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 01.01.2012, 18:54   #7
glebast
Форумчанин
 
Аватар для glebast
 
Регистрация: 10.12.2011
Сообщений: 154
Радость

Ребята, у меня все равно не получается.
Вот код который я написал, здесь у меня дорога моргает.
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  image1.Top:=image1.Top+(image1.Height div 2);
   image2.Top:=image2.Top+(image2.Height div 2);
    image3.Top:=image3.Top+(image3.Height div 2);
     image4.Top:=image4.Top+(image4.Height div 2);
      image5.Top:=image5.Top+(image5.Height div 2);
       image6.Top:=image6.Top+(image6.Height div 2);

if (image1.top+image1.Height)>form1.clientheight then
 begin
  image1.top:=1;
 end;

if (image2.top+image2.Height)>form1.clientheight then
 begin
  image2.top:=1;
 end;

if (image3.top+image3.Height)>form1.clientheight then
 begin
  image3.top:=1;
 end;

if (image4.top+image4.Height)>form1.clientheight then
 begin
  image4.top:=1;
 end;

if (image5.top+image5.Height)>form1.clientheight then
 begin
  image5.top:=1;
 end;

if (image6.top+image6.Height)>form1.clientheight then
 begin
  image6.top:=1;
 end;
end;
glebast вне форума Ответить с цитированием
Старый 02.01.2012, 01:18   #8
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

1. Для вашей небольшой задачи лучше подходит Canvas, не же ли Image
2. Необходимо откуда-то загружать карту.
3. Должна существовать переменная, которая показывает текущую позицию в "карте"
3. С каждым циклом, необходимо увеличивать эту переменную, и относительно её отображать карту.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание класса «Железная дорога. Вагон» C# Александра89 Помощь студентам 0 08.12.2011 01:05
Как реализовать синхронизацию машинок в сетевых 2D гонках? murzik Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 21.08.2010 19:52
sendAndLoad дорога в один конец(as2) Izhic JavaScript, Ajax 0 20.09.2009 05:45