Пятница, 29 Марта 2024, 16:04

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Помогите с delphi 7!!
Помогите с delphi 7!!
020eeДата: Вторник, 24 Августа 2010, 14:10 | Сообщение # 1
был не раз
Сейчас нет на сайте
Я делаю программу,потом ее сохроняю и выключаю delphi а потом когда запускаю проект его запустить нельзя sad

Помогите плиз!

AngevengelistДата: Вторник, 24 Августа 2010, 14:19 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Чтобы сохранить нужно нажимать "Save All"
020eeДата: Вторник, 24 Августа 2010, 14:24 | Сообщение # 3
был не раз
Сейчас нет на сайте
Спасибо smile
Deadly-manДата: Пятница, 10 Сентября 2010, 10:29 | Сообщение # 4
Дай мне редимер!
Сейчас нет на сайте
Не буду плодить темы... Каким образом можно сделать что-то вроде твердых объектов? Т.е поставили два компонента, заставили один из них двигаться, он врезался во второй и остановился.
AngevengelistДата: Пятница, 10 Сентября 2010, 10:35 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Делфи это не конструктор игр.
Нужно описать физику объектов. Это элементарно.
Какой формы объекты?
Deadly-manДата: Пятница, 10 Сентября 2010, 18:11 | Сообщение # 6
Дай мне редимер!
Сейчас нет на сайте
Angevengelist, я знаю, я просто хотел сделать свой конструктор. А формы квадратной.
XimikSДата: Пятница, 10 Сентября 2010, 18:36 | Сообщение # 7
участник
Сейчас нет на сайте
тебе Drag&Drop чтоле?
ezhickovichДата: Пятница, 10 Сентября 2010, 18:59 | Сообщение # 8
[Великий и могучий хозяинъ]
Сейчас нет на сайте
Deadly-man, причём тут делфи - погугли и построй математическую модель задачи потом сможешь переписать её на любой ЯП - делфи тут не причём...


Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
Deadly-manДата: Пятница, 10 Сентября 2010, 19:11 | Сообщение # 9
Дай мне редимер!
Сейчас нет на сайте
ezhickovich, модель действий понятна - есть два объекта A и B. Если положение по оси X объекта A становится равно B.X + B.widht/B.X- B.widht , то объект A останавливается. Это просто. А как сделать так, чтобы не надо было описывать для каждого объекта такую процедуру.
ezhickovichДата: Пятница, 10 Сентября 2010, 19:35 | Сообщение # 10
[Великий и могучий хозяинъ]
Сейчас нет на сайте
Не хочу заикаться за делфи т.к. знаю его не очень хорошо...

Нуу... примерно так:

Допустим объект представлен так

Code
struct CObject
{
        bool isSolid; // Указывает твёрдый объект или нет...
        int x, y, width, height; // И так понятно...
        // --
        void OnCollision (CObject otherObject);
};

То есть у каждого объекта есть свойство solid которое указывает твёрдый он или нет...
И функция которая будет обрабатывать столкновение с другим объектом...

Также есть функция для проверки столкновения...

bool isCollided (CObject first, CObject secondID); // В которой и будет происходить проверка столкновений...

К примеру нам нужно проверить столкнулись ли два объекта ( к примеру объекты A и B )

Code
if (isCollided (A, B))
{
      A.OnCollision (B);
      B.OnCollision (A);
}

Это самый простейший пример ВООБЩЕ без примудростей...
Лучше поискать статьи на эту тему...



Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!


Сообщение отредактировал ezhickovich - Пятница, 10 Сентября 2010, 19:36
AngevengelistДата: Пятница, 10 Сентября 2010, 19:52 | Сообщение # 11
постоянный участник
Сейчас нет на сайте
Вообщем, самым лучшим советом будет, дать тебе статьи по которым я когда то учился.
http://pascalgames.net/index.php?action=articles;cat=10
Они именно для новичков, много написано не совсем точно. Но тем не менее работает. Как поймешь могу скинуть статьи и примеры по написанию физики
snamДата: Суббота, 11 Сентября 2010, 12:26 | Сообщение # 12
частый гость
Сейчас нет на сайте
Deadly-man. Не очень понятно, что тебе надо.
"А как сделать так, чтобы не надо было описывать для каждого объекта такую процедуру."
Описывать для каждого, естественно не надо, а вот прогонять, каждого через нее, увы, придется.
Вопрос другой, относительно кого?
Если герой и куча роботов, герой свободен, роботы заранее запрограммированы (рпг),
цикли всех относительно героя и нет проблем.
Если живой мир (реал время), билиардик типа, 100000 шаров и все в движении, как, (100000x100000)?
Решишь эту задачку - получишь нобелевку + полцарства.
Проверять каждого, относительно каждого, это даже для пошаговых игр - мощный перебор.
Прямых решений нет (?).

Но, когда то, кого то, осенило использовать двухмерный массив.
Представь, массив 50x50, цикл 50x50, проверяем каждую ячейку,
если 2 - рисуем в этой ячейке дерево,
если 5 - монстра и смотрим соседние с ним ячейки, если там проход - монстр бежит туда, стена - обходит, зайчик - обед.
если 6 - зайчик, опять смотрим его окружение, рядом монстр - зайчик делает ноги в свободную ячейку, если успеет, дело здоровья.
если 0 - свободно, 53 - стена.
На этом принципе строятся динамические игры, всякие кавеманы и бамбермены,
но игровое поле не может быть большим, появятся тормоза (двойной цикл).

Подход немного другой, Марио, тот же массив, но большой.
Здесь циклим только ту область массива, которая выводится на экране,
недостаток - все, что за пределами экрана - мертво.
Если Марио сдвинуть назад - вперед, он снова встретит ту же черепаху.

Все что выше, только для того, чтобы понять следующее.
Двухмерный массив 100x100 (мало), равносилен одномерному 10000 (это уже кое-что).
В каждой ячейке одномерного, один объект и все его характеристики, включая X, Y.
Круг замкнулся, опять та же проблема взаимодействия объектов.
И опять берем двухмерный массив, скажем 5000x5000 (=игровое поле), фишка в том, что циклить нужно только одномерный,
а двухмерный используется как база данных.
Каждый объект постоянно заносит туда свое местоположение и
проверяет близкое ему окружение (близкое! иначе тормоза), соответственно реагируя.
А как быть с дальними дистанциями? Типа 100 лазерных пушек ведут обстрел половины игрового поля.
Просто запоминаем X и Y (и еще что нужно) первого объекта, и сравниваем с остальными, когда
циклим одномерный массив, на следующем заходе, запоминаем и сравниваем второго, третьего и тд.,
(Но нельзя делать из этого двойной цикл!)
Для близких дистанций эта штука, увы, не подходит, слишком большая задержка на реагирование.
Должны быть и еще варианты (трансляторы слежения, нейронные сети...), но я их не знаю.

Deadly-manДата: Суббота, 11 Сентября 2010, 18:10 | Сообщение # 13
Дай мне редимер!
Сейчас нет на сайте
snam, Angevengelist, большое спасибо. Буду изучать.
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Помогите с delphi 7!!
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг