Skip to content

Commit

Permalink
Arquivos da Versão 2.0!
Browse files Browse the repository at this point in the history
Updates V1.0 -> V2.0:
- O copa_menu.py basicamente substitui o copa.py do commit anterior. Antes, a saída era dada em um arquivo de texto, porém, com a biblioteca PySimpleGUI, consegui montar um front-end simples e navegável! A meta é que, no futuro, o usuário possa escolher como quer ter a sua saída, mas por enquanto, vou manter o programa numa janelinha.
- Agora, o sistema de país sede funciona. O país que estiver marcado como "sede" no arquivo .CSV que contém as seleções será necessariamente o cabeça de chave do Grupo A, como ocorre nos sorteios da vida real.
- Simplifiquei o código da fase de grupos, substituindo completamente o programa e reduzindo consideravelmente a quantidade de linhas. Ao invés de programar grupo por grupo, transformei a fase de grupos em uma função, que têm como parâmetros os dicionários contendo as seleções. 
- Dentro do mata-mata e da fase de grupos, separei a parte funcional da parte de exibição, isto é, cada um desses arquivos possui duas funções: Uma realiza os jogos e calcula os grupos / chaves e a outra contém as strings que serão responsáveis por exibir o resultado aos usuários. Dessa forma, fazer o front-end ficou consideravelmente mais fácil, ainda que haja bastante a se evoluir,
  • Loading branch information
Gustavo-A-Costa authored May 7, 2021
1 parent e938d75 commit 75fd270
Show file tree
Hide file tree
Showing 5 changed files with 983 additions and 50 deletions.
4 changes: 2 additions & 2 deletions copa.csv
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Hungria, UEFA, 7, ns
Polonia, UEFA, 7, ns
Japao, AFC, 7, ns
Australia, AFC, 7, ns
Qatar, AFC, 5, ns
Qatar, AFC, 5, sede
Coreia do Sul, AFC, 6, ns
Ira, AFC, 6, ns
Camaroes, CAF, 6, ns
Expand All @@ -29,4 +29,4 @@ Argentina, CONMEBOL, 9, ns
Uruguai, CONMEBOL, 9, ns
Colombia, CONMEBOL, 8, ns
Chile, CONMEBOL, 7, ns
Nova Zelandia, OFC, 4, sede
Nova Zelandia, OFC, 4, ns
181 changes: 181 additions & 0 deletions copa_menu.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
# Código por Gustavo Albuquerque - 05/05/2021
from PySimpleGUI import PySimpleGUI as sg
from sorteio import sorteio_copa
from v2_simulador_grupos import tabela_grupos, textos_grupo
from v2_matamata import copa_mundo, textos_matamata

# fonte
ft = 'Bahnschrift'

# tamanho da janela
tam = (800, 450)

grupos = sorteio_copa()
GA = tabela_grupos(grupos[0])
GB = tabela_grupos(grupos[1])
GC = tabela_grupos(grupos[2])
GD = tabela_grupos(grupos[3])
GE = tabela_grupos(grupos[4])
GF = tabela_grupos(grupos[5])
GG = tabela_grupos(grupos[6])
GH = tabela_grupos(grupos[7])
copa = copa_mundo(grupos, GA, GB, GC, GD, GE, GF, GG, GH)
oit1, oit2, oit3, oit4, qua1, qua2, sem, ter, fin = textos_matamata(*copa)

lg = [GA, GB, GC, GD, GE, GF, GG, GH]
lf = [oit1, oit2, oit3, oit4, qua1, qua2, sem, ter, fin]
lgru = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
lfas = ['Oitavas de Final 1/4', 'Oitavas de Final 2/4', 'Oitavas de Final 3/4',
'Oitavas de Final 4/4', 'Quartas de Final 1/2', 'Quartas de Final 2/2',
'Semi-Final', 'Decisão de 3º Lugar', 'Final']
i = 0
j = 0

topo = f'Grupo {lgru[i]}'
topo2 = f'{lfas[j]}'

# layout
sg.theme('Dark Brown 1')
menu_principal = [
[sg.Text('Simulador de Copa do Mundo (Iniciante)',
size=(100, 5),
justification='center', font=ft)],
[sg.Text('V2.0 / Gustavo Albuquerque 06/05/2021',
size=(100, 5),
justification='center', font=ft)],
[sg.Button('Começar!')],
]

layout = menu_principal
# janela
janela = sg.Window('Simulador de Copa do Mundo V2.0', layout,
element_justification='c', size=tam)

