Бот с игрой орел решка

    random_orel_reshka = random.choices(['Орел', 'Решка'])
    user_point=1000
    if message.text =='Орел-решка':
        bot.send_message(message.chat.id,'Цель игры угадать какой стороной упадет монетка :\n'
                         'Выбирай Орел или Решка\n'
                         'Твои очки: '+str(user_point), reply_markup=markup_games_oreol_resgka)
        bot.send_message(message.chat.id, '<tg-spoiler>%s</tg-spoiler>'% random_orel_reshka ,parse_mode="HTML")
    if message.text == random_orel_reshka:
        user_poin+=100
        bot.send_message(message.chat.id,'Ты угадал \n',random_orel_reshka)
    if message.text == 'Орел' and random_orel_reshka == 'Решка':
        user_point-+100
        bot.send_message(message.chat.id,'Не угадал \n',random_orel_reshka)
    if message.text == 'Решка' and random_orel_reshka == 'Орел':
        user_point-=100
        bot.send_message(message.chat.id,'Не угадал \n',random_orel_reshka)
    if message.text =='Мои очки':
        bot.send_message(message.chat.id,'Твои очки: '+str(user_point))

Идея была в том, чтобы бот заранее загадывал, что выпадет Орел или Решка. Проблема в том, что после того, как выполняется bot.send_message(message.chat.id,'Цель игры угадать какой стороной упадет монетка :\n' 'Выбирай Орел или Решка\n' 'Твои очки: '+str(user_point), reply_markup=markup_games_oreol_resgka) Дальше код не работает, бот не сравнивает свой ответ с ответом пользователя. И по возможности подскажите, как оптимизировать код И в идеале подсказать, как брать спойлер ответа %s'% random_orel_reshka ,parse_mode="HTML" чтобы пользователь не мог увидеть заранее ответ(догадался только замазать его)


Ответы (1 шт):

Автор решения: Vladimir Ignatenko

Использование спойлера не совсем понятно. Какой в нем смысл? Даже для отладки он не будет корректно работать. Само по себе это сообщение смысла не имеет.

Логика игры тоже реализована не очень корректно и не очень понятно. Насколько я понимаю логика в том что пользователь пишет в чат либо "Орел", либо "Решка" и в этом случае надо сравнить с тем, что выбрал бот. Если то что написал пользователь совпало с тем что выбрал бот, то пользователь выиграл. Иначе проиграл. Вот так и надо реализовывать логику программы.

Должно получиться, что-то вроде

    random_orel_reshka = random.choices(['Орел', 'Решка'])
    user_point=1000
    #Пользователь ввел "Орел-решка" - выводим приветственный экран
    if message.text =='Орел-решка':
        bot.send_message(message.chat.id,'Цель игры угадать какой стороной упадет монетка :\n'
                         'Выбирай Орел или Решка\n'
                         'Твои очки: '+str(user_point))
    #Пользователь ввел "Орел" или "Решка" - значит это игра
    if message.text == "Орел" or message.text == "Решка":
        #Пользователь угадал
        if message.text == random_orel_reshka:
            user_point+=100
            bot.send_message(message.chat.id,'Ты угадал\n')
        else:
            user_point-=100
            bot.send_message(message.chat.id,'Не угадал\n')
    #Пользователь запрашивает статус своего счета - выводим
    if message.text =='Мои очки':
        bot.send_message(message.chat.id,'Твои очки: '+str(user_point))

Как-то так. Логика думаю понятна. Но код я не проверял - могут быть как опечатки, так и синтаксические ошибки.

→ Ссылка