- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
template <typename T> struct Pool { static std::vector<T> data; };
std::vector<tbphys::Body> Pool<tbphys::Body>::data;
std::vector<Ball> Pool<Ball> ::data;
std::vector<Wall> Pool<Wall> ::data;
std::vector<Bat> Pool<Bat> ::data;
std::vector<Brick> Pool<Brick> ::data;
template <typename T, typename U> struct List
{
typedef T Head;
typedef U Tail;
};
struct End {};
typedef List<tbphys::Body, List<Brick, List<Bat, List<Ball, List<Wall, End> > > > > Components;
typedef List<Brick, List<Bat, List<Ball, List<Wall, End> > > > DrawableComponents;
typedef List<Brick, List<Ball, List<Bat, End> > > MovableComponents;
const size_t badindex = size_t(-1);
struct GameBody
{
size_t self,body,bat,brick,wall,ball;
template <typename T> size_t& IndexOf ();
template <> size_t& IndexOf <tbphys::Body> () {return body;}
template <> size_t& IndexOf <Bat > () {return bat;}
template <> size_t& IndexOf <Brick> () {return brick;}
template <> size_t& IndexOf <Wall > () {return wall;}
template <> size_t& IndexOf <Ball > () {return ball;}
template <typename T>
T& AddComponent ()
{
size_t index = Pool<T>::data.size();
Pool<T>::data.resize(index+1);
T& result = Pool<T>::data[index];
result.hostIndex = self;
IndexOf<T>() = index;
return result;
}
template <typename T> void SetBadIndex ()
{
IndexOf<T::Head> () = badindex;
SetBadIndex<T::Tail> ();
}
template <> void SetBadIndex <End> () {}
};
Кстати, странно, что из той крестотемы до сих пор не выложили сюда говноиерархию из трёх крестоклассов, в которой тоже участвовали крестошаблоны.
но в порядке крестобреда можно и вот так сделать:
http://ideone.com/3nkale
где?
стасики тут как наиболее понятный мне способ представить данные так, чтобы было удобно сопоставлять типу данные. То есть чтобы можно было в шаблонном методе написать Pool<T>::data. что-то там...
В Аде вот шаблонные модули для этого лучше приспособлены.
body,bat,brick,wall,ball;
что это?
эти члены апдейтятся размером соответствующего массива минус один
> стасики
возможно, когда-нибудь ты отвыкнешь от глобальных переменных и однопоточности
Про глобальные переменные я где-то говорил уже.
Да про них все кому не лень говорят.
Update: А, так ты "за"?
и вычищать себя из массива им тоже не надо?
Всё правильно, но в уже ведь стадартизировали thread_local.
Хотя вряд ли Тарас имеет в виду это.
Осторожней.
Ведь сейчас где-то в крестоВселенной произошел сбой из-за деления на ноль, потом вылетел эксепшен и появилась новая черная дыра.
Ждём крестолюба ViktorB.
Хлопцi якщо зустрiнете його, то передайте нехай вже вирiшить хто ж вiн - Вiктор чи Павлiк.
Хотя, учитывая, что ТарасБ - воин света и добра, он возьмет банальное Кристиан или Христофор.
>ТарасБ - воин света и добра
Наоборот. Тарас - тролстлое, злое и безпощадное порождение Ады, а вот его брат-близнец как раз и должен быть добрым антиподом несущим свет, доброту и кресты в массы.
>Крестофор
for (int i=0;i<n;i++)
АХАХА НУБАС111
unsigned underflow и overflow (в отличие от их signed аналогов ) вполне определены стандартом (иначе как писать всякую криптографию и прочие байтоебства?), и ни в коей мере не являются UB. Так что это просто вечный цикл.
Но больше всего мне понравился шаблонный инклуд: include<iostream>
http://ideone.com/5nVzSE
>int i : boost::irange(0, n)
Неявное признание бустовцами того факта что питоновский for хорош, а for(;;) не нужен и может быть заменен while ( ну за исключением области видимости счетчика).
Там же другой, императивной версии forа, которая сахар над while loop нету?
ну всё пиздец, теперь запрещено называть дельфинов дельфинами, крестопроблемы - крестопроблемами, а негров - неграми
уютненький остаётся последним оплотом здравого смысла и всеобщей доброты
а что плохого в назойливых крестопроблемах, кроме того, что они неразрешимые и ежедневно колют глаза?
или в гладких и добрых дельфинах, которые так радуются, когда им почешешь лысую голову...
кого это способно обидеть?
Мои оппоненты неоднократно по старой привычке употребляли слова "да ты просто тупой дельфин, потому и не шаришь", ну и я решил, что у меня есть прекрасная возможность не тратить нервы на них, а просто сообщать обо всех случаях тому самому модератору, что выдал мне крестобан.
После, кажись, третьего моего забаненного оппонента модератор и создал тему, что на дельфинов наезжать нельзя. Видимо, обеспокоился переполненностью тюрем.
и ведь теперь никто не узнает о новых крестопроблемах, старые со временем позабудут, упоминание дельфей в мировом интернете станет в точности 0 - что же ты наделал?
И мне плохо не будет, я про крестопроблемы и так могу рассказывать, только не так толсто, ну и что?
Например, тут http://www.gamedev.ru/flame/forum/?id=169332 я разве на кого-то наехал?
посмотри, даже у нуба недостаточная степень батхёрта
и вообще, флейм без дельфинов и крестопроблем - секс с резиновой женщиной в противогазе
Щикарно > Ссылка на массив из указателей на int.
>ну всё пиздец, теперь запрещено называть дельфинов дельфинами, крестопроблемы - крестопроблемами, а негров - неграми
http://www.gamedev.ru/flame/forum/?id=169380
А вообще кто-ты такой? Как ты раньше меня заметил тему? Я заметил только после твоего поста.
Пойду читать. Запасся попкорном.
Позабавило сходство говнокода с holywars.ru и сайтом про PHP.
А геймдева к сожалению нет.
P.S. У тебя объявлены typelists, но они нигде не используются. Запости код, в котором они используются, наверняка там можно словить лулзов.
Вызывается это просто: SetBadIndex <Components> ();
Вот начало этой веселухи: http://www.gamedev.ru/flame/forum/?id=167890
Правда возникают вопросы: "А нахуя?" и без конкретного примере непонятно зачем такое говно вообще надо?
Дальше по треду запахло фабриками фабрик и я перестал читать.
Я хотел сделать богомерзские полиморфные объекты с виртуальными функциями, но магистр Крестосвета Пушков наставил меня на путь истиный.
Сначала я для каждого типа компонента писал свою процедуру добавления, потому что они по разному назывались и объединить их во что-то единое не получалось. Но я вспомнил про специализацию шаблонов и смог на списках типов сделать то, что хотел!
А чо. На геймдеве тоже есть хороший контент.
Но к сожалению это ни разу не игры.
PS. Тебе как раз на аву соёдет.
Если бы я по-прежнуму был жалким дельфином, я бы за эту неделю добавил уровни, всякие фичи, запилил бы меню и бонусы, а кому это надо? Кому бы я потом смог похвастаться на форуме своей изъёбистой архитектурой? Ну ладно, если я это делаю для себя, а если бы я это делал по работе, то чем бы я ебал мозг заказчику? Только С++ предоставляет программисту возможность заполнить написанием программы сколько угодно длительный промежуток времени! В С++ есть для этого всё: куча различных возможных извращений, долгая копиляция, хитрый синтаксис, возможноть поделить 1 на 2 и получить ноль.
А Дельфи... Чем может похвастаться это галимое убожество?
Непонятно другое - "за что банить?". Это ж весело читать.
>Только С++ предоставляет программисту возможность заполнить написанием программы сколько угодно длительный промежуток времени!
Parkinson law in action.
> Да, а ещё отсутствие проверок в vector::[] даже в отладочном режиме
У тебя же какая-то древняя студия. Они в какой-то момент переключились на STLPort, там есть макрос _STLP_DEBUG, который включает такую проверку.
И сдаётся мне, на проектах такого размера (который пишется в 1 рыло) его и не будет.
И да, дело тут скорее не в С++, а в чём-то более глобальном.
я ж не катадин предлагаю
>тады тока обжЦе
Он про Андроид
У меня украинский типоойпад. Покетбук называется.
и самое шикарное: www.stepgames.ru/node/233
> Bat
> Wall
> Ball
назвали Аркашей
Зачем усложнять себе жизнь и писать лишний код, если можно возложить рутинную работу на компилятор и стандартные библиотеки? Let's robots do the dirty job.
Вызов виртуальной функции это переголова
Жаль, что работает лишь для функций 1 параметра
Божественный язык...
О камень так хватила их,
Что только брызги засверкали.
Спасибо, пофапал.
3 против
настоящее искусство никогда не бывает однозначно хорошим!
Так даже в убогой джаве можно с женериками дойти до безумия.
#11878
У меня много раз на практике были случаи когда женерики давали отрицательный кпд - собственно когда у класса 3 и больше параметра - это уже хуйня.
Иногда проще их не писать, заткнуть ворнинг и откастить явно, кода всего-то навсего 3 буквы.
> (T)
Чем дрочиться с кучей женериков, которые в яве далеко неидеальны. Тем более там нету var, auto что добавляет пиздеца.
http://habrahabr.ru/post/153225/
http://eax.me/haskell-bread-task
http://habrahabr.ru/post/153845/
Не в тему, но тоже оверинжининг. Тебе должно понравится.
И снова сорри за хаброту.
> язык
А посоны и не знали...
http://ru.wikipedia.org/wiki/Delphi_(язык_программирования)
Мой уютный мир навсегда разрушен ;(
Можно даже с передаваемыми аргументами дойти до безумия.
Кстати тоже эмпирическое правило - когда в методе более 3-х аргументов в большинстве случаев он говно.
Но из этого ж не следует что языки допускающие 42 аргумента - говно.
А языки где можно передать только 1 аргумент - оптимальны.
Это был типа намёк на биндинг и карринг.
показательно
откуда инфа? где почитать?
Конечно, план и начальный дизайн (мне кажется правильным слово "модель") очень нужны, без них вообще ничего не сделаешь. Но это не тот уровень, где нужны шаблоны: тут нужно выделить сущности, разработать алгоритмы и принять ограничения, наложенные на систему. Но до абстрактных фабрик, в моём представлении, на этом уровне дело дойти не должно.
Мне близок подход "bottom up", исповедуемый многими практиками. Сделай сначала что-нибудь, а потом уже улучшай, дорабатывай и выделяй абстракции. Главное - не бояться переписывать код.
так что все крестобляди, джавобляди и шарпобляди (прости, Тарас, дельфей там почему-то нет, хотя есть даже кобол) могут найти интересующую их линейку и бесплатно без смс (но с регистрацией) замерить и сравнить с эталоном из палаты мер и весов
http://www.brainbench.com/xml/bb/common/testcenter/freetests.xml
P.S. Вот интересно, что не так в этих строчках: Варианта "все три нормальны" не было.
Спасибо!
3 минут не хватает чтобы расписать на бумажке кто от кого и в каком порядке
ну и у них там есть явно бажный пример, когда минимум два варианта верны:
мол, выберите, что не скомпилируется
char s[] = "string";
char * const cp = s;
cp[3] = 'a'; // компилируется
std::cout << cp << std::endl;
char * p;
const char * const ccp = p; // аналогично
P.S. Или там полно похожих вопросов?
выберите, что скомпилируется
я еще ведь не такой старый, нееет!
Да Вы зажрались, товарищ.
С 4.67 в топ-10 по абсолютному\региональному рейтингу не вошли случайно?
у меня 3 и 4.76
потом начал проходить второй раз, вопросы очень сильно повторяться начали, неспортивно
Даже если второй вариант удалить, то при инстанцировании при выборе между 1ым и 3им должна быть амбигити. Так что эти варианты нормальны только по отдельности. Как разные перегрузки не канают.
типа foo<int, int>(...)
в общем случае компилятор съест это определение
а 1 + 2 не съест уже просто после декларации
но вопрос стоял именно так - в каких из этих трех строк компилятор начнет ругаться уже сейчас
а дельфийный отдел до сих пор не может нового сотрудника найти
даже с целью дообучить в процессе
да думаю, такая проблема везде, где осталась разработка на дельфях
базы данных дельфинам разрабатывать никто не даст, но понимать, как вызвать по имени хранимую процедуру и отобразить полученные данные в гриде он должен
на дельфях сейчас только и делают, что толстые клиенты, ты не знал?
игры на дельфи?
тотол коммандёр безплаттно без смс?
на самом деле, знание теории бд и практики очень помогает в жизни и прибавляет к зарплате
но наши дельфины самостоятельно sql не пишут, более того, это порицается
только вызов хранимых процедур, заботливо написанных для них нашими ораклоидами
только хардкор
Можно даже не учить ЯП, а знать только бд и прилегающие декларативные языки... Никогда не забуду одного BI девелопера, который при виде .NET кода в скриптах сразу умывал руки.
> только вызов хранимых процедур, заботливо написанных для них нашими ораклоидами
blessed way by Microsoft and Oracle inc. для толстых клиентов
> только хардкор
Хардкор был бы в прямых запросах к БД.
Только из-за того что все повымерли и/или переучились на пыху с решеткой.
Хитрый план Тараса?
знакомый кума свояка на базаре слыхал, что на Коболе всех съели и запили сайлонским чаем
жирный капитализм в том и состоит, что пока есть дойная корова (бизнес-продукт на коболе, до сих пор приносящий прибыль), будут нужны единицы 1/млн, чтобы это говно поддерживать
как и в прочих городских легендах присутствует правдоподобный элемент - GB не самое приятное место в плане налогов
на самом деле
> с целью дообучить в процессе
также означает потолок вознаграждения
вот и не клюет
зарплаты рыночные, московские
придет готовый опытный специалист - будет получать по рынку как готовый опытный специалист
придет перспективный - будет получать как перспективный
это наводит на мысли о том, что у вашего CFO свое особое мнение о рыночных зарплатах
если даже стажеров позиция не привлекает...
себе нового крестовика я нашёл за 2 недели, как была дана отмашка - в связи с расширением срочно найти траляля
в консалтинг тех писателя нашли за месяц
даже нового тестера нашли
а дельфины всё ищут, вот уже 2 месяца ищут
какая сейчас рыночная зарплата для приличного дельфина, принимаемого на работу? - 70-120к, я думаю
для малограмотного дельфина - в районе 50, плюс минус десятка, в зависимости от его малограмотности
т.е. вряд ли сильно отличается от вилок для с++
и да, за эту волну собеседований я таких образчиков насмотрелся, что таких стажеров я бы и за бесплатно не взял