Пример #1
0
def game():
    user_attempts = 0
    while True:
        user_number = ai_number()
        print('Artificial intelligence set the number:', ai_number())
        if user_number.isnumeric():
            if len(user_number) != 4:
                print('Try again, enter your four-digit number:')
                continue
            else:
                checker = me.check_number(user_number)
                print('Bulls:', checker['bulls'], 'Cows:', checker['cows'])
        else:
            print('Try again, enter your four-digit number:')
            continue

        user_attempts += 1

        if me.check_result(checker['bulls']):
            break

    print('You made {} attempts'.format(user_attempts))

    user_start_again = input('Play again? \n Type YES or NO \n')

    user_answer(user_start_again)
Пример #2
0
def replay_query():
    player_num = 0
    while True:
        player_num += 1
        result = check_number(us_nums=user_number())
        for name in result:
            print(name, result[name])
        if result['быки'] == 4:
            cprint('Игрок угадал число !!!', color='red')
            print('количество попыток:', player_num)
            return result
Пример #3
0
def game():
    generate_number()
    res = {'bulls': 0, 'cows': 0}
    n = 0
    while res['bulls'] < 4:
        user_number = input(colored('Введите число: ', color='blue'))
        if check_number(user_number):
            res = check_number(user_number)
            cprint(f"быки - {res['bulls']}, коровы - {res['cows']}",
                   color='yellow')
            n += 1
        else:
            cprint(
                'Некорректный ввод. Число должно состоять из 4 цифр, в числе все цифры должны быть разные',
                color='red')
    if n == 1:
        cprint(f'Вы отгадали число за {n} ход!', color='green')
    elif n == 2 or n == 3 or n == 4:
        cprint(f'Вы отгадали число за {n} хода!', color='green')
    else:
        cprint(f'Вы отгадали число за {n} ходов!', color='green')
Пример #4
0
def check_validation(input_number, _secret_number):
    global attempt
    attempt = 1
    while _secret_number != list(input_number):
        attempt += 1
        if input_number[0] == '0':
            print(
                'Первая цифра не должна быть нулем. Пожалуйста повторите ввод!'
            )
            input_number = list(input('Введите корректное число:'))
        elif len(set(_secret_number)) > len(set(input_number)):
            print(
                'Полученное число меньше 4 цифр, либо есть повторяющиеся числа!'
            )
            input_number = list(input('Введите корректное число:'))
        elif len(_secret_number) < len(set(input_number)):
            print('Полученное число больше 4 цифр')
            input_number = list(input('Введите корректное число:'))
        else:
            check_number = engine.check_number(input_number=input_number)
            print('Колличество быков:', check_number['bulls'],
                  'Колличество коров:', check_number['cows'])
            input_number = list(input('Введите ваше число:'))
            print(input_number[0])
# Это пример применения SOLID принципа (см https://goo.gl/GFMoaI) в архитектуре программ.
# Точнее, в этом случае важен принцип единственной ответственности - https://goo.gl/rYb3hT

from termcolor import cprint

import mastermind_engine

cprint('------------------------', color='green')
cprint('  Игра «Быки и коровы»', color='green')
cprint('------------------------', color='green')

yes = ['Да', 'да', 'д', 'Yes', 'yes', 'y']

count = 0

while True:
    user_number = int(input('Введите число: '))
    mastermind_engine.check_number(user_number=user_number)
    count += 1
    if user_number == mastermind_engine.secret_number:
        print('Успех')
        print('Количество ходов -', count)
        solution = input('Хотите еще партию(Да/Нет)? ')
        if solution in yes:
            mastermind_engine.guess_number()
            count = 0
            continue
        else:
            print('Удачного дня!')
            break
