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)
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
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')
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
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 # зачет!
# только с загаданным числом, а 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 # зачёт!
# -*- 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
# 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)
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 # зачет!
# 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()
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: 'Введите ответ киррилицей, маленькими буквами.'
# Все общение с пользователем (вывод на консоль и запрос ввода от пользователя) делать в 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()
# результат быков/коров выводится на консоль # когда игрок угадал таки число - показать количество ходов и вопрос "Хотите еще партию?" # # При написании кода учитывайте, что движок игры никак не должен взаимодействовать с пользователем. # Все общение с пользователем делать в текущем модуле. Представьте, что движок игры могут использовать # разные клиенты - веб, чатбот, приложение, етс - они знают как спрашивать и отвечать пользователю. # Движок игры реализует только саму функциональность игры. # Это пример применения 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 # зачет!
# # При написании кода учитывайте, что движок игры никак не должен взаимодействовать с пользователем. # Все общение с пользователем делать в текущем модуле. Представьте, что движок игры могут использовать # разные клиенты - веб, чатбот, приложение, етс - они знают как спрашивать и отвечать пользователю. # Движок игры реализует только саму функциональность игры. # Это пример применения 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']}.")
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)) # зачет!
# разные клиенты - веб, чатбот, приложение, етс - они знают как спрашивать и отвечать пользователю. # Движок игры реализует только саму функциональность игры. # Это пример применения 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 #зачет!
_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
# -*- 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')
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
# Движок игры реализует только саму функциональность игры. # Это пример применения 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)
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']}") # Зачёт!
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()
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
# В этом модуле нужно реализовать функции: # загадать_число() # проверить_число(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