Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

А не устраивать ли нам небольшие конкурсы по кодингу? [Delphi, Windows]


Страницы:   1 2 ... 20 21 22 23 24 25 26 ... 52 53

Darthman ©   (2004-06-21 23:23:00) 

Собственно, а почему нет?
Смотрите: Объявляется конкурс, далее не позже какого-то срока идет "сдача" проекта с полными исходниками публике. Все аспекты можно оговаривать в условиях конкурса (использование наработок, чужой графики, vcl или api для вывода графики....).
Что скажите господа?

Если есть интересующиеся, то я как следует обдумаю вопрос и могу стать, собственно, устроителем этих конкурсов (мыслей у меня много).

ЧТо мы имеем с этого: Самое бесценное - обмен опытом. Легко - то что один сделает через зад, после опубликования исходников, он научится делать правильно (если другие все тоже через зад не сделали ;))) )


ПсихЪ_задумчивый   (2004-07-21 11:24:00) [441]

Э... ГЫ! Туплю, в общем... (:
Но всё равно вот это:

function Fast_Distance_2D( x : int; y : int ) : int;
var
 mn : int;
begin
 x := abs( x );
 y := abs( y );

 if x < y then
   mn := x
 else
   mn := y;

 Result := ( x+y-( mn shr 1 )-( mn shr 2 )+( mn shr 4 ) );
end;

быстре будет. Вызывается как:

Fast_Distance_2D( x1-x2, y1-y2 );


NailMan   (2004-07-21 10:55:00) [442]

ПсихЪ_задумчивый
> > sQ:=Sqr(v2.x-v1.x) + Sqr(v2.y-v1.y) + Sqr(v2.z-v1.z);
>
> Тут по твоему нет корней?

Как и сказал RagE - нету тут корней, хорошло могу написать так:

sQ:=(v2.x-v1.x)*(v2.x-v1.x) + (v2.y-v1.y)*(v2.y-v1.y) + (v2.z-v1.z)*(v2.z-v1.z);

те же яйца только в профиль...так даже быстрей получится - нет лишних вызовов функции


RagE   (2004-07-21 10:21:00) [443]

ПсихЪ_задумчивый   (21.07.04 09:23) [609]
Как бы ты не отказывался верить а нет :). корень sqrt а sqr это x*x.


ПсихЪ_задумчивый   (2004-07-21 09:23:00) [444]


> sQ:=Sqr(v2.x-v1.x) + Sqr(v2.y-v1.y) + Sqr(v2.z-v1.z);

Тут по твоему нет корней?


RagE   (2004-07-20 19:01:00) [445]

даешь конкурс :). а то сяду старые делать :)


Zer0   (2004-07-20 18:28:00) [446]

p.s. никаких оптимизаций, кроме прямого использования fpu =)


Zer0   (2004-07-20 18:19:00) [447]

ГыГыГы

в моей деме одновременно отбражались и сталкивались со с всеми физическими законами 120 обьектов в реальном времени. 30 фпс на p2-300.


NailMan   (2004-07-20 18:12:00) [448]

ПсихЪ_задумчивый
Чем тормозная? Ни одного корня, умножения и сложения/вычитания, двумерная реализация еще проще, откинув Z и вместо Single юзать Integer. Вообще получится быстрее поноса(понос на заметку быстрее мысли, а мысль мгновенна)  :-))


> За 3D плюсов не поставят

Даже и не надеюсь - просто мне так проще.

---
WBR, NailMan aka 2:5020/3337.13


ПсихЪ_задумчивый   (2004-07-20 18:04:00) [449]


> NailMan ©   (20.07.04 17:51) [603]

В конкурсах нет ограничений на раелизацию. За 3D плюсов не поставят. А приведённая тобой функция тормозная, как старая черепаха. Двемерная реализация этой функции есть у меня в исходники для второго конкурса.


NailMan   (2004-07-20 17:51:00) [450]

Красивости само собой - без этого никуда, только вот думаю 2Д реализация будет менее привлекательна в силу ограничения по размер итогового дистрибутива(анимация взрывов будет затруднительна).
Но это это добавит интригу - 2Д против half-3D(не путать с 2D-over-3D).

---
WBR, NailMan aka 2:5020/3337.13


NailMan   (2004-07-20 17:47:00) [451]

ПсихЪ_задумчивый
Простейшая инерция для играбельности не катит(я сейчас как раз занимаюсь правильной инерцией для своего UT).

Про столкновения - важно не отловить факт столкновения, а реакция на него, то есть опредилить вектор отражения, а это задача не такая уж простая(мне не так давно кинули примеры по вариантам с NeHe) в реализации. Сразу скажу я в процессе бития лбом о стену - учет инерции(оперирую угловыми скоростями) при столкновении с несколькими сферами(боунд-сфера только для уменьшения расчетов) - это тебе не хухры мухры.
Само собой просчет в конкурсной программке нужно только для одно сферы, но учет нормальной инерции даст свои коррективы на сложность(а втом и соль конкурсной программы).

Что же касается определения факта столкновения сфера-сфера(3D), то:

