Now with colors!

* colors added - numbers drawn will turn red
* unused code removed
* Tutorial is now complete
* software only install dependencies on start-up if those are missing
* fixed a bug where dependencies weren't installed properly
This commit is contained in:
nanometer5088
2022-09-03 13:28:40 -03:00
parent 98e077e210
commit 383939f539
8 changed files with 120 additions and 81 deletions

View File

@@ -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?
* More comments

View File

@@ -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()

View File

@@ -1 +1,2 @@
prettytable
prettytable
colr

View File

@@ -1,2 +1,2 @@
import os
os.system("pip install -r requirements.txt")
os.system("pip install -r requirements.txt --user")

View File

@@ -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:

View File

@@ -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 ║ 1220 ║ 2729 ║
║ ║ 7 ║ 19 ║ 2842 ║ 46
║ ║ 717 ║ 1933 ║ 37 ║
║ ║ 517 ║ 1926 ║ 46
╚══════╩═══╩════╩════╩════╩════╝
╔══════╦═══╦════╦════╦════╦════╗
║ Dono ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║
╠══════╬═══╬════╬════╬════╬════╣
║ ■ ║ 4 ║ 1640 ║ 4549 ║
║ ║ 4 ║ 17 ║ 2538 ║ 49
║ ║ 122231 ║ 43 ║ 47 ║
║ ║ 122331 ║ 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 ║ 1220 ║ 2729 ║
║ ║ 7 ║ 19 ║ 2842 ║ 46
║ ║ 717 ║ 19[33]37 ║
║ ║ 517 ║ 1926 ║ 46
╚══════╩═══╩════╩════╩══════╩════╝
╔══════╦═══╦════╦════╦══════╦════╗
║ Dono ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║
╠══════╬═══╬════╬════╬══════╬════╣
║ ■ ║ 4 ║ 1640 ║ 4549 ║
║ ║ 4 ║ 17 ║ 2538 ║ 49
║ ║ 122231 ║ -43-47 ║
║ ║ 122331 ║ 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 ║ 1220 ║ 2729 ║
║ ■ ║ 7 ║ 19 ║ 2842 ║ 46
║ ║ 717 ║ 19[33]37 ║
║ ║ 517 ║ 1926 ║ 46
╚══════╩═══╩════╩════╩══════╩════╝
╔══════╦═══╦════╦════╦══════╦════╗
║ Dono ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║
╠══════╬═══╬════╬════╬══════╬════╣
║ ║ 4 ║ 1640 ║ 4549 ║
║ ■ ║ 4 ║ 17 ║ 2538 ║ 49
║ ║ 122231 ║ -43-47 ║
║ ║ 122331 ║ 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!
"""
}
"""}

View File

@@ -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")

View File

@@ -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()