// вот это
for (y = 0; y <= 10; y++)
cout << j << " * " << y << " = " << j * y << endl;
counter++;
// работает вот так
for (y = 0; y <= 10; y++)
{
cout << j << " * " << y << " = " << j * y << endl;
}
counter++;
// а не вот так
for (y = 0; y <= 10; y++)
{
cout << j << " * " << y << " = " << j * y << endl;
counter++;
}
MrTomMus, тебе не нужен никакой counter, просто после каждого цикла добавь перевод строки.
И, пожалуйста, ставь фигурные скобки. Пок аты не умеешь программировать, тебе категорически нельзя "упрощать" код, удаляя необязательные структурные элементы. Ты сам себя путаешь и обманываешь. По отступу в строке counter++ очевидно, что ты себя обманул. Ставь фигурные скобочки. Всегда.
Илья, для теста попробуй отключить проверку столкновений и посмотреть производительность при увеличении числа объектов. Не может отрисовка сотни объектов тормозить отрисовку (ведь каждый объект это квадратный спрайт?).
Владимир Коротенко, и ни разу не видел в вакансии, чтобы требовались проекты в гитхаб. Тем более, будто других CVS нет и все обязаны пользоваться для личных проектов именно гитхаб.
Матвей Уваров, Отличие "студийной" консоли только в том, что там переменные среды настроены уже. Запуск vsvars32.bat и devenv.com должен, по идее, делать то же самое, что и 'developer command promt'.
Антон Жилин, В map ключи уникальны, поэтому ключ один раз и значения в порядке добавления (для этого ключа). А если именно "ключ-значение" в порядке добавления, то просто список/массив/хэш-таблица из std::pair.
Egorithm, Для таких целей пользовался несколькими коммерческими, но там подписка на сервис и довольно крупные суммы и требуется интеграция с кодом... даже советовать их не буду :)
Из не дорогих понравилась Enigma (https://enigmaprotector.com/ru/downloads.html), но ничего не могу сказать про степень защищённости. Пользовался ихней же Enigma Virtual Box, чтобы объединить несколько сотен файлов в один исполняемый, тоже весьма удобно.
В идеале, как выше уже написано, под каждый проект создаётся индивидуальная виртуальная машина и защищаемый код исполняется в коде этой виртуальной машины. Их сложнее взламывать, потому что каждое отдельное приложение приходится взламывать по новой - проще весь защищённый код переписать, если известно, что он делает. Поэтому защищается не только код проверки лицензии, но и какой-то относительно сложный код приложения... В особо продвинутых случаях защита происходит на сервере организации, у которой вы арендуете защиту, так что у взломщика даже бинарников генератора виртуальных машин нет.
Очень сомневаюсь, что бесплатно и опенсорсно есть хоть что-то относительно взломостойкое. С другой стороны, это С++ и оптимизирвоанный х64 дизассемблированный код сам по себе не очень приятен для чтения человеком :)
Egorithm, защита кода и лицензирование - это разное. Есть бесплатные утилиты для обфускации и защиты (например, Enogma Protector на базе VirtualBox), но это не имеет отношения к лицензированию. Вам же нужно продать лицензию, т.е. чтобы пользователь её оплатил и получил ключ, дающий доступ к полной функциональности. Желательно, чтобы это всё происходило быстро и без вашего участия, т.е. нужна инфраструктура: сервер и ПО с подключенными платёжными системами и генерацией лицензионного ключа.
Если же вся регистрация будет сводиться к оплате через условный paypal и вы вручную будете отсылать лицензионный ключ на почту покупателя, то можно всять любую бесплатную программу защиты кода. И уже в коде программы делат ьпроверку типа: string regCode="REGISTERED!!!!"; .... if( refCode == licenceKey )"
Если программа станет настолько популярной, что хакеры начнут её взламывать, то у вас уже будут средства для покупки нормальной системы защиты и лицензирования.
CaskaProVid, Есть бесконечное число вариантов реализаций. Суть в том, что нужно обеспечить взаимодействие разных объектов любым подходящим способом, но сохранение указателей на Car внутри Bomb очевидно не подходящий вариант. А все другие будут приемлемыми.
Для наблюдателя ещё нужно в объекты добавить свойство "explodable", чтобы наблюдать только за теми, кто в принципе может быть взорван.
Вариантов куча, единственного решения нет.
Артем Масиков, svg - векторные картинки. Они в любом размере будут чёткими. Странно, что сделано вперемешку... Раз png выглядят плохо (если просто файл открыть, не в приложении), то это явно художник плохо сохранил.
Артем Масиков, В любом графическом редакторе откройте картинку иконки и, если там виден этот артефакт (на белом/чёрном фоне), то его нужно стереть. А если не виден, то проблема уже на тапе отображения в программе.
Артем Масиков, По разном уделают. От "плевать, всё равно купят", до создания отдельных наборов картинок для разных разрешений.
Элементы интерфейса выравнивают относительно краёв и друг друга, при этом позволяя им в некоторой степени раздвигаться, если соотношение сторон изменяется. Как бы единого решения нет, кому что нужно, те так и делают. Это я гвоорю исключительно про программы с интерфейсом в виде растеризованных картинок. Если векторная графика используется, то там никаких проблем с размерами нет. Но в реализации обойдётся дороже, скорее всего.
Артем Масиков, Андроид смартфонов слишком много, опэтмоу под конкретное разрешение делать нельзя. Причём, ещё и соотношение сторон бывает разное.
Не знаком с figma, конкретно ничего не подскажу. Можно попробовать отключить фильтрацию текстур (bilinear filtering или как-то так называться будет). В этом случае не будет цеплять соседние фрагменты картинки, но может появиться заметная пикселизация. Учитывая исходное разрешение, может даже лучше будет без фильтрации.
Хотя, есть ещё вариант, что когда дизайнер делал картинки кнопок, то это у него лишние пиксели в картинку попали. Напрмиер, если он нарисовал всё в большом разрешении, а потом уменьшил с фильтрацией.
Артем Масиков, Если игра рассчитана на экран разрешением 1280*720 пикселей, а у вас больше или меньше разрешение, то могут появляться такие (и другие) артефакты.
Артем Масиков, спрайтшит большая картинка, в которой расположено куча маленьких картинок. Когда в программе задано, то нужно взять фрагмент с координатой x:0, y:0 и размером 30 на 30 пикселей, то, из-за билинейной фильтрации, может захватиться 31 пиксель. Если 31 пиксель отличается цветом от 30 пиксела, то появляется видимый артефакт.
Если же каждая картинка/иконка в отдельном файле, то непонятно, откуда появляются эти дефекты.