# eventos
while True:
eventos, valores = janela.read()
if eventos == sg.WINDOW_CLOSED:
break
if eventos == 'Começar!':
layout = [
[sg.Text(topo,
font=ft)],
[sg.Text(textos_grupo(*(lg[i]))[0],
font=ft)],
[sg.Text(textos_grupo(*(lg[i]))[1],
justification='center', font=ft),
sg.Text(textos_grupo(*(lg[i]))[2],
justification='center', font=ft),
sg.Text(textos_grupo(*(lg[i]))[3],
justification='center', font=ft)],
[sg.Button('Próximo')]
]
janela.close()
janela = sg.Window('Simulador de Copa do Mundo Beta V2.0',
layout, element_justification='c', size=tam)

if eventos == 'Próximo':
i = i + 1
topo = f'Grupo {lgru[i]}'
layout = [
[sg.Text(topo,
font=ft)],
[sg.Text(textos_grupo(*(lg[i]))[0],
font=ft)],
[sg.Text(textos_grupo(*(lg[i]))[1],
justification='center', font=ft),
sg.Text(textos_grupo(*(lg[i]))[2],
justification='center', font=ft),
sg.Text(textos_grupo(*(lg[i]))[3],
justification='center', font=ft)],
[sg.Button('Voltar'), sg.Text(' '), sg.Button('Próximo')]
]
janela.close()
janela = sg.Window('Simulador de Copa do Mundo Beta V2.0',
layout, element_justification='c', size=tam)

if eventos == 'Voltar':
if i != 0:
j = 0
i = i - 1
topo = f'Grupo {lgru[i]}'
layout = [
[sg.Text(topo,
font=ft)],
[sg.Text(textos_grupo(*(lg[i]))[0],
font=ft)],
[sg.Text(textos_grupo(*(lg[i]))[1],
justification='center', font=ft),
sg.Text(textos_grupo(*(lg[i]))[2],
justification='center', font=ft),
sg.Text(textos_grupo(*(lg[i]))[3],
justification='center', font=ft)],
[sg.Button('Voltar'), sg.Text(' '), sg.Button('Próximo')]
]
janela.close()
janela = sg.Window('Simulador de Copa do Mundo Beta V2.0',
layout, element_justification='c', size=tam)

if i == 7:
layout = [
[sg.Text(topo,
font=ft)],
[sg.Text(textos_grupo(*(lg[i]))[0],
font=ft)],
[sg.Text(textos_grupo(*(lg[i]))[1],
justification='center', font=ft),
sg.Text(textos_grupo(*(lg[i]))[2],
justification='center', font=ft),
sg.Text(textos_grupo(*(lg[i]))[3],
justification='center', font=ft)],
[sg.Button('Voltar'), sg.Text(' '), sg.Button('Oitavas')]
]
janela.close()
janela = sg.Window('Simulador de Copa do Mundo Beta V2.0',
layout, element_justification='c', size=tam)

if eventos == 'Oitavas':
j = 0
topo2 = f'{lfas[j]}'
layout = [
[sg.Text(topo2,
font=ft)],
[sg.Text(lf[j],
font=ft)],
[sg.Button('Voltar'), sg.Text(' '), sg.Button('Avançar')]
]
janela.close()
janela = sg.Window('Simulador de Copa do Mundo Beta V2.0',
layout, element_justification='c', size=tam)

if eventos == 'Avançar':
if j == 8:
topo2 = 'Fim da Simulação! - Gustavo Albuquerque 06/05/2021'
layout = [
[sg.Text(topo2, justification='center',
font=ft)],

[sg.Button('Voltar'), sg.Text(' '), sg.Button('Fim')]
]
janela.close()
janela = sg.Window('Simulador de Copa do Mundo Beta V2.0',
layout,
element_justification='c', size=(500, 500))
else:
j = j + 1
topo2 = f'{lfas[j]}'
layout = [
[sg.Text(topo2,
font=ft)],
[sg.Text(lf[j],
font=ft)],
[sg.Button('Voltar'), sg.Text(' '), sg.Button('Avançar')]
]
janela.close()
janela = sg.Window('Simulador de Copa do Mundo Beta V2.0',
layout, element_justification='c', size=tam)

if eventos == 'Fim':
janela.close()

print('Código por Gustavo Albuquerque - 06/05/2021')
133 changes: 85 additions & 48 deletions sorteio.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,34 +34,47 @@ def sorteio_copa():
dict_sel = {'País': dados_sel[0], 'Confederação': dados_sel[1],
'Nível': dados_sel[2], 'Sede?': dados_sel[3]}

if '10' in dict_sel.get('Nível'):
if 'sede' in dict_sel.get('Sede?'):
pais_sede = dict_sel

