Иаков
потому что с рендерингом там было много возни
Типо, это упрощает написание таких штук?
Bogdan
у него там были определенные траблы которые оказалось невозможно решить без влезания в ансейф код
Иаков
А то там нужно Console.ForegroundColor... Потом позиции курсора.. Не удобно и муторно...
Bogdan
в консоли ты даже шрифт не поменяешь без ансейфа
Bogdan
ну в плане в коде шрифт, через саму винду поменяешь
Иаков
не все так просто)
Хм? А, вот как сделать так, чтоб в cmd был фон, конкретно в одном месте одного цвета, а поверх текст
Иаков
Тоже unsafe?
Bogdan
но некоторое понадобиться через ансейф
Igor
ну в плане в коде шрифт, через саму винду поменяешь
Еще раз для таких вещей есть либы не нужно придумывать себе проблемы
Иаков
но некоторое понадобиться через ансейф
А как поменять цвет шрифта через hex в шарпе?
Bogdan
А как поменять цвет шрифта через hex в шарпе?
зачем, цвет шрифта можно поменять и на уровне взаимодействия с system.console
Bogdan
а я понял что ты имеешь ввиду, не я не в теме
Bogdan
я таким не занимался
Bogdan
как он это всё делает я до конца тоже не знаю
Сергей
всем привет, может кто помочь с intellij IDEA, при запуске программы в консоли кириллица выводится или набором символов, или знаками с "?", заходил в настройки (File Encodings) и как только не менял кодирование, все варианты которые нашел в интернете перебрал, работает через раз, или только на 1 запуск программы, при повторном снова выдает тарабарщину
Vyacheslav
всем привет, может кто помочь с intellij IDEA, при запуске программы в консоли кириллица выводится или набором символов, или знаками с "?", заходил в настройки (File Encodings) и как только не менял кодирование, все варианты которые нашел в интернете перебрал, работает через раз, или только на 1 запуск программы, при повторном снова выдает тарабарщину
Это общие проблемы кодировок Вообще не к ide вопрос В какой кодировке программа и в какой кодировке система? (Консоль то к ide отношение слабое имеет) И ещё неплохо знать что в utf-8 кириллица хранится в виде двухбайтовых значений, а не однобайтовых
Сергей
так смысл в том что я настройки выставляю и текст отображается нормально при запуске программы в консоли, снова жму на ран и текст начинает болеть
Bogdan
на русском пишешь текст?
Bogdan
если да то надо ещё прописывать в коде локализацию
Mr.
Народ и что по этому коду посоветуете? Как написан? #cpp https://github.com/HamitMagic/game_change_XtoO/blob/main/game.cpp
Mr.
Какие ошибки там есть в плане чистоты кода и ревью
Михаил
Какие ошибки там есть в плане чистоты кода и ревью
if (x-1 >= 0) { change_one_cell(field, x-1, y); } я например очень редко пользуюсь >= <=
Mikhail
У примерно 6% людей, если даже считать 1 аккаунт = 1 пользователю. Странное у вас “почти все”.
Михаил
Ну, а что с этим не так?
типа if (x > 0) или вообще if (x), если x неотрицательный
Иаков
типа if (x > 0) или вообще if (x), если x неотрицательный
Так. Ну, я насчет такого хз. В шарпе я таких конструкций не писал. Типо, там frue и false это не может быть переведено в число. Окей, в принципе...
Mr.
типа if (x > 0) или вообще if (x), если x неотрицательный
Ну if (x) я не понимаю конструкцию. И со знаком условия читается кажется проще. А знак <= или >= потому что там так надо
Михаил
Ну if (x) я не понимаю конструкцию. И со знаком условия читается кажется проще. А знак <= или >= потому что там так надо
а ок. Ну if вроде так работает: int пребразуется к bool, а все целые числа в которых есть хотя бы 1 ед. считаются true
Иаков
а ок. Ну if вроде так работает: int пребразуется к bool, а все целые числа в которых есть хотя бы 1 ед. считаются true
Ну. Мне кажется, для лучшей читаемости лучше использовать по классике >, <, =
Mr.
Ну. Мне кажется, для лучшей читаемости лучше использовать по классике >, <, =
Учу..... Но работа с памятью в динамических массивах меня убивает. Часто забываю чистить. Ну там же идёт проверка на край поля. Поэтому так. А первый элемент массива это нулевой индекс
Евгений
Ребят, всем привет. Я сегодня изучал рекурсию в C# на метаните, попалась задача с числами Фибоначчи. Сам принцип работы вроде как понял, но стало интересно, как компилятор определяет, какое число находится под N-ым элементом. Объясните, пожалуйста, как он определяет это? Гуглю и не могу ничего найти
Михаил
вообще самая большая ошибка- using namespace std, за использование такого в хедерах по голове настучат. Вот включаешь этот файл в проект, и получается что во всем остальном коде используется namespace std, например. И возникнет конфликт имен
Mr.
Если использовать x > 0 тогда придется и в другом блоке ИФА использовать x < size но дописывать -1 там. А так везде дописал и где то подписал строго больше или больше или равно
Иаков
Ребят, всем привет. Я сегодня изучал рекурсию в C# на метаните, попалась задача с числами Фибоначчи. Сам принцип работы вроде как понял, но стало интересно, как компилятор определяет, какое число находится под N-ым элементом. Объясните, пожалуйста, как он определяет это? Гуглю и не могу ничего найти
Ну, смотрите. Как-то изучал. Тоже не понятно было. Вроде, более менее понятно, но я тебе обяснить не смогу. Вроде, это связано со стэком. Когда условие совершается, водвращается значенин, а потом в обратном порядке идет возвращение. Каждый предыдущий вызов результатом функции имеет другую функцию... Короче... Я где-то рисовал штучку. Ща покажу
Михаил
if (x > 0) делает то же самое, что и if (x - 1 >= 0). Только если использовать это с unsigned числами, в первом случае все пройдет верно. А во втором случае, если число нулевое, оно превратится в 4294967295. И окажется что оно >= 0.
Mr.
вообще самая большая ошибка- using namespace std, за использование такого в хедерах по голове настучат. Вот включаешь этот файл в проект, и получается что во всем остальном коде используется namespace std, например. И возникнет конфликт имен
Про это недавно только узнал. Но на cpp не планирую оставаться. Это способ разобраться со многими вещами и глубже погрузиться в логику компьютеров. Если так сказать можно
Михаил
Поэтому там int
только из-за этого ограничения? кто это задал, сделать исключительно с >=
Mr.
Так лучше разве будет?
Mr.
Но в функцию надо передать именно x-1 поэтому мне надо проверить именно х-1
Михаил
Так лучше разве будет?
в сравнении с нулями, да. А в сравнении с size- ошибка. Оно-то и так было <
Михаил
Но в функцию надо передать именно x-1 поэтому мне надо проверить именно х-1
при выполнении x+1 x-1 переменная не меняется. Меняется при x++ x-- ++x --x и других подобных
Mr.
Мне ее менять не надо. Мне только поле по координатам x, y надо поменять значение. Это проверка координат И если координаты выходят за рамки поля то не менять значение только для этого
Mr.
Ничего. Но если я передаю в функцию х-1 то мне кажется я должен именно это поле проверить. А оно согласно массивам должно быть >= 0
Евгений
Вот, рисовал для себя, как рекурсия работает. Такое нужно было?
блин, что-то не очень у меня идёт понимание этого. Попробую завтра, а то скоро голова закипит😅
Михаил
Ничего. Но если я передаю в функцию х-1 то мне кажется я должен именно это поле проверить. А оно согласно массивам должно быть >= 0
Там в функции x определен как ссылка на константу. Он в принципе не может изменяться, только создаются временные переменные со значениями x+1 x-1 и сразу удаляются
Mr.
Я и говорю что передаю координаты и если условие тру то идёт работа с элементом внутри массива двумерного
Mr.
Ок как художники говорят.... Я так вижу 😂
Mr.
Но кроме этого нормально написан код? По сравнению с кодом на питоне где куча ифов.....
Михаил
Но кроме этого нормально написан код? По сравнению с кодом на питоне где куча ифов.....
еще можно в функцию передавать не ссылки, а сами инты. Щас ссылки доръого делать, они весят 64 бита (в соответствующих прогах), к тому же при каждом доступе к x ссылку приходится разыменовывать. А инты весят 32 бита, и сразу из регистров достаются. Целесообразно (и нужно) делать ссылки для объектов классов, структур, которые весят по 24 байт и более.
Михаил
Ого. Не знал. Вот спасибо я почему-то думал ссылка весит 2байта
можно проверить в проге std::cout << sizeof(void*) и покомпилировать разными компиляторами. ответы будут 4 и 8
Mr.
Инт 32 байта. Ссылка же меньше. И объект говоришь от 24 байт. Но инт больше 24байт
Иаков
Сейчас попытаюсь понять
Считай, что квадратик - это функция. func(a) { if (a <= 2) { return 2; } return a // это прошлая переменная, короче + func(a - 1); // каждый вызов - это каждый новый квадратик, который уменьшается, пока это не станет просто значением (2). Затем это будет результатом функции, затем это кваадратик исчезает, и это значение передается в квадратик побольше. 3 + (2). значение 5. Это передается в квадратик ещё больше. 4 + (5), потом ещё больше 5 + (9), это был последний элемент стека вызовов функции func. результат 14.. }
Иаков
Соре, что так долго. Сам вспоминал... Ахахахах....
Иаков
Так... Я слегка с обьяснениями накосячил. Сейчас подредачу...
Mr.
С теми квадратиками надо просто на видео сделать и тогда яснее будет
Иаков
Емаё... Я аж вспотел, пока вспоминал...
Иаков
С теми квадратиками надо просто на видео сделать и тогда яснее будет
Да там нужно с дебаггером пройтись по функции. Тогда понятнее станет. Надо ещё смотреть на цепочку вызовов функции и на стэк
Евгений
Что-то уже начинаю понимать, спасибо Вам большущее