Пример #6
0
    while num_of_bulls < 4:
        # у пользователя запрашивается вариант числа
        if steps < 1:
            print('Я загадал, введите число')
        else:
            print('Не верно, введите число повторно')

        # дальше идем в бесконечный цикл внутри которого проверяем корректность введенного числа

        my_num = input()
        # проверяем что пользователь ввел допустимое число (4 цифры, все цифры разные, не начинается с 0)
        if check_right(my_num):
            steps += 1
        else:
            print('Вы ввели не корректное число, введите заново')
            continue

        # модуль движка проверяет число и выдает быков/коров
        dict_of_bulls_cows = check_number(my_num)
        num_of_bulls = dict_of_bulls_cows['bulls']
        num_of_cows = dict_of_bulls_cows['cows']

        # результат быков/коров выводится на консоль
        print('Быков = ', num_of_bulls, 'Коров = ', num_of_cows)
    else:
        print('Вы выиграли, ваше количество шагов равно ', steps)
        if input('Еще партеечку? Если хотите сыграть напишите "Да"') != 'Да':
            print('Спасибо за игру!')
            break

# зачет!
Пример #7
0
# только с загаданным числом, а 01_mastermind - с пользователем и просто передает числа на проверку движку.
# Это пример применения SOLID принципа (см https://goo.gl/GFMoaI) в архитектуре программ.
# Точнее, в этом случае важен принцип единственной ответственности - https://goo.gl/rYb3hT

from mastermind_engine import check_number
from mastermind_engine import gameover
from mastermind_engine import rand_number
from mastermind_engine import check_input

inp_num_list = []

while True:
    rand_number()
    step_counter = 0
    inp_num_list.clear()
    while True:
        number = check_input()
        bulls, cows = check_number(input_number=number)
        print('быки -', bulls, 'коровы -', cows)
        step_counter += 1
        if gameover(bulls=bulls):
            print("Количество ходов до победы:", step_counter)
            break
    print("Хотите еще партию? (y/n)")
    if input() == 'y':
        continue  # если условие сделать обратным, то continue получится лишним =)
    else:
        break

# зачёт!
Пример #8
0
# -*- coding: utf-8 -*-
from mastermind_engine import make_number, count_cows_and_bulls, you_win, check_number

make_number()
count_of_try = 0

while True:
    my_number = input('Введите число:')
    if not check_number(number=my_number):
        print('Введите 4-ёх значное число, без повторений, начиная не с 0 ')
        continue

    print(count_cows_and_bulls())
    count_of_try += 1

    if you_win():
        print('Вы победили!! Количество ходов:', count_of_try)

        if input('Хотите еще сыграть?') != 'да':
            break
        make_number()
        count_of_try = 0
Пример #9
0
#
import mastermind_engine as me
from termcolor import cprint
from pprint import pprint


me.guess_number()

while True:
    cprint('Введите число ', color='green')
    num = input()

    if len(num) != 4:
        print('Вы ввели не четырехзначное число')
        continue

    dict_animal = me.check_number(answer=num)

    if dict_animal['bulls'] == 4:
        cprint('Winner!!!', color='red')
        cprint(me.get_count_try(), color='red')

        question = input('Хотите еще партию?')

        if question.upper() == 'ДА':
            me.guess_number()
            continue
        else:
            break
    else:
        pprint(dict_animal)
Пример #10
0
        print('Хорошо поиграли, удачи!')
        return False