if ('10' in dict_sel.get('Nível') and 'sede'
not in dict_sel.get('Sede?')):
lista10.append(dict_sel)

elif '9' in dict_sel.get('Nível'):
elif ('9' in dict_sel.get('Nível') and 'sede'
not in dict_sel.get('Sede?')):
lista9.append(dict_sel)

elif '8' in dict_sel.get('Nível'):
elif ('8' in dict_sel.get('Nível') and 'sede'
not in dict_sel.get('Sede?')):
lista8.append(dict_sel)

elif '7' in dict_sel.get('Nível'):
elif ('7' in dict_sel.get('Nível') and 'sede'
not in dict_sel.get('Sede?')):
lista7.append(dict_sel)

elif '6' in dict_sel.get('Nível'):
elif ('6' in dict_sel.get('Nível') and 'sede'
not in dict_sel.get('Sede?')):
lista6.append(dict_sel)

elif '5' in dict_sel.get('Nível'):
elif ('5' in dict_sel.get('Nível') and 'sede'
not in dict_sel.get('Sede?')):
lista5.append(dict_sel)

elif '4' in dict_sel.get('Nível'):
elif ('4' in dict_sel.get('Nível') and 'sede'
not in dict_sel.get('Sede?')):
lista4.append(dict_sel)

elif '3' in dict_sel.get('Nível'):
elif ('3' in dict_sel.get('Nível') and 'sede'
not in dict_sel.get('Sede?')):
lista3.append(dict_sel)

elif '2' in dict_sel.get('Nível'):
elif ('2' in dict_sel.get('Nível') and 'sede'
not in dict_sel.get('Sede?')):
lista2.append(dict_sel)

elif '1' in dict_sel.get('Nível'):
elif ('1' in dict_sel.get('Nível') and 'sede'
not in dict_sel.get('Sede?')):
lista1.append(dict_sel)

else:
Expand All @@ -70,10 +83,11 @@ def sorteio_copa():
ordem = (lista10 + lista9 + lista8 + lista7 + lista6 +
lista5 + lista4 + lista3 + lista2 + lista1)

pote1 = list(ordem[:8])
pote2 = list(ordem[8:16])
pote3 = list(ordem[16:24])
pote4 = list(ordem[24:])
pote1 = [pais_sede, ordem[0], ordem[1], ordem[2],
ordem[3], ordem[4], ordem[5], ordem[6]]
pote2 = list(ordem[7:15])
pote3 = list(ordem[15:23])
pote4 = list(ordem[23:])

# print('O pote 1 consiste em:\n {} \n'.format(pote1))
# print('O pote 2 consiste em:\n {} \n'.format(pote2))
Expand All @@ -88,6 +102,27 @@ def sorteio_copa():
# sortear os grupos através dos indices dos potes

# CICLO DE GERAÇÃO DE NUMÉROS ALEATÓRIOS
pote1_sort = [1, 2, 3, 4, 5, 6, 7]
alep1 = choice(pote1_sort)
pote1_sort.remove(alep1)

alep2 = choice(pote1_sort)
pote1_sort.remove(alep2)

alep3 = choice(pote1_sort)
pote1_sort.remove(alep3)

alep4 = choice(pote1_sort)
pote1_sort.remove(alep4)

alep5 = choice(pote1_sort)
pote1_sort.remove(alep5)

alep6 = choice(pote1_sort)
pote1_sort.remove(alep6)

alep7 = choice(pote1_sort)
pote1_sort.remove(alep7)

potes_sort = [0, 1, 2, 3, 4, 5, 6, 7]
# posicoes do pote
Expand Down Expand Up @@ -132,31 +167,31 @@ def sorteio_copa():
# print(potes_sort)
# fim do oitavo ciclo

grupoA = [pote1[ale1], pote2[ale8], pote3[ale7], pote4[ale6]]
grupoB = [pote1[ale2], pote2[ale7], pote3[ale5], pote4[ale4]]
grupoC = [pote1[ale3], pote2[ale6], pote3[ale3], pote4[ale2]]
grupoD = [pote1[ale4], pote2[ale5], pote3[ale1], pote4[ale8]]
grupoE = [pote1[ale5], pote2[ale4], pote3[ale8], pote4[ale1]]
grupoF = [pote1[ale6], pote2[ale3], pote3[ale4], pote4[ale3]]
grupoG = [pote1[ale7], pote2[ale2], pote3[ale6], pote4[ale5]]
grupoH = [pote1[ale8], pote2[ale1], pote3[ale2], pote4[ale7]]
grupoA = [pote1[0], pote2[ale8], pote3[ale7], pote4[ale6]]
grupoB = [pote1[alep1], pote2[ale7], pote3[ale5], pote4[ale4]]
grupoC = [pote1[alep2], pote2[ale6], pote3[ale3], pote4[ale2]]
grupoD = [pote1[alep3], pote2[ale5], pote3[ale1], pote4[ale8]]
grupoE = [pote1[alep4], pote2[ale4], pote3[ale8], pote4[ale1]]
grupoF = [pote1[alep5], pote2[ale3], pote3[ale4], pote4[ale3]]
grupoG = [pote1[alep6], pote2[ale2], pote3[ale6], pote4[ale5]]
grupoH = [pote1[alep7], pote2[ale1], pote3[ale2], pote4[ale7]]

