• Почему нельзя создать массив произвольной длины в С++?

    RabraBabr
    @RabraBabr
    Если коротко исторически так сложилось.

    В который раз встречаю человека который упорно не желает пользоваться STL. При том это какое то иррациональное нежелание.

    А теперь длинно.

    Хочешь плохому научу?
    Выделяй память malloc'ом, а когда надо изменить размер "массива", пользуйся realloc'ом. Можешь так же как в встроенном массиве пользоваться [] для обращения к элементам массива.

    Дальше напиши какую нибудь серьезную программу тыщ хотя бы на 20 строк. И в один прекрасный день узнай, что она крашится в самом неожиданном месте, хотя раньше все работало. Далее две бессонных недели, с красными глазами проведи с отладчиком в поисках неуловимого бага. После чего совершенно случайно найди место где вылазишь за пределы массива или обращаешься к неинициализированной памяти. Вот после этого станет понятно, что так жить нельзя. И вот все это безобразие размазанное по всему коду надо собрать в одном месте. И все проверки и инициализацию делать там. А где это в одном месте? Правильно написать собственный класс, там и конструктор есть для инициализации по умолчанию и [] перегрузить можно, что бы всякие проверки делать и деструктор, что бы за собой прибрать. А потом тебе захочется, что бы твой класс работал с разными типами данных и ты перепишешь его на шаблонах.

    А теперь загляни в стандартную библиотеку. Поздравляю все это уже давно сделали за вас гораздо лучше и со множеством приятных плюшек. Тысячи программистов прошли этот путь за более чем 40 лет. Так зачем, зачем проходить этот путь еще раз? У вас, что есть запасная жизнь? Берите и пользуйтесь готовым. C++ имеет тысячи подходящих инструментов. Пользуйтесь ими. Так нет каждый новый адепт хватает кирку и лопату и бежит строить днепрогэс. Не надо построили уже до вас. Вы в стандартной библиотеки поищите оно там есть.
    Ответ написан
    Комментировать
  • Реально ли 2d игра на С++ без граф.библиотек и движокв?

    @RedSkotina
    можно, но зачем?
    А если учесть что WinApi такой же по сути движок, то вам дорога в реальный режим процессора и незамутненный машинный код.
    Хотя лучше всего самому сделать процессор, а то вдруг и прерываниями чужими пользоваться нельзя.
    Ответ написан
    Комментировать
  • Почему возникает ошибка "missing 1 required positional argument: 'self'"?

    Slavkha, открой для себя тэг "Исходный код". Без него глазам больно.
    По делу - cheng_baloon нужно вызывать из объекта, а не из класса.
    Должно быть примерно так:
    baloon = Baloon(screen, baloon[0], baloon[1], rect_baloon) 
    ...
    baloon.cheng_baloon()
    Ответ написан
    Комментировать
  • Как привязать pygame.KEYDOWN на 2 кнопки?

    @YariKartoshe4ka
    keys = pygame.key.get_pressed()
    if keys[pygame.K_s] and keys[pygame.K_d]:
        pass


    В коде нужно хранить флаг, что if уже обработался, или при зажатии этих двух клавиш код после if'а будет выполняться на каждой итерации (фрейме)
    Ответ написан
    Комментировать
  • Как привязать pygame.KEYDOWN на 2 кнопки?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Конечно, не работает. Вместо and попробуйте or.
    Ответ написан
    1 комментарий
  • Как менять row_width каждой кнопки отдельно?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    row_width для этого не предназначен. Он автоматически разбивает кнопки на группы по заданной длине.
    Используйте метод row(...), в него передается любое кол-во аргументов, которые и будут составлять один ряд
    https://github.com/eternnoir/pyTelegramBotAPI/blob...

    buttons = [item1, item2, item3, item4, item5, item6, item7]
    
    for button in buttons[:5]:
        markup.row(button)
    
    markup.row(item6, item7)

    Можно как нибудь покрасивее наверное сделать, ну да ладно
    Ответ написан
    1 комментарий
  • InlineKeyboardMarkup row_width не работает?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Вы добавляете по одной кнопке в ряд - получаете по одной кнопке в ряд

    def add(self, *args):
    """
    This function adds strings to the keyboard, while not exceeding row_width.
    E.g. ReplyKeyboardMarkup#add("A", "B", "C") yields the json result {keyboard: [["A"], ["B"], ["C"]]}
    when row_width is set to 1.
    When row_width is set to 2, the following is the result of this function: {keyboard: [["A", "B"], ["C"]]}
    See https://core.telegram.org/bots/api#replykeyboardmarkup
    :param args: KeyboardButton to append to the keyboard
    """


    def row(self, *args):
    """
    Adds a list of KeyboardButton to the keyboard. This function does not consider row_width.
    ReplyKeyboardMarkup#row("A")#row("B", "C")#to_json() outputs '{keyboard: [["A"], ["B", "C"]]}'
    See https://core.telegram.org/bots/api#inlinekeyboardmarkup
    :param args: strings
    :return: self, to allow function chaining.
    """
    Ответ написан
    Комментировать
  • Ошибка: AttributeError("'int' object has no attribute 'chat'"), кто знает где налажал? Не могу создать цепочку последовательных функций.?

    @twistfire92
    Python backend developer
    В register_next_step_handler передается сообщение, а не chat_id.
    bot.register_next_step_handler(call.message.chat.id, caclulate_usd)

    меняйте на
    bot.register_next_step_handler(call.message, caclulate_usd)


    И еще:
    В функции caclulate_usd у вас откуда-то берется обращение к переменной call, которая не определена внутри этой функции, так что там тоже будет косяк. Поэтому если хотите использовать call в этой функции, передавайте его тоже через register_next_step_handler
    .......
                    bot.register_next_step_handler(call.message, caclulate_usd, call)
    .......
    
    def caclulate_usd(message, call):
        num_usd = message.text
        bot.send_message(call.message.chat.id, 'Ваше запрос \"' + message.text +
                             '\" получен. Можете вернуться в главное меню ⤵', reply_markup=keyboard)
    Ответ написан
    1 комментарий