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

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

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2013, 19:29   #1
GoodDA
фрилансер
Форумчанин
 
Аватар для GoodDA
 
Регистрация: 18.07.2008
Сообщений: 107
По умолчанию Пара моих игр на делфи под OpenGL

Выкладываю пару игр с исходниками на делфи 7. Графика на OpenGL.
Может кому пригодятся.


скачать - Танк против жуков


Скачать - Бильярд



Скачать-Пинбол
GoodDA вне форума Ответить с цитированием
Старый 17.03.2013, 22:57   #2
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Скажите, пожалуйста как реализовывались столкновения в пинболе? С удовольствием гляну исходники, но сейчас нет среды и подходящей ОС. Хотя, узнав алгоритм, интереснее будет самому реализовать.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 18.03.2013 в 14:03.
_PROGRAMM_ вне форума Ответить с цитированием
Старый 18.03.2013, 00:48   #3
GoodDA
фрилансер
Форумчанин
 
Аватар для GoodDA
 
Регистрация: 18.07.2008
Сообщений: 107
По умолчанию

В пинболе у меня все сделано через проверки пересечения шара с линиями.
Если пересеклись, то меняю направление движения шара, по правилу угол падения равен углу отражения.

Код:
//проверка пересечения шара и линии под номером N
procedure TForm1.Intersect(n: Integer);
var
  a, b, y, c: Extended;
begin
  if IntersectCircleLine(ball.x + ball.dx, ball.y + ball.dy, Diam / 2,
    lines[n].x1, lines[n].y1, lines[n].x2, lines[n].y2) then //если пересекаются то...
  begin
    a := GetAngle(0, 0, ball.dx, ball.dy);  //считаем  угол между шаром и осью ОХ
    b := GetAngle(lines[n].x1, lines[n].y1, lines[n].x2, lines[n].y2);  //считаем  угол линии  к  оси ОХ
    y := 2 * b - a + lines[n].ugol;  //считаем  угол отражения
    c := Sqrt(Sqr(ball.dx) + sqr(ball.dy)) + lines[n].power;  //получаем  энергию  и плюсуем  к  ней  энергию линии

    if c > max_speed then  //если  больше  максимальной то уменьшаем
      c := max_speed;
    if c < max_speed / 28 then  //а  это чтоб бесконечно недергался, если  меньше  то  останавливаем  шар
      c := 0;

    ball.dx := c * cos(y * pi / 180);  //высчитываем  приращения  для  движения
    ball.dy := c * sin(y * pi / 180);
    ball.x := ball.x + ball.dx;  //и сразу  двигаем  шар
    ball.y := ball.y + ball.dy;
//*******************************************
end;

//проверка пересечения линии и шара
function IntersectCircleLine(centerx, centery, radius, p1x, p1y, p2x, p2y:Extended): Boolean;
var  dx, dy, a, b, c, x01, x02, y01, y02: Extended;
begin
  radius := radius * 1.1;
  x01 := p1x - centerx;
  y01 := p1y - centery;
  x02 := p2x - centerx;
  y02 := p2y - centery;
  dx := x02 - x01;
  dy := y02 - y01;
  a := dx * dx + dy * dy;
  b := 2.0 * (x01 * dx + y01 * dy);
  c := x01 * x01 + y01 * y01 - radius * radius;
  if (-b < 0) then
    Result := (c < 0)
  else if (-b < (2.0 * a)) then
    Result := (4.0 * a * c - b * b < 0)
  else
    Result := (a + b + c < 0);
end;

//получение угла  между точками
function GetAngle(x1, y1, x2, y2: single): single;
begin
  GetAngle := (ArcTan2(y2 - y1, x2 - x1)) * 180 / pi;
end;

Последний раз редактировалось GoodDA; 18.03.2013 в 00:50.
GoodDA вне форума Ответить с цитированием
Старый 12.04.2013, 08:48   #4
GoodDA
фрилансер
Форумчанин
 
Аватар для GoodDA
 
Регистрация: 18.07.2008
Сообщений: 107
По умолчанию

Добавил машинку, лего и нарды

http://teleprog.net/index.php/downlo...---opengl.html
http://teleprog.net/index.php/downlo...hi-opengl.html
http://teleprog.net/index.php/downlo...---delphi.html
GoodDA вне форума Ответить с цитированием
Старый 12.04.2013, 19:31   #5
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
По умолчанию

Танк у тебя крутой получился.
Только, я ни как жуков убить не смог, пару раз раздавил и взорвался(
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки
intmain вне форума Ответить с цитированием
Старый 13.04.2013, 09:37   #6
GoodDA
фрилансер
Форумчанин
 
Аватар для GoodDA
 
Регистрация: 18.07.2008
Сообщений: 107
По умолчанию

Жуков из далека надо расстреливать,
когда близко подьезжаешь к ним, они в защитный режим типа уходят
GoodDA вне форума Ответить с цитированием
Старый 13.04.2013, 10:25   #7
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

А детальки от лего сам делал? И кстати, было бы супер, если бы можно было камеру приближать и отдалять.
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 13.04.2013, 13:31   #8
GoodDA
фрилансер
Форумчанин
 
Аватар для GoodDA
 
Регистрация: 18.07.2008
Сообщений: 107
По умолчанию

Ага, сам в опенгл рисовал,там есть трехмерный массив фигуры(эталон) и по нему просто из одиночных кусочков строится большая деталь.
Камера в лего колесиком приближается/отдаляется.
GoodDA вне форума Ответить с цитированием
Старый 13.04.2013, 13:31   #9
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
По умолчанию

Цитата:
они в защитный режим типа уходят
Это ты баг на фичу перекурил?
Я по кругу стрелял все целы стоят, поехал давить.
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки
intmain вне форума Ответить с цитированием
Старый 13.04.2013, 20:03   #10
GoodDA
фрилансер
Форумчанин
 
Аватар для GoodDA
 
Регистрация: 18.07.2008
Сообщений: 107
По умолчанию

Да нет, это так и задумывалось, чтоб игрок по дальним жукам стрелял, меткость развивал)
GoodDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посоветуйте новогодних игр под iOS VladimirNew Свободное общение 2 19.11.2011 13:48
Создание игр в делфи вася радугов Помощь студентам 4 05.09.2011 22:47
Компоненты для игр в Билдере; + пара вопросов по проектированию. Гром Gamedev - cоздание игр: Unity, OpenGL, DirectX 9 30.01.2010 15:56