mirror of
https://github.com/ovosimpatico/bingo.git
synced 2026-01-15 16:52:54 -03:00
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:
@@ -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
|
||||
5
main.py
5
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()
|
||||
@@ -1 +1,2 @@
|
||||
prettytable
|
||||
colr
|
||||
2
setup.py
2
setup.py
@@ -1,2 +1,2 @@
|
||||
import os
|
||||
os.system("pip install -r requirements.txt")
|
||||
os.system("pip install -r requirements.txt --user")
|
||||
@@ -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:
|
||||
|
||||
122
src/constants.py
122
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 ║
|
||||
╚══════╩═══╩════╩════╩════╩════╝
|
||||
╠══════╬════╬════╬════╬════╬════╣
|
||||
║ ■ ║ 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 ║
|
||||
╚══════╩═══╩════╩════╩══════╩════╝
|
||||
╠══════╬════╬════╬════╬══════╬════╣
|
||||
║ ■ ║ 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 ║
|
||||
╚══════╩═══╩════╩════╩══════╩════╝
|
||||
|
||||
╠══════╬════╬════╬════╬══════╬════╣
|
||||
║ ║ 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!
|
||||
"""
|
||||
}
|
||||
"""}
|
||||
@@ -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")
|
||||
|
||||
|
||||
26
src/init.py
26
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()
|
||||
|
||||
Reference in New Issue
Block a user