# Grupos contendo apenas as confederações dos países escolhidos
confgrupoA = [pote1[ale1]['Confederação'], pote2[ale8]['Confederação'],
confgrupoA = [pote1[0]['Confederação'], pote2[ale8]['Confederação'],
pote3[ale7]['Confederação'], pote4[ale6]['Confederação']]
confgrupoB = [pote1[ale2]['Confederação'], pote2[ale7]['Confederação'],
confgrupoB = [pote1[alep1]['Confederação'], pote2[ale7]['Confederação'],
pote3[ale5]['Confederação'], pote4[ale4]['Confederação']]
confgrupoC = [pote1[ale3]['Confederação'], pote2[ale6]['Confederação'],
confgrupoC = [pote1[alep2]['Confederação'], pote2[ale6]['Confederação'],
pote3[ale3]['Confederação'], pote4[ale2]['Confederação']]
confgrupoD = [pote1[ale4]['Confederação'], pote2[ale5]['Confederação'],
confgrupoD = [pote1[alep3]['Confederação'], pote2[ale5]['Confederação'],
pote3[ale1]['Confederação'], pote4[ale8]['Confederação']]
confgrupoE = [pote1[ale5]['Confederação'], pote2[ale4]['Confederação'],
confgrupoE = [pote1[alep4]['Confederação'], pote2[ale4]['Confederação'],
pote3[ale8]['Confederação'], pote4[ale1]['Confederação']]
confgrupoF = [pote1[ale6]['Confederação'], pote2[ale3]['Confederação'],
confgrupoF = [pote1[alep5]['Confederação'], pote2[ale3]['Confederação'],
pote3[ale4]['Confederação'], pote4[ale3]['Confederação']]
confgrupoG = [pote1[ale7]['Confederação'], pote2[ale2]['Confederação'],
confgrupoG = [pote1[alep6]['Confederação'], pote2[ale2]['Confederação'],
pote3[ale6]['Confederação'], pote4[ale5]['Confederação']]
confgrupoH = [pote1[ale8]['Confederação'], pote2[ale1]['Confederação'],
confgrupoH = [pote1[alep7]['Confederação'], pote2[ale1]['Confederação'],
pote3[ale2]['Confederação'], pote4[ale7]['Confederação']]
# print('O Grupo A é: \n {}'.format(grupoA))
# print('O Grupo B é: \n {}'.format(grupoB))
Expand Down Expand Up @@ -262,21 +297,23 @@ def sorteio_copa():


# FIM DA FUNÇÃO SORTEIO
grupos = sorteio_copa()
GA = grupos[0]
GB = grupos[1]
GC = grupos[2]
GD = grupos[3]
GE = grupos[4]
GF = grupos[5]
GG = grupos[6]
GH = grupos[7]

print('Grupo A:\n{}\n'.format(GA))
print('Grupo B:\n{}\n'.format(GB))
print('Grupo C:\n{}\n'.format(GC))
print('Grupo D:\n{}\n'.format(GD))
print('Grupo E:\n{}\n'.format(GE))
print('Grupo F:\n{}\n'.format(GF))
print('Grupo G:\n{}\n'.format(GG))
print('Grupo H:\n{}\n'.format(GH))
if __name__ == '__main__':

grupos = sorteio_copa()
GA = grupos[0]
GB = grupos[1]
GC = grupos[2]
GD = grupos[3]
GE = grupos[4]
GF = grupos[5]
GG = grupos[6]
GH = grupos[7]

print('Grupo A:\n{}\n'.format(GA))
print('Grupo B:\n{}\n'.format(GB))
print('Grupo C:\n{}\n'.format(GC))
print('Grupo D:\n{}\n'.format(GD))
print('Grupo E:\n{}\n'.format(GE))
print('Grupo F:\n{}\n'.format(GF))
print('Grupo G:\n{}\n'.format(GG))
print('Grupo H:\n{}\n'.format(GH))
Loading

0 comments on commit 75fd270

Please sign in to comment.