![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
А не устраивать ли нам небольшие конкурсы по кодингу? [Delphi, Windows]
Darthman © (2004-06-21 23:23:00)
Страницы: < 1 2 ... 20 21 22 23 24 25 26 ... 52 53 >
Собственно, а почему нет?
Смотрите: Объявляется конкурс, далее не позже какого-то срока идет "сдача" проекта с полными исходниками публике. Все аспекты можно оговаривать в условиях конкурса (использование наработок, чужой графики, 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]Может, новую ветку для нового конкурса начать?