Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Подскажите нубу :) (2 стр)

Подскажите нубу :) (2 стр)

Поделиться
Страницы: 1 2
kvakvsПостоялецwww28 июня 201016:27#15
Pokimon
> Почему мой код лучше:
> 1) Мой код короче.
> 2) Мой код красив.
К тому же сложнее.
Следовательно, труднее читается.
Следовательно, поддержка твоего кода обойдётся другому разработчику в большее число трудочасов.
То есть, для групповой разработки не годится.
А для личного удовлетворения, да пожалуйста.

> 3) Мой код показывает глубокое знание языка.
Разрабатывая проект, не надо никому ничего показывать. Раз тебя уже наняли или взяли в проект - делай свою работу, и делай качественно.

> 2) Мой код выполняет условия задачи и не портит память, а ваш...
А это уж от невнимания.
Краевые условия надо проверять через >=, >, <=, <, иногда персонаж может скакать дальше чем на 1 пиксель, перескочит магическую клетку 15 и трындец.

PokimonПостоялецwww28 июня 201016:33#16
kvakvs
> К тому же сложнее.
> Следовательно, труднее читается.
> Следовательно, поддержка твоего кода обойдётся другому разработчику в большее
> число трудочасов.
Сложность конструкций, это проблема языка, а не программиста.
В Си сложность ограничена. Язык однозначен и не противоречив.

kvakvs
> Краевые условия надо проверять через >=, >, <=, <, иногда персонаж может
> скакать дальше чем на 1 пиксель, перескочит магическую клетку 15 и трындец.
Ф перлы!!
По вашему процессор может пропускать некоторые команды по своему хотению?
А может в планку памяти вставлен чип, который меняет 15 на 16?
Это компьютер. Тут не бывает случайностей, тут нет места предположениям.
Только четкая логика, которой учит Си.

kvakvsПостоялецwww28 июня 201016:43#17
Pokimon
> Ф перлы!!
> По вашему процессор может пропускать некоторые команды по своему хотению?
При чём тут процессор?
Если есть краевое условие, сделанное в виде ==, и даже кажется невозможным что координата когда нибудь перескочит краевое условие, она именно это и сделает, в самый неожиданный момент. Не потому, что процессор что-то там перескочит, а потому что программист забудет про это условие, и сделает персонажу например скорость 2 шага за нажатие клавиши. Ну допустим, пакман съел бонус ускорения.
Простые правила написания безопасного кода.
Хотя, с кем я спорю? ;)
PokimonПостоялецwww28 июня 201017:01#18
kvakvs
> Хотя, с кем я спорю?
С единственным адекватным человеком в этой теме.

kvakvs
> При чём тут процессор?
Это нужно спросить у вас. Вы же верите в духов, которые живут в компьютере. (SICP)

kvakvs
> потому что программист забудет
Так уволить его и все дела.
А что будет, если хирург забудет ножницы в кишках пациента?

В обоих профессиях нужны только профессионалы.

ashujonПостоялецwww28 июня 201017:07#19
Pokimon
> С единственным адекватным человеком в этой теме.
ты единственный кто адекватен на всем форуме
Noize_MachineПостоялецwww28 июня 201017:31#20
Pokimon ты так меня веселишь. Если ты считаешь что пишешь истинно верный и легко читаемый код, то почему ты нигде не работаешь а висишь на шеи у родителей? Ведь в твой список знаний наверное входит не только C, а еще длинный список технологий который ты освоил. Или все же твои знания оканчиваются книжкой К&R которую ты забыл перевернуть когда начал читать?
Noize_MachineПостоялецwww28 июня 201017:45#21
To kvakvs ты упомянул что пишешь на плюсах и python'e. С плюсами все понятно, интересно где используешь питон? если не секрет конечно
PokimonПостоялецwww28 июня 201017:56#22
Noize_Machine
> Если ты считаешь что пишешь истинно верный и легко читаемый код, то почему ты
> нигде не работаешь
Потому, что истинно верный код, как и настоящее искусство, никому не нужен.
Верность моего коа доказывать сложнее и дольше, чем написать его.

Noize_Machine
> Ведь в твой список знаний наверное входит не только C, а еще длинный список
> технологий который ты освоил
Ни одна технология или алгоритм, появившиеся после 1972г не являются верными, потому не достойны моего изучения.
Мои усилия направлены на изучения lisp, как равновеликого языка по сравнению с Си.

А еще мне лень работать и я хочу играть в BF:BC2 целый день.

