diff --git a/README.md b/README.md index d319909..da76abe 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,5 @@ This software is feature-complete and functional at the moment Pending: -* Complete tutorial * Further testing edge-cases (and fixing them) -* Remove unused code -* Colors? \ No newline at end of file +* More comments \ No newline at end of file diff --git a/main.py b/main.py index 3843aa6..37721c9 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,9 @@ def main(): from src.init import inicio from src.cartelas import TUI_principal - inicio() + x = inicio() + if x == "instalado": + print("Dependências instaladas com sucesso.\nAbra o programa novamente\n") + return None TUI_principal() main() \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 04fdfa2..8a397c3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ -prettytable \ No newline at end of file +prettytable +colr \ No newline at end of file diff --git a/setup.py b/setup.py index a611d84..fcf9816 100644 --- a/setup.py +++ b/setup.py @@ -1,2 +1,2 @@ import os -os.system("pip install -r requirements.txt") \ No newline at end of file +os.system("pip install -r requirements.txt --user") \ No newline at end of file diff --git a/src/cartelas.py b/src/cartelas.py index 072dc8f..f7e4a1d 100644 --- a/src/cartelas.py +++ b/src/cartelas.py @@ -1,5 +1,5 @@ from src.constants import ERRORS, SELECTED, SCOREBOARD -from src.funcoes import learquivo, escrevearquivo, cleanup, aleatorio +from src.funcoes import aleatorio def listas(): i = 0 vazio = '' @@ -58,6 +58,7 @@ def numerosorteado(random): def maketable(elemento_inicial, lista, playerselect, backend_results, modelovitoria, resultado): from src.funcoes import aleatorio from prettytable import PrettyTable, DOUBLE_BORDER, DEFAULT + from colr import color #Alterar a posição do jogador na tabela if elemento_inicial == "1": @@ -85,7 +86,7 @@ def maketable(elemento_inicial, lista, playerselect, backend_results, modelovito for i in range(4): if random in lista[i]: elemento = (lista[i].index(random)) - lista[i][elemento] = f'-{lista[i][elemento]}-' + lista[i][elemento] = color(f'{lista[i][elemento]}', fore=(238, 77, 77)) backend_results[i][elemento] = 1 for i in range(4): if backend_results[i] == modelovitoria: diff --git a/src/constants.py b/src/constants.py index 346f7ea..b70ee9a 100644 --- a/src/constants.py +++ b/src/constants.py @@ -7,23 +7,30 @@ START = { Certifique-se que tenha as bibliotecas necessárias instaladas - Pressione ENTER para instalar as bibliotecas necessárias - As bibliotecas podem ser instaladas posteriormente rodando o arquivo 'setup.py' """, + "libraries": """ + + O programa detectou que as dependências não estão instaladas + Pressione ENTER para instalar as bibliotecas necessárias + + (Note que será necessário abrir o programa novamente após a conclusão) + """} + +INTRO = { "intro1": """ No início do jogo, serão sorteadas 4 cartelas e o jogador será dono inicialmente da 1ª cartela. - ╔══════╦═══╦════╦════╦════╦════╗ - ║ Dono ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ - ╠══════╬═══╬════╬════╬════╬════╣ - ║ ■ ║ 6 ║ 12 ║ 20 ║ 27 ║ 29 ║ - ║ ║ 7 ║ 19 ║ 28 ║ 42 ║ 46 ║ - ║ ║ 7 ║ 17 ║ 19 ║ 33 ║ 37 ║ - ║ ║ 5 ║ 17 ║ 19 ║ 26 ║ 46 ║ - ╚══════╩═══╩════╩════╩════╩════╝ + ╔══════╦════╦════╦════╦════╦════╗ + ║ Dono ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ + ╠══════╬════╬════╬════╬════╬════╣ + ║ ■ ║ 4 ║ 16 ║ 40 ║ 45 ║ 49 ║ + ║ ║ 4 ║ 17 ║ 25 ║ 38 ║ 49 ║ + ║ ║ 12 ║ 22 ║ 31 ║ 43 ║ 47 ║ + ║ ║ 12 ║ 23 ║ 31 ║ 39 ║ 45 ║ + ╚══════╩════╩════╩════╩════╩════╝ Pressione ENTER para continuar """, @@ -32,17 +39,17 @@ START = { é marcado nas cartelas em que estiver presente. *************************************************** - ** Número Sorteado: 33 ** + ** Número Sorteado: 43 ** *************************************************** - ╔══════╦═══╦════╦════╦══════╦════╗ - ║ Dono ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ - ╠══════╬═══╬════╬════╬══════╬════╣ - ║ ■ ║ 6 ║ 12 ║ 20 ║ 27 ║ 29 ║ - ║ ║ 7 ║ 19 ║ 28 ║ 42 ║ 46 ║ - ║ ║ 7 ║ 17 ║ 19 ║ [33] ║ 37 ║ - ║ ║ 5 ║ 17 ║ 19 ║ 26 ║ 46 ║ - ╚══════╩═══╩════╩════╩══════╩════╝ + ╔══════╦════╦════╦════╦══════╦════╗ + ║ Dono ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ + ╠══════╬════╬════╬════╬══════╬════╣ + ║ ■ ║ 4 ║ 16 ║ 40 ║ 45 ║ 49 ║ + ║ ║ 4 ║ 17 ║ 25 ║ 38 ║ 49 ║ + ║ ║ 12 ║ 22 ║ 31 ║ -43- ║ 47 ║ + ║ ║ 12 ║ 23 ║ 31 ║ 39 ║ 45 ║ + ╚══════╩════╩════╩════╩══════╩════╝ Pressione ENTER para continuar """, @@ -50,40 +57,84 @@ START = { Se o jogador selecionar outra cartela, ele passará a ser dono da cartela escolhida. - *************************************************** ** Você agora é dono da cartela 2 ** *************************************************** - ╔══════╦═══╦════╦════╦══════╦════╗ - ║ Dono ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ - ╠══════╬═══╬════╬════╬══════╬════╣ - ║ ║ 6 ║ 12 ║ 20 ║ 27 ║ 29 ║ - ║ ■ ║ 7 ║ 19 ║ 28 ║ 42 ║ 46 ║ - ║ ║ 7 ║ 17 ║ 19 ║ [33] ║ 37 ║ - ║ ║ 5 ║ 17 ║ 19 ║ 26 ║ 46 ║ - ╚══════╩═══╩════╩════╩══════╩════╝ - + ╔══════╦════╦════╦════╦══════╦════╗ + ║ Dono ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ + ╠══════╬════╬════╬════╬══════╬════╣ + ║ ║ 4 ║ 16 ║ 40 ║ 45 ║ 49 ║ + ║ ■ ║ 4 ║ 17 ║ 25 ║ 38 ║ 49 ║ + ║ ║ 12 ║ 22 ║ 31 ║ -43- ║ 47 ║ + ║ ║ 12 ║ 23 ║ 31 ║ 39 ║ 45 ║ + ╚══════╩════╩════╩════╩══════╩════╝ Pressione ENTER para continuar - """ - } + """, + "intro4": """ + Se a cartela que o jogador possui for preenchida, ele vence. + O programa solicitará seu nome para constar no rol. + A tabela tem seu estilo alterado para representar o final do jogo. + + O vencedor será adicionado ao arquivo vencedores.txt, + junto da data e horário da partida. + + +------+------+------+------+------+------+ + | Dono | 1 | 2 | 3 | 4 | 5 | + +------+------+------+------+------+------+ + | | -4- | 16 | -40- | 45 | -49- | + | ■ | -4- | -17- | -25- | -38- | -49- | + | | -12- | -22- | 31 | -43- | 47 | + | | -12- | 23 | 31 | 39 | 45 | + +------+------+------+------+------+------+ + + Parabéns! Você venceu!!! + Entre o seu nome para constar no rol de vencedores: + + Pressione ENTER para continuar + """, + "intro5": """ + Se outra cartela for preenchida, a partida + termina sem a vitória do jogador. + + +------+------+------+------+------+------+ + | Dono | 1 | 2 | 3 | 4 | 5 | + +------+------+------+------+------+------+ + | | -4- | 16 | -40- | 45 | -49- | + | | -4- | -17- | -25- | -38- | -49- | + | | -12- | -22- | 31 | -43- | 47 | + | ■ | -12- | 23 | 31 | 39 | 45 | + +------+------+------+------+------+------+ + + Outra cartela foi completada! + Melhor sorte da próxima vez! + + Pressione ENTER para continuar + """, + "introfinal": """ + Preparado? + Pressione ENTER para jogar! + + O tutorial pode ser feito novamente removendo + o arquivo config.json + """} SELECTED = { "player": "■", - "notplayer": " " - } + "notplayer": " "} + ERRORS = { - "invalid": "Valor de entrada inválido", -} + "invalid": "Valor de entrada inválido",} + WARNING = { "firstime": """ O programa detectou que esta é a primeira vez que está jogando. Pressione ENTER para assistir o tutorial. Alternativamente, pressione 1 para pular o tutorial (Recomendado para jogadores experientes) - """ -} + """} + SCOREBOARD = { "win": """ Parabéns! Você venceu!!! @@ -92,5 +143,4 @@ SCOREBOARD = { "loss": """ Outra cartela foi completada! Melhor sorte da próxima vez! - """ - } \ No newline at end of file + """} \ No newline at end of file diff --git a/src/funcoes.py b/src/funcoes.py index 5b4a5d0..6c76b7e 100644 --- a/src/funcoes.py +++ b/src/funcoes.py @@ -2,31 +2,3 @@ def aleatorio(x, y): import random return random.randint(x, y) -def criaarquivo(x): - try: - arquivo = open(x, 'r', encoding='utf-8') - arquivo.close() - except FileNotFoundError: - arquivo = open(x, 'w') - arquivo.close() - -def learquivo(x,linha): - criaarquivo(x) - arquivo = open(x, 'r', encoding='utf-8') - x = arquivo.readlines(linha) - arquivo.close() - return x - -def escrevearquivo(x,input): - criaarquivo(x) - arquivo = open(x, 'w') - arquivo.write(input) - arquivo.close() - -def cleanup(x): - import os - if os.path.exists(x): - os.remove(x) - else: - print("The file does not exist\n") - diff --git a/src/init.py b/src/init.py index eea9eb5..f55b566 100644 --- a/src/init.py +++ b/src/init.py @@ -1,19 +1,33 @@ -from src.constants import START, WARNING, ERRORS import os - def tutorial(): + from src.constants import INTRO os.system("cls || clear") - input(START["intro1"]) + input(INTRO["intro1"]) os.system("cls || clear") - input(START["intro2"]) + input(INTRO["intro2"]) os.system("cls || clear") - input(START["intro3"]) + input(INTRO["intro3"]) + os.system("cls || clear") + input(INTRO["intro4"]) + os.system("cls || clear") + input(INTRO["intro5"]) + os.system("cls || clear") + input(INTRO["introfinal"]) os.system("cls || clear") def inicio(): + from src.constants import WARNING, START os.system("cls || clear") x = input(START["intro"]) - os.system("pip install -r requirements.txt") + try: + from prettytable import PrettyTable + from colr import color + except ModuleNotFoundError: + os.system("cls || clear") + input(START["libraries"]) + os.system("pip install -r requirements.txt --user") + os.system("cls || clear") + return "instalado" try: config = open('config.json', 'r', encoding='utf-8') config.close()