while True:
    my_number = input('Введите любое 4-х значное число 1000-9999, числа которого не должны повторяться! ->')
    if my_number == 'hack':
        print('Не честная игра + 99 шагов:', *a_rand_number)
        step = 99
        continue
    print('############################################')
    if not valid_number(my_number):
        print('Число не правильное! и ещё раз..')
        continue
    else:
        games = check_number(my_number)
        step += 1
        print(f"шаг номер - {step}, посмотрим...\nБыков - {games['Быков']}, а Коров -{games['Коров']}")
        print('############################################')
    if games['Быков'] == 4:
        print('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
        print(f'Поздравляем вы отгадали число {my_number} за {step} попыток')
        print('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
        if play_again():
            step = 0
            continue
        else:
            break

# зачет!
Пример #11
0
# print('Загаданное число', ''.join(print_pick))
counter = 1

cprint(
    'Загадано 4-значное число, все цифры которого различны . Попробуйте отгадать его',
    color='green')

while True:

    input_number = str(input(colored('Введите свое число\n', color='blue')))

    control = check_input(num=input_number)

    if control != 1:

        check_result = check_number(num=input_number, hidden_num=print_pick)
        print('быки -', check_result['bulls'], ', коровы -',
              check_result['cows'])

        if check_result['bulls'] == 4:
            cprint('Вы победили! Число угадано полностью.',
                   color='magenta',
                   attrs=['bold'])
            print('Вы угадали за', counter, 'ходов \n' '')
            answer = input(
                colored('Хотите еще партию? 1 - Да, 2 - Нет\n', color='red'))
            if int(answer) == 2:
                cprint('Игра окончена. Спасибо за игру!', color='cyan')
                break
            else:
                print_pick = pick_number()
Пример #12
0
        return False
    else:
        return True


guess_number()

print(guess_number())
while True:
    print(
        'Я загадал 4-х значное число.Все числа разные и начинается не с 0.Твой вариант?'
    )

    guess = input()
    step_length_success = check_length(guess_checking=guess)
    if step_length_success:
        print_result_check_number = check_number(guess)
        print('быки - ', print_result_check_number['bulls'], 'коровы - ',
              print_result_check_number['cows'])

    if game_over():
        print('Вы отгадали число на ', game_over(), ' попытке')
        print('Хотите еще партию?')
        answer_to_continue = input()
        if answer_to_continue == 'да':
            guess_number()
        elif answer_to_continue == 'нет':
            break
        else:
            'Введите ответ киррилицей, маленькими буквами.'
Пример #13
0
# Все общение с пользователем (вывод на консоль и запрос ввода от пользователя) делать в 01_mastermind.py.
# Движок игры реализует только саму функциональность игры. Разделяем: mastermind_engine работает
# только с загаданным числом, а 01_mastermind - с пользователем и просто передает числа на проверку движку.
# Это пример применения SOLID принципа (см https://goo.gl/GFMoaI) в архитектуре программ.
# Точнее, в этом случае важен принцип единственной ответственности - https://goo.gl/rYb3hT

from mastermind_engine import guessing_the_number, check_number, input_check, end_of_game
from termcolor import cprint, colored

user_input = 0
move_counter = 0
guessing_the_number()
cprint('Компютер загадал число', color='cyan')
while True:
    user_input = input_check()
    result = check_number(user_input=user_input)
    cprint('Колличество быков: {}, Колличество коров: {}'.format(
        result['bulls'], result['cows']),
           color='magenta')
    move_counter += 1
    if end_of_game():
        cprint('Колличество ходов сделанных игроком: {}'.format(move_counter),
               color='blue')
        while True:
            answer = input(
                colored('Хотите еще партию ?  y/n  ', color='yellow'))
            if answer == 'y':
                move_counter = 0
                cprint('Начало новой партии', color='yellow')
                cprint('Компютер загадал число', color='cyan')
                guessing_the_number()
Пример #14
0
#       результат быков/коров выводится на консоль
#  когда игрок угадал таки число - показать количество ходов и вопрос "Хотите еще партию?"
#
# При написании кода учитывайте, что движок игры никак не должен взаимодействовать с пользователем.
# Все общение с пользователем делать в текущем модуле. Представьте, что движок игры могут использовать
# разные клиенты - веб, чатбот, приложение, етс - они знают как спрашивать и отвечать пользователю.
# Движок игры реализует только саму функциональность игры.
# Это пример применения SOLID принципа (см https://goo.gl/GFMoaI) в архитектуре программ.
# Точнее, в этом случае важен принцип единственной ответственности - https://goo.gl/rYb3hT

import mastermind_engine as me

me.make_number()
while True:
    user_input = input("Введите 4х значное число: ")
    if len(set(user_input)) != 4:
        print('Вы ввели некорректное число')
        continue
    bulls_cows = me.check_number(user_input)
    print('Быки: ', bulls_cows['bulls'], 'Коровы: ', bulls_cows['cows'])
    if bulls_cows['bulls'] == 4:
        print('Поздравляю, Вы угадали число за', me.counter_step, 'ходов.')
        user_input2 = input('Хотите сыграть еще? (да/нет) ')
        if user_input2 == 'да':
            me.make_number()
            continue
        else:
            break

# зачет!
Пример #15
0
#
# При написании кода учитывайте, что движок игры никак не должен взаимодействовать с пользователем.
# Все общение с пользователем делать в текущем модуле. Представьте, что движок игры могут использовать
# разные клиенты - веб, чатбот, приложение, етс - они знают как спрашивать и отвечать пользователю.
# Движок игры реализует только саму функциональность игры.
# Это пример применения SOLID принципа (см https://goo.gl/GFMoaI) в архитектуре программ.
# Точнее, в этом случае важен принцип единственной ответственности - https://goo.gl/rYb3hT

# TODO здесь ваш код...

import mastermind_engine as mm

mm.guess_number()
counter = 0

while True:
    counter += 1
    user_num = input("Введите ваш вариант:")
    res = mm.check_number(int(user_num))
    if res["bulls"] == 4:
        print(mm.HIDDEN_NUMBER)
        res = input(f"Вы угадали число за {counter} попыток! Еще партию? (y/n)")

        if res == "y":
            counter = 0
            mm.guess_number()
        else:
            break
    else:
        print(f"Быков - {res['bulls']}, коров - {res['cows']}.")
Пример #16
0
                    if test_str.find(sign) == -1:
                        test_str += sign
    if len(test_str) == 4:
        return False
    else:
        return True


game_start()
step = 0

while True:
    user_number = input('Введите ваше число: ')
    if uncorrected_number(user_number):
        print(
            'Необходимо ввести четыре различные цифры. Первая должна быть отличная от нуля'
        )
        continue
    bulls, cows = check_number(user_number)['bulls'], check_number(
        user_number)['cows']
    if bulls == 4:
        step += 1
        game_restart(step)
        step = 0
        break
    else:
        step += 1
        print('>быки - {},'.format(bulls), 'коровы - {}'.format(cows))

# зачет!
Пример #17
0
# разные клиенты - веб, чатбот, приложение, етс - они знают как спрашивать и отвечать пользователю.
# Движок игры реализует только саму функциональность игры.
# Это пример применения SOLID принципа (см https://goo.gl/GFMoaI) в архитектуре программ.
# Точнее, в этом случае важен принцип единственной ответственности - https://goo.gl/rYb3hT

from mastermind_engine import make_a_number, check_number, is_gameover, check_input_number

print('----------------MASTERMIND----------------\n'
      '---------------Bulls & Cows---------------')

make_a_number()

counter = 0
while True:
    pos = input('Введите четырёхзначное число: ')
    counter += 1

    if not check_input_number(pos):
        continue
    check_number(input_number=pos)

    if is_gameover():
        print('Поздравляю, это выигрышная комбинация!\n'
              'Количество ходов: ', counter)
        restart = input('Хотите еще партию: да/нет? ')
        if restart == 'да':
            make_a_number()
        if restart == 'нет':
            print('До свидания!')
            break
#зачет!
Пример #18
0
    _length = len(_number)
    _set_num = set(_number)
    if _number.isdigit():
        if (_length == 4) and (_length == len(_set_num)):
            return True
    return False


iteration = 0
guess_number()
print('Загаданное число пока нам неизвестно )')
number = input(colored('Введите число ', color='blue'))
while True:
    iteration += 1
    if is_number_correct(number):
        answer = check_number(number)
        print(f"Быков - {answer['bulls']}; коров - {answer['cows']}")
        if answer['bulls'] == 4:
            new_game = input(
                colored(
                    f'Вы отгадали число! Затрачено {iteration} хода(ов)!\nХотите еще партию? (y/n) ',
                    color='magenta'))
            while True:
                if (new_game == 'y') or (new_game == 'Y'):
                    iteration = 0
                    guess_number()
                    print('Загаданное число пока нам неизвестно )')
                    number = input(colored('Введите число ', color='blue'))
                    break
                elif (new_game == 'n') or (new_game == 'N'):
                    break
Пример #19
0
# -*- coding: utf-8 -*-

# Игра «Быки и коровы»
# https://goo.gl/Go2mb9

from mastermind_engine import get_number, check_number
from termcolor import cprint, colored
cprint('Загадано четырехзначное число, попробуй отгадать!', color='green')
counter = 0

while True:
    print('Ход', counter + 1)
    user_number = input(colored('Какое число загадано?', color='cyan'))
    if user_number.isdigit() and int(user_number) in range(1000, 10000):
        checking_number = check_number(user_number)
        print('Быки -', checking_number['bulls'], 'Коровы -',
              checking_number['cows'])
        if checking_number['bulls'] == 4:
            print('Вы победили! Чило ходов -', counter + 1)
            user_choose = input(colored('Хотите еще? Y/N ', color='blue'))
            if user_choose == 'Y' or user_choose == 'y':
                get_number()
                counter = 0
                continue
            else:
                break
        counter += 1
    else:
        cprint('Некорректный ввод!', color='red')
Пример #20
0
        elif answer == 'N' or answer == 'n':
            return True
        else:
            print(
                'Некорректный ввод. Введите Y для новой игры или N для завершения'
            )


while True:
    game_number = make_number()
    cprint('Задумано число: XXXX', color='red', attrs=['bold', 'reverse'])
    attempts_number = 0
    while True:
        cprint('Введите 4-х значное число:', color='green', attrs=['bold'])
        get_number = input()
        check_result = check_number(get_number)
        if not check_result:
            cprint('Некорректный ввод', color='red', attrs=['bold'])
        else:
            bulls, cows = compare_numbers(game_number, get_number)
            attempts_number += 1
            if bulls == 4:
                cprint('ПОЗДРАВЛЯЮ!!!! ВЫ ПОБЕДИЛИ!!!',
                       color='red',
                       attrs=['bold', 'reverse'])
                print('Количество попыток: ', attempts_number)
                break
            else:
                print('Быки - ', bulls, '   Коровы - ', cows)
    if game_continue_request():
        break
Пример #21
0
# Движок игры реализует только саму функциональность игры.
# Это пример применения SOLID принципа (см https://goo.gl/GFMoaI) в архитектуре программ.
# Точнее, в этом случае важен принцип единственной ответственности - https://goo.gl/rYb3hT

# TODO здесь ваш код...
from mastermind_engine import puzzle_number, check_number
from termcolor import cprint, colored

secret_number = puzzle_number()
print(secret_number)
while True:
    user_number = input("Ведите число\n")
    while len(user_number) != 4:
        print('Введено некорректное число\n')
        user_number = input("Ведите корректное число\n")

    result = check_number(secret_number=secret_number,
                          user_number=str(user_number))
    print('Быки: ', result['Bulls'])
    print('Коровы: ', result['Cow'])
    if result['Bulls'] == 4:
        print('Вы выиграли!')
        repeat = input('Хотите продолжить?\n1 - да\n2 - нет\n')
        print(type(repeat))
        if repeat != '1':
            print('До свидания!')
            break
        else:
            secret_number = puzzle_number()
            print(secret_number)
Пример #22
0
    if len(user_str) != 4:
        return False
    return True


count = 0

make_number()
while True:
    user_option = input("Введите ваш вариант ответа: ")
    if not verification(user_option):
        print(
            'Что-то не так! Проверьте, число должно содежать 4 цифры, все разные, не начинается с 0.'
        )
        continue
    result = check_number(user_option)
    count += 1
    if result['bulls'] == 4:
        restart = input(
            f"Вы победили, вам потребовалось {count} ходов. Хотите еще партию?"
            f" Если да введите - 1, для выхода введите любой символ. ")
        if restart == '1':
            make_number()
        else:
            break
        continue
    else:
        print(f"быки - {result['bulls']}, коровы - {result['cows']}")

# Зачёт!
Пример #23
0
    while True:
        print(f'\nПопытка номер {attempts}')

        user_input = input(
            'Введите ваш вариант числа или "выход", если хотите завершить игру: '
        )
        while not mme.input_is_valid(
                user_input) and user_input.lower() != 'выход':
            user_input = input(
                'Вы где-то ошиблись с вводом числа. Попробуйте ещё раз: ')

        if user_input.lower() == 'выход':
            print('Жаль, что уходите. Возвращайтесь ещё!')
            exit()

        check_result = mme.check_number(user_input)
        if check_result['bulls'] < 4:
            print(
                f'{check_result["bulls"]} {select_word_form(check_result["bulls"], "быков", "бык", "быка")} '
                f'и {check_result["cows"]} {select_word_form(check_result["cows"], "коров", "корова", "коровы")}'
            )
            attempts += 1
        else:
            break
    print(
        f'Ура! Вы угадали число за {attempts} {select_word_form(attempts, "попыток", "попытку", "попытки")}.'
    )
    user_want_to_play = input('Хотите сыграть ещё раз? 1 - да, 0 - нет: ')
    if not int(user_want_to_play):
        print('Спасибо за игру!')
        exit()
Пример #24
0
    return user_input


think_number()
cprint(
    "Попробуйте отгадать загаданное число. После того, как введете число, "
    "Вы увидите на экране число «быков» и «коров».",
    color="yellow")
cprint(
    "«бык» — цифра есть в записи задуманного числа и стоит в той же позиции, что и в задуманном числе",
    color="yellow")
cprint(
    "«корова» — цифра есть в записи задуманного числа, но не стоит в той же позиции, что и в задуманном числе",
    color="yellow")
count = 0
while True:
    count += 1
    guess = check_input()
    answer = check_number(guess)
    print(f"Быков: {answer['bulls']}")
    print(f"Коров: {answer['cows']}")
    if answer['bulls'] == 4:
        print(f"Вы угадали за {count} попыток")
        input_next = input(
            colored("Хотите еще партию? Если хотите, введите да или yes >>> ",
                    color="blue"))
        if input_next != "да" and input_next != "yes":
            break
        else:
            think_number()
    if is_bot:
        print('Укажите число: ')
        user_number = generate_number()
    else:
        while True:
            user_number = input('Укажите число: ')
            if user_number.isdigit() and len(user_number) == 4:
                break
            else:
                cprint('По условиям игры необходимо указать 4х значное число.',
                       'red')

    print(user_number)

    result = check_number(number=user_number)
    cprint(
        'быки - ' + str(result['bulls']) + ' коровы - ' + str(result['cows']),
        'blue')
    count += 1

    if result['bulls'] == 4:
        cprint('!!! ПОБЕДА !!!', 'red')
        cprint('Кол-во попыток: ' + str(count), 'red')
        result_ask = input('Хотите еще партию? (y/n)')

        if result_ask in ('Y', 'y', 'д', 'Д'):
            count = 0
            continue
        else:
            break
Пример #26
0
# В этом модуле нужно реализовать функции:
#   загадать_число()
#   проверить_число(NN) - возвращает словарь {'bulls': N, 'cows': N}
# Загаданное число хранить в глобальной переменной.
# Обратите внимание, что строки - это список символов.
#
# В текущем модуле (lesson_006/01_mastermind.py) реализовать логику работы с пользователем:
#   модуль движка загадывает число
#   в цикле, пока число не отгадано
#       у пользователя запрашивается вариант числа
#       модуль движка проверяет число и выдает быков/коров
#       результат быков/коров выводится на консоль
#  когда игрок угадал таки число - показать количество ходов и вопрос "Хотите еще партию?"
#
# При написании кода учитывайте, что движок игры никак не должен взаимодействовать с пользователем.
# Все общение с пользователем делать в текущем модуле. Представьте, что движок игры могут использовать
# разные клиенты - веб, чатбот, приложение, етс - они знают как спрашивать и отвечать пользователю.
# Движок игры реализует только саму функциональность игры.
# Это пример применения SOLID принципа (см https://goo.gl/GFMoaI) в архитектуре программ.
# Точнее, в этом случае важен принцип единственной ответственности - https://goo.gl/rYb3hT

from mastermind_engine import make_a_number, check_number

make_a_number()
count = 0
while True:
    count += 1
    if check_number() == True:
        print('Количество Ваших попыток {}.'.format(count))
        break