diff --git a/codebreaker.py b/codebreaker.py index ae8aa27..ef57d68 100644 --- a/codebreaker.py +++ b/codebreaker.py @@ -1,34 +1,43 @@ -trueNumber = "1010"; - class Codebreaker: - - def adivinar(self, numero=None): - if trueNumber == '': - return 'Number is not defined' + def __init__(self): + self.TRUE_NUMBER = '1025' - if numero is None or len(numero) != 4 or 'e' not in list(numero): - return "error" - - if numero == trueNumber: - return True + def adivinar(self, intento=0, numero=None): + self.arrayNumber = [] + self.check_truenumber = 0 - resultadoX = '' - resultado_ = '' - arrayNumber = [] - - for x in len(numero): - if(arrayNumber[numero[x]] == True): - return 'error' + # Verifico que se haya ingresado bien el número a adivinar + # Si no se cumple cancelo la ejecución y doy aviso + for i in self.TRUE_NUMBER: + if self.TRUE_NUMBER.count(i) > 1: + self.check_truenumber += 1 - arrayNumber[numero[x]] = True - - numero = list(numero) + if self.TRUE_NUMBER == '' or len(self.TRUE_NUMBER) != 4 \ + or not self.TRUE_NUMBER.isnumeric() or self.check_truenumber > 0: + return 0, False - for index, x in numero: - if trueNumber[index] == numero[index]: - resultadoX+='X' + # Verifico que se cumpla la consigna de ingresar 4 números + if numero == '' or len(numero) != 4 or not numero.isnumeric(): + self.intento = intento # No pierde un intento + return self.intento, \ + 'Se debe ingresar un número natural de 4 dígitos' - elif x in trueNumber: - resultado_='_' + # Verifico que se cumpla la consigna de digitos no repetidos + for i in numero: + if numero.count(i) > 1: + self.intento = intento # No pierde un intento + return self.intento, 'No se deben ingresar números repetidos' - return resultadoX+resultado_ + # Proceso respuesta de acuerdo a lo ingresado + if numero == self.TRUE_NUMBER: + return intento, True + else: + self.intento = intento+1 # Pierde un intento + for x in range(0, len(numero)): + if numero[x] == self.TRUE_NUMBER[x]: + self.arrayNumber.append("_") + elif numero[x] in self.TRUE_NUMBER: + self.arrayNumber.append("X") + else: + self.arrayNumber.append("#") + return self.intento, ''.join(self.arrayNumber) diff --git a/main.py b/main.py index a3e1ccd..a9207c5 100644 --- a/main.py +++ b/main.py @@ -1,18 +1,25 @@ from codebreaker import Codebreaker -intentos_totales = 10 -codebreaker = Codebreaker() - +INTENTOS_TOTALES = 10 intento = 0 +codebreaker = Codebreaker() print('Jugar Codebreaker!') -while intento != intentos_totales: - number = input('Numero:'); - resolve = codebreaker.adivinar(number) - print(resolve) - if resolve == True: - print('You win!!') - break +while intento != INTENTOS_TOTALES: + number = input('Numero: ') + intento, resolve = codebreaker.adivinar(intento, number) + if isinstance(resolve, bool) and resolve: + print('You win!!') + break + elif isinstance(resolve, bool) and not resolve: + print('Los números a adivinar no cumplen las condiciones\ + \nModificar código') + break + else: + print(resolve) + print(f'Intentos: {intento} de {INTENTOS_TOTALES}') +if intento == 10: + print('No lo has logrado :(')