Function CheckCollisionSphereToSphere(V1:td3dvector;r1:single;V2:td3dvector;r2:single):boolean;
var sQ:Single;
begin
sQ:=Sqr(v2.x-v1.x) + Sqr(v2.y-v1.y) + Sqr(v2.z-v1.z);
If sq<=((r1+r2)*(r1+r2)) then  result:=true else  result:=false;
end;

V,r - Координаты центра и радиус соответсвенно.

Словами переводя формулу - если квадрат расстояния между точками в пространстве меньше либо равно квадрату суммы радиусов двух сфер, то типа столкнулись! Точность 100% с 50% вероятностью(true/false)...   :-))

Формула кажется Пифагора...

ЗЫ: Сорри за оффтопиковый код...по идее это секреты  ;-))

---
WBR, NailMan aka 2:5020/3337.13


ПсихЪ_задумчивый   (2004-07-20 15:52:00) [452]


> NailMan ©   (20.07.04 15:23) [600]

Да ладно, простейшая реализация инерционного движения занимает 2-3 строчки, а столкновение сфера-сфера упирается в нахождение расстояния между центрами. Быструю функцию нахождения этого расстояния предложил Андре Ламонт. Как для 2D, так и 3D реализации. Погрешность 3,5%, но скорость не впример высокая. Исключительно смещение битов, и никакх тебе корней.
Так что в таком задании можно будет сосредоточится исключительно на красивостях, что ни есть гуд.


NailMan   (2004-07-20 15:23:00) [453]

КиТаЯц ©
Да хоть так, только движение по инерции и правильная математика столкновений типа Сфера-Сфера не такие уж простые как кажутся в условия этой самой инерции.

К тому же если я и возьмусь за такой конкурсный проект, то делать буду только в half-3D(как у WildTangent-овской вариации) и под современное железо(поинтспрайты и т.д.) так что дохлые тачки судей как-то не катят.

---
WBR, NailMan aka 2:5020/3337.13


RagE   (2004-07-20 14:56:00) [454]

Ну так конкурс будет или нет?


ПсихЪ_задумчивый   (2004-07-20 10:05:00) [455]


> КиТаЯц ©   (20.07.04 09:40) [597]

ПЯТЬ БАЛЛОВ!!!(:


КиТаЯц   (2004-07-20 09:40:00) [456]


> 2Д плоскость. На поле летают по инерции астероиды, игрок
> представлен маленьким корабликом, который летая с большой
> инерцией должен рсстреливать астероиды. При попадании астероид
> разваливается на несколько меньших частей которые в сыою
> очередь могут также разделяться или уничтожаться совсем.
> При разрушении некоторых астероидов могут появляться бонусы(пупер-пушки
> или броня или лайфы). Также можно сделать каких-либо противников
> в виде дебиловатых корабликов или стац. пушек.

Я собственно это предложение так понял:
" К условиям прошлого конкурса добавить двидение игрока с инерцией и сделать "разваливание" врагов + бонусы" правильно?


Magikan   (2004-07-20 09:38:00) [457]

А почему бы не устроить конкурс на лучший алгоритм? Например, всей толпой написать физику самолета (машинки, ракеты и т.п.), а затем на имеющейся базе просто задавать алгоритм бота. И устраивать соревнования - чей самолет быстрее долетит, дольше продержится, всех замочит и т.д. Было бы очень интересно.


NailMan   (2004-07-20 09:23:00) [458]

DeadMeat ©

> По поводу Asteroids, а можно поконкретнее - чего это?
> И вообще по поводу конкурсов... Даешь демократию!! Давайте
> объявим все варианты конкурсов с их описанием, и путем голосования
> выберем один из них... Как вам такое?

2Д плоскость. На поле летают по инерции астероиды, игрок представлен маленьким корабликом, который летая с большой инерцией должен рсстреливать астероиды. При попадании астероид разваливается на несколько меньших частей которые в сыою очередь могут также разделяться или уничтожаться совсем. При разрушении некоторых астероидов могут появляться бонусы(пупер-пушки или броня или лайфы). Также можно сделать каких-либо противников в виде дебиловатых корабликов или стац. пушек.

---
WBR, NailMan aka 2:5020/3337.13


ПсихЪ_задумчивый   (2004-07-20 09:14:00) [459]


> Darthman ©   (19.07.04 16:48) [587]

Игры играми, но может всё-таки по кусочам?


> Zer0 ©   (19.07.04 21:01) [592]

По моему Пиксель-хантинг - это всё просто до неприличия. Главное сделать нормальную консоль и функции определения нахождения точки внутри области-полигона. Скрипты уже столько жуют в Сети, что даже неприлично спрашивать, как они делаются. Всё до безобразия просто, только выбирай свой метод и пиши код.


> Magikan ©   (20.07.04 02:55) [593]

Хорошая идея...

А СкорчедЙоз - сырцы можно найти здесь: http://chaos2.org/xscorch/

Не представляю даже, как это реализовывать на OpenGL...

Может быть "Морской Бой"? Уж в подобных играх есть где развернуться творческой фантазии. Хочешь стандартный МБ делай, хочешь наворачивай его до нельзя...


Magikan   (2004-07-20 02:55:00) [460]

Может, новую ветку для нового конкурса начать?


Страницы:   1 2 ... 20 21 22 23 24 25 26 ... 52 53

Наверх

Титульная страница Поиск, карта сайта Написать письмо