kvakvsПостоялецwww28 июня 201018:04#23
Noize_Machine
> To kvakvs ты упомянул что пишешь на плюсах и python'e. С плюсами все понятно,
> интересно где используешь питон? если не секрет конечно
Код-генератор для моей модели данных в 2D казуалке (генерит модули для игры на С++ и редактора игры C#) чтобы работали с одинаковыми данными.
Встроенный скриптинг в 2D казуалке.
Тулзы разные вспомогательные по работе. Поиск по файлам, выборка файлов по папкам итд, разная фигня на 10-30 строчек.
Старый проект с серверным сетевым приложением на Twisted. Техподдержка.
Изучаю Django сейчас.
ZefickПостоялецwww28 июня 201021:06#24
kvakvs
> Сама по себе тернарная операция это нормально.
> Я про комбинацию трёх (!) операций в одной строке, а это уже ненормально.
  Вы ещё не видели этого: http://www.gamedev.ru/flame/forum/?id=134697#m6 Кто автор, думаю, сами догадаетесьф.

Pokimon
  Лучше вернись в тему про покиКонфиг, хватит тут уже жечь, или слил? Я там написал, что твой код не компилится, так тебя что-то после этого не слышно. Я проверял его пятью компиляторами и три отказались выдавать положительный результат. Хотя, нет, студией я всё-таки не компилил. Думаю, она ошибок не найдёт, поэтому заочно оценил её.
  Ещё если бы ты включил все предупреждения, то увидел бы, что компилятор во всю глотку орёт об UB в твоём коде. Мой код в этом отношении кристально чист.
  И ещё я за сутки написал свой конфиг, который превосходит твой как минимум по трём пунктам.
> 1) Мой код короче.
> 2) Мой код красив.
> 3) Мой код показывает глубокое знание языка.
  Четвёртый (или он у тебя там второй второй?) пункт оценить не могу, так как я не разбирался, портит ли там твой код память, или нет, но мой не портит.

Pokimon
> С++ позволяет писать еще больше операций в одной строке, потому как позволяет
> объявлять и инициализировать переменные где угодно.
  Ну попробуй:

int a = (int b=5) + 5;

Pokimon
> А еще мне лень работать и я хочу играть в BF:BC2 целый день.
  OH, SHI! В один прекрасный день ты сдохнешь под забором, вместо того, чтобы получать приличные бабосы, как все нормальные программисты. Как тебе такая судьба?

kvakvsПостоялецwww28 июня 201021:50#25
Zefick
> Вы ещё не видели этого: http://www.gamedev.ru/flame/forum/?id=134697#m6 Кто
> автор, думаю, сами догадаетесьф.
Поглядел, порадовался. Пацан к успеху идёт.
Куда там мне, с моими шаблонами и одним оператором на строку ;)
VolttПостоялецwww28 июня 201022:03#26
Pokimon
> Я конечно понимаю, что вы считаете себя очень крутым программистов и любите поучать всех, кто ниже рангом.
> Но я бы вам посоветовал для начала самому научиться программировать. Это просто. Начните с K&R
Когда человек делает заявления вроде таких, это говорит только о его собственных недостатках, говоря проще: "у кого чего болит, тот о том и говорит". Считать себя "крутым" глупо. Но я, например, написал и арканоид, и тетрис, и змейку. А ваш код страдает тем же, что и раньше -- ненужной неочевидностью.
> Вы конечно сейчас начнете выдумывать отговорки про то, что вы свой код не проверяли, да и вообще на улице +30.
Я умею признавать свои ошибки, даже глупые.
> Хороший программист пишет код без ошибок, без проверок и при любой температуре.
Хороший программист не кричит, что он хороший. "Кто сам выставляет себя на свет, тот не блестит" (c)
VolttПостоялецwww28 июня 201022:12#27
kvakvs
> Уже лучше ;) Как на мой вкус, конечно.
> А ещё магические числа в кейсах надо заменить на понятные константы, или символы:
Моей задачей было написать очевидный код :) Если бы писал я, то получилось бы что-то вроде (окончательный вариант ;))
...
char *map;
...
void SetCell(int x, int y, char cell)
{
  if (x >= 0 && x < MAP_SX &&
    (y >= 0 && y < MAP_SY)
  {
    map[x + y * MAP_SX] = cell;
  }
}

char GetCell(int x, int y)
{
  if (x >= 0 && x < MAP_SX &&
    (y >= 0 && y < MAP_SY)
  {
    return map[x + y * MAP_SX];
  }
  else return CELL_MAPOUT;
}

void MoveHero(int dx, int dy)
{ 
  if (GetCell(hero.x + dx, hero.y + dy) == CELL_SPACE)
  {
    SetCell(hero.x, hero.y, CELL_SPACE);
    hero.x += dx;
    hero.y += dy;
    SetCell(hero.x, hero.y, CELL_HERO);
  }
}
...
switch (key)
{
    case KEY_QUIT: exit(0); break;
    case KEY_MOVEUP: MoveHero(0, -1); break;
    case KEY_MOVEDOWN: MoveHero(0, 1); break;
    case KEY_MOVERIGHT: MoveHero(1, 0); break;
    case KEY_MOVELEFT: MoveHero(-1, 0); break;
}
Страницы: 1 2

/ Форум / Программирование игр / Общее

Тема в архиве.

2001—2017 © GameDev.ru — Разработка игр