1. Objective C / Говнокод #17947

    −425

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    [self.userView sd_setImageWithURL:[comment.sender avatarThumbnailURL] placeholderImage:[UIImage coloredAvatarWithId:[NSString stringWithFormat:@"%lld", comment.sender.idValue]
    																									 andName:comment.sender.firstName
    																									  ofSize:CGSizeMake (57, 57)]];
    
    	self.dateLabel.text = [self tsFromDate:comment.createdAt];
    
    	[self.dateLabel sizeToFit];
    
    	if (comment.sender == [SWCore account])
    	{
    		self.balloonImage.image = [[UIImage imageNamed:@"in_baloon"] resizableStretchedImageWithCapInsets:UIEdgeInsetsMake (20, 50, 20, 50)];
    
    		self.messageLabel.textColor = [UIColor colorWithWhite:.4f alpha:1.0f];
    
    		self.userView.left = 20;
    		self.balloonImage.right = 300;
    		self.dateLabel.right = self.balloonImage.right;
    		self.dateIcon.right = self.dateLabel.left - 3;
    	}
    	else
    	{
    		self.balloonImage.image = [[UIImage imageNamed:@"out_baloon"] resizableStretchedImageWithCapInsets:UIEdgeInsetsMake (20, 50, 20, 50)];
    
    		self.messageLabel.textColor = [UIColor whiteColor];
    
    		self.userView.right = 300;
    		self.balloonImage.left = 20;
    		self.dateIcon.left = self.balloonImage.left;
    		self.dateLabel.left = self.dateIcon.right + 3;
    	}

    Мастерское владение размерами

    Запостил: shadeapps, 06 Апреля 2015

    Комментарии (138) RSS

    • показать все, что скрытоПфф. Это так, детский лепет. Вот я - видел некоторое дерьмо: http://pastebin.com/UaTdN6K2
      Ответить
    • показать все, что скрытодумается поставлю ка я минус:
      1)проект небось без autolayout?
      2)думаете цифр много, не объявленных константами? Программировал одну игру со сложным поведением врагов. Если бы я все цифры там объявлял константами, то они бы занимали больше места, чем использующий их код
      Ответить
      • показать все, что скрытоСложное поведение врагов и много цифр это типа километровые простыни ифов? :)
        Ответить
      • показать все, что скрытоО, это еще один уверовавший в живительную силу констант.
        Смысл недовольства произвольными числами в коде не в том, что они не поименованы какой-то константой, а в том, что они выбраны произвольно. В хорошем коде числа редко когда случаются просто так, от того, что где-то нужно было задать отступ, или кнопку подвинуть, или ХП противнику добавить. Они должны получаться из темы для скина, ограничений разметки, событий в игре.
        Ответить
        • показать все, что скрытода, щас. Нужно было заставить врага двигаться по проекции винтовой линии на произвольную плоскость (или какой-то похожей траектории):
          http://alldrawings.ru/images/nachertalka/10.10.27353a3c30403532%20-%201d30473540423042353b4c3d304f%2033353e 3c354240384f%2038%2047354047353d3835.%20 476%20414240.,%201c.;%20131826%20123b303 43e41,%202002-82.png

          ну давайте - выведите мне формулу или хотя бы кодом. Сразу говорю - не синусоида и не косинусоида из википедии, потому что плоскость произвольная, под произвольным углом - получаются петли
          Ответить
          • показать все, что скрытоhttp://alldrawings.ru/images/nachertalka/10.10.27353a3c30403532%20-%201d30473540423042353b4c3d304f%2033353e3c354240384f%2038%2047354047353d3835.%20476%20414240.,%201c.;%20131826%20123b30343e41,%202002-82.png

            fxd

            P.S. Ну офигеть нравы у ньюфагов... Я из ссылки лишние пробелы убрал, из-за которых она не открывалась. А мне за это минус въебали.
            Ответить
          • показать все, что скрыто> выведите мне формулу
            Наклон - аффинное преобразование, описывается матрицей 3х3. Винтовая линия - (r*cos(t); r*sin(t); h*t). Умножаем этот вектор на матрицу, отбрасываем z, получаем проекцию. Всё. Код/формулы писать лениво.

            Какие тут цифры то, помимо входных данных да π?
            Ответить
            • показать все, что скрытоВходным данным можно считать только точку и направление движения. Радиус, углы наклона к плоскости, коэффициенты сжатия траектории - это "тип врага". А враг еще должен быть направлен по касательной к этой траектории. А теперь представим, что врагов только такого типа подвидов штук 10 - различающихся параметрами данными и где-нибудь кроме класса такого врага их хранить нецелесообразно и они нигде не используются кроме одного метода инициализации. А теперь представим что это не единственный вид врагов, потому что игра не тетрис...
              Вот и получайте 100500 констант, каждой из которых вы хотите завести отдельную переменную/название

              но спасибо за идею - когда-то когда писал эту игру, то не додумался использовать 3D матрицы, кстати для этого случая лучше сразу 4х4 брать
              Ответить
              • показать все, что скрыто> кроме одного метода инициализации
                Ну так эти константы в методе инициализации раскладываются куда надо, а не прямо посреди формул зафигачены. И у них имена уже есть, раз их в какие-то поля разложили.

                > 4х4
                Чтобы сдвиг ей же считать? Резонно.

                P.S. Хотя я бы постарался вынести эти константы в конфигурашку, чтобы легче было править потом.
                Ответить
              • показать все, что скрыто> А теперь представим, что врагов только такого типа подвидов штук 10 - различающихся параметрами данными и где-нибудь кроме класса такого врага их хранить нецелесообразно

                Хранить их целесообразно именно так, как и сказал @wvxvw - в виде ресурсов для игры.
                Ответить
                • показать все, что скрытоМне ещё интересно, почему такое странное разделение... Почему точка и направление - входные данные для алгоритма, а остальные параметры, хоть и неизменные для данного типа врагов, внезапно, не считаются входными данными.
                  Ответить
                  • показать все, что скрытоА вы каждый раз когда создаете врага, то указываете ему вручную все параметры движения снаружи класса?)) Ну тогда понятно почему не согласились с предложенным мной вариантом. Может вы еще и массивом передаете эти константы, чтобы потом распарсить?

                    Имен у "одноразовых" констант у меня нет, есть только названия переменных, которые хранят значения (как например в приведенном коде) - несколько констант на такую переменную. И есть название набора переменных - например пачка параметров для типа врага - генерирую наборы констант в зависимости от предложенного типа.

                    4x4 - то же самое преобразование в 3D, только позволяет перемножить все матрицы в одну

                    Целесообразно константы в виде ресурсов? То есть мало того, что вы им сочиняете названия - так еще сделать их глобальными, незащищенными и тратить время на считывание из файла?
                    Ответить
                    • показать все, что скрыто> тратить время
                      Рядом грузятся мегабайты картинок и звуков, а мы экономим на сотне байтиков...

                      > А вы каждый раз когда создаете врага, то указываете ему вручную все параметры движения снаружи класса
                      Да какая расчетному методу разница, откуда берутся эти числа? Хоть рандомом придуманы, хоть с файла загружены, хоть в конструктор захардкожены (твой случай)... Для него они точно такие же входные данные, как и координата и время. В сам расчетный метод не захардкожены - значит входные данные.

                      > Целесообразно константы в виде ресурсов?
                      Еще как целесообразно! Что-нибудь типа (сильно упрощено):
                      enemy_types: [
                          {
                             name: "bug";
                             hp: 5; damage: 5;
                             behavior: "spiral_move"; speed: 5; spiral_skew: 0.5, spiral_radius: 50;
                          }, {
                             name: "bugger";
                             hp: 20; damage: 10;
                             behavior: "spiral_move"; speed: 3; spiral_skew: 0.7, spiral_radius: 100;
                          }, {
                             name: "buggest";
                             hp: 200; damage: 50;
                             behavior: "buggest_boss"; speed: 1;
                          }
                      ]
                      Ответить
                      • показать все, что скрытодля начала на ТЫ мы еще не переходили

                        то есть вместо того, чтобы как-то объединить типы ты хочешь все хардкодить? Тогда тебе сюда (подраздел "китайский код":
                        http://lurkmore.to/Индусский_код
                        Ответить
                        • показать все, что скрыто> для начала на ТЫ мы еще не переходили
                          Здесь 99.99% людей общается на ты.... Ничего личного, просто дефолтное обращение.

                          > ты хочешь все хардкодить
                          Ну где же я захардкодил? Я вынес все настройки во конфиг, чтобы их могли крутить не программисты. Общее поведение я убрал в behavior'ы.

                          Может быть я неправильно понял Вашу идею про константы в методе инициализации? Можно как-то поподробнее её расписать?

                          > китайский код
                          Оверинжиниринг скорее, если игрушка несложная.
                          Ответить
                        • показать все, что скрытоP.S. Сейчас я понимаю Вашу идею как что-то из:
                          - есть базовый класс для типа врага (в котором и инкапсулирован расчётный метод), есть его потомки для подвидов, у которых в конструкторе заполняются поля, которые будут юзаться при расчете;
                          - есть класс для типа врага, которому в конструктор передаётся подвид, и там какой-нибудь switch, заполняющий поля, которые будут юзаться при расчете.

                          Я всё неправильно понял, наверное?
                          Ответить
                        • показать все, что скрыто>>для начала на ТЫ мы еще не переходили
                          >>ты хочешь все хардкодить?

                          ЧСВ овер 9000
                          что позволено юпитеру не позволено быку
                          Ответить
    • показать все, что скрытоКажется, что кто-то разгулялся не на шутку? Часто тут такое бывает?)
      Ответить

    Добавить комментарий