Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"python.linting.pylintEnabled": true,
"python.linting.enabled": true
}
78 changes: 44 additions & 34 deletions codebreaker.py
Original file line number Diff line number Diff line change
@@ -1,34 +1,44 @@
trueNumber = "1010";

class Codebreaker:

def adivinar(self, numero=None):
if trueNumber == '':
return 'Number is not defined'

if numero is None or len(numero) != 4 or 'e' not in list(numero):
return "error"

if numero == trueNumber:
return True

resultadoX = ''
resultado_ = ''
arrayNumber = []

for x in len(numero):
if(arrayNumber[numero[x]] == True):
return 'error'

arrayNumber[numero[x]] = True

numero = list(numero)

for index, x in numero:
if trueNumber[index] == numero[index]:
resultadoX+='X'

elif x in trueNumber:
resultado_='_'

return resultadoX+resultado_
"""Here we import the module random because we generate a random number"""
import random


class CodeBreaker:
"""Return a result to the comparation between random number and user number"""

def __init__(self) -> None:
"""In this section we generate a random number with 4 digits."""
list_numbers = ('1', '2', '3', '4', '5', '6', '7', '8', '9', '0')
self.true_number = random.sample(list_numbers, 4)
self.true_number = "".join(self.true_number)

def adivinar(self, user_number=None):
"""This function helps us to compare the random number with the user number
and define if they are the same """
if self.true_number == '':
return 'Number is not defined'

if user_number is None or len(user_number) != 4 or 'e' in list(user_number):
return "Error, please enter a correct number according to the given convention"

if user_number == self.true_number:
return 1

array_n = ""
user_number_list = list(user_number)
validate_duplicate_digits = []
for number_d in user_number_list:
if number_d in validate_duplicate_digits:
return "Error, you cannot have duplicate numbers in your sequence"
validate_duplicate_digits.append(number_d)

for i, number in enumerate(user_number_list):
if self.true_number[i] == number:
array_n += 'X'

elif number in self.true_number:
array_n += '_'

else:
array_n += 'E'

return array_n
34 changes: 20 additions & 14 deletions main.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,24 @@
from codebreaker import Codebreaker
"""This line of code import the class CodeBreaker """
from codebreaker import CodeBreaker

intentos_totales = 10
codebreaker = Codebreaker()
TOTAL_ATTEMPS = 10
codebreaker = CodeBreaker()
user_attemps = 0

intento = 0

print('Jugar Codebreaker!')

while intento != intentos_totales:
number = input('Numero:');
resolve = codebreaker.adivinar(number)
print(resolve)
if resolve == True:
print('You win!!')
break
print('\nPlay Codebreaker!\n')
print("*************************** GAME RULES ***************************\n"
"1. You must enter a 4-digit number without duplicate digits\n"
"2. You only have 10 attempts to win the game\n"
"******************************************************************\n")

while user_attemps < TOTAL_ATTEMPS:
user_number = input('Enter a number:')
resolve = codebreaker.adivinar(user_number)
if resolve == 1:
print('You win!! Congrats!!')
break

print(resolve)
user_attemps += 1
if user_attemps == 10:
print("Game Over :( !! You used your 10 available attemps")