Skip to content

Commit

Permalink
Updates - v2.3
Browse files Browse the repository at this point in the history
Grande atualização!
O que foi implementado:
- Sistema de prorrogação! Adicionei mais uma variável no sistema de simulação de partidas, que quando é mudada para True (ou seja, nas partidas eliminatórias), adiciona mais 30 minutos na duração das partidas. Caso ao fim da prorrogação a peleja continue empatada, assim como antes, vamos aos pênaltis. Falando em pênaltis...
- Melhora no sistema de pênaltis! De acordo com uma matéria publicada no diário de notícias de Portugal (https://www.dn.pt/desportos/estudo-analisou-100-mil-penaltis-em-10-anos-conheca-as-conclusoes-surpreendentes-10538039.html), cerca de 75,5% das penalidades resultam em gol. Atribuí essa proporção ao simulador. Se antes, não era muito incomum ver um resultado de 2x1 nas penalidades, agora é mais comum observarmos um 5x4 ou 4x2, valores que nos parecem mais realistas do que um 2x1. 
- Antes de exibir os resultados diretamente, agora o menu mostra os grupos que foram sorteados! Sendo que, cada linha corresponde ao pote da seleção (Linha 1 - Pote 1 / Linha 2 - Pote 2 e assim por diante)
- O sistema de níveis passou por uma grande atualização. No começo, os níveis eram arbitrários, de 0 a 10. Depois da atualização da engine, na versão 2.2, o sistema de níveis continuou a ser arbitrário, mas agora, de 0 a 99. Agora, o sistema de níveis não é mais arbitrário! Para se obter o nível de uma seleção, no novo modelo, basta pegar a pontuação da mesma no Ranking da FIFA e multiplicá-la por 99/1780, arredondando-a até que não haja nenhuma casa decimal. Para poupar-lhes de trabalho, já atualizei o copa.csv com os dados novos. Sintam-se à vontade para experimentar!
  • Loading branch information
Gustavo-A-Costa authored May 12, 2021
1 parent 1fb48e3 commit 5dd477d
Show file tree
Hide file tree
Showing 5 changed files with 159 additions and 37 deletions.
50 changes: 38 additions & 12 deletions copa_menu.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Código por Gustavo Albuquerque - 05/05/2021
from PySimpleGUI import PySimpleGUI as sg
from sorteio import sorteio_copa
from sorteio import sorteio_copa, texto_sorteio
from v2_simulador_grupos import tabela_grupos, textos_grupo
from v2_matamata import copa_mundo, textos_matamata

Expand All @@ -19,6 +19,7 @@
GF = tabela_grupos(grupos[5])
GG = tabela_grupos(grupos[6])
GH = tabela_grupos(grupos[7])
sor_txt = texto_sorteio(grupos)
copa = copa_mundo(grupos, GA, GB, GC, GD, GE, GF, GG, GH)
oit1, oit2, oit3, oit4, qua1, qua2, sem, ter, fin = textos_matamata(*copa)

Expand All @@ -40,23 +41,48 @@
[sg.Text('Simulador de Copa do Mundo (Iniciante)',
size=(100, 5),
justification='center', font=ft)],
[sg.Text('V2.2 / Gustavo Albuquerque 10/05/2021',
[sg.Text('V2.3 / Gustavo Albuquerque 11/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.2', layout,
janela = sg.Window('Simulador de Copa do Mundo V2.3', layout,
element_justification='c', size=tam)
cabecalho = ['País', 'Pontos', 'G. F.', 'G. S.', 'S. G.']
# eventos
while True:
eventos, valores = janela.read()
if eventos == 'Começar!':
layout = [
[sg.Text('Grupos Sorteados:',
font=ft)],
[sg.Text(sor_txt[0],
justification='center', font=ft),
sg.Text(sor_txt[1],
justification='center', font=ft),
sg.Text(sor_txt[2],
justification='center', font=ft),
sg.Text(sor_txt[3],
justification='center', font=ft)],
[sg.Text(sor_txt[4],
justification='center', font=ft),
sg.Text(sor_txt[5],
justification='center', font=ft),
sg.Text(sor_txt[6],
justification='center', font=ft),
sg.Text(sor_txt[7],
justification='center', font=ft)],
[sg.Button('Continuar!')]
]
janela.close()
janela = sg.Window('Simulador de Copa do Mundo Beta V2.3',
layout, element_justification='c', size=tam)
if eventos == sg.WINDOW_CLOSED:
break
if eventos == 'Começar!':
if eventos == 'Continuar!':
layout = [
[sg.Text(topo,
font=ft)],
Expand All @@ -74,7 +100,7 @@
[sg.Button('Próximo')]
]
janela.close()
janela = sg.Window('Simulador de Copa do Mundo Beta V2.2',
janela = sg.Window('Simulador de Copa do Mundo Beta V2.3',
layout, element_justification='c', size=tam)

if eventos == 'Próximo':
Expand All @@ -97,7 +123,7 @@
[sg.Button('Voltar'), sg.Text(' '), sg.Button('Próximo')]
]
janela.close()
janela = sg.Window('Simulador de Copa do Mundo Beta V2.2',
janela = sg.Window('Simulador de Copa do Mundo Beta V2.3',
layout, element_justification='c', size=tam)

if eventos == 'Voltar':
Expand All @@ -122,7 +148,7 @@
[sg.Button('Voltar'), sg.Text(' '), sg.Button('Próximo')]
]
janela.close()
janela = sg.Window('Simulador de Copa do Mundo Beta V2.2',
janela = sg.Window('Simulador de Copa do Mundo Beta V2.3',
layout, element_justification='c', size=tam)

if i == 7:
Expand All @@ -143,7 +169,7 @@
[sg.Button('Voltar'), sg.Text(' '), sg.Button('Oitavas')]
]
janela.close()
janela = sg.Window('Simulador de Copa do Mundo Beta V2.2',
janela = sg.Window('Simulador de Copa do Mundo Beta V2.3',
layout, element_justification='c', size=tam)

if eventos == 'Oitavas':
Expand All @@ -157,20 +183,20 @@
[sg.Button('Voltar'), sg.Text(' '), sg.Button('Avançar')]
]
janela.close()
janela = sg.Window('Simulador de Copa do Mundo Beta V2.2',
janela = sg.Window('Simulador de Copa do Mundo Beta V2.3',
layout, element_justification='c', size=tam)

if eventos == 'Avançar':
if j == 8:
topo2 = 'Fim da Simulação! - Gustavo Albuquerque 06/05/2021'
topo2 = 'Fim da Simulação! - Gustavo Albuquerque 11/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.2',
janela = sg.Window('Simulador de Copa do Mundo Beta V2.3',
layout,
element_justification='c', size=(500, 500))
else:
Expand All @@ -184,7 +210,7 @@
[sg.Button('Voltar'), sg.Text(' '), sg.Button('Avançar')]
]
janela.close()
janela = sg.Window('Simulador de Copa do Mundo Beta V2.2',
janela = sg.Window('Simulador de Copa do Mundo Beta V2.3',
layout, element_justification='c', size=tam)

if eventos == 'Fim':
Expand Down
5 changes: 3 additions & 2 deletions penaltis.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@


def desempate():
Prob_Pen = [0, 1, 1, 1]
Pen_A = 0
Pen_B = 0
i = 0
Expand All @@ -16,11 +17,11 @@ def desempate():
if (Pen_B + 5 - i) < Pen_A:
break

BatidaA = randint(0, 1)
BatidaA = Prob_Pen[randint(0, 3)]
if BatidaA == 1:
Pen_A = Pen_A + 1

BatidaB = randint(0, 1)
BatidaB = Prob_Pen[randint(0, 3)]
if BatidaB == 1:
Pen_B = Pen_B + 1

Expand Down
65 changes: 61 additions & 4 deletions sorteio.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,9 @@ def sorteio_copa():
ordem = sorted(lista10, key=lambda k: k['Nível'])
pote1 = [pais_sede, ordem[30], ordem[29], ordem[28],
ordem[27], ordem[26], ordem[25], ordem[24]]
print('Pote 1: ', pote1)
pote2 = list(ordem[16:24])
print('Pote 2: ', pote2)
pote3 = list(ordem[8:16])
print('Pote 3: ', pote3)
pote4 = list(ordem[0:8])
print('Pote 4: ', pote4)

# print('O pote 1 consiste em:\n {} \n'.format(pote1))
# print('O pote 2 consiste em:\n {} \n'.format(pote2))
Expand Down Expand Up @@ -251,6 +247,67 @@ def sorteio_copa():
return [grupoA, grupoB, grupoC, grupoD, grupoE, grupoF, grupoG, grupoH]


def texto_sorteio(dados):
textoA = f"""
Grupo A:
{dados[0][0]['País']}
{dados[0][1]['País']}
{dados[0][2]['País']}
{dados[0][3]['País']}\n
"""
textoB = f"""
Grupo B:
{dados[1][0]['País']}
{dados[1][1]['País']}
{dados[1][2]['País']}
{dados[1][3]['País']}\n
"""
textoC = f"""
Grupo C:
{dados[2][0]['País']}
{dados[2][1]['País']}
{dados[2][2]['País']}
{dados[2][3]['País']}\n
"""
textoD = f"""
Grupo D:
{dados[3][0]['País']}
{dados[3][1]['País']}
{dados[3][2]['País']}
{dados[3][3]['País']}\n
"""
textoE = f"""
Grupo E:
{dados[4][0]['País']}
{dados[4][1]['País']}
{dados[4][2]['País']}
{dados[4][3]['País']}\n
"""
textoF = f"""
Grupo F:
{dados[5][0]['País']}
{dados[5][1]['País']}
{dados[5][2]['País']}
{dados[5][3]['País']}\n
"""
textoG = f"""
Grupo G:
{dados[6][0]['País']}
{dados[6][1]['País']}
{dados[6][2]['País']}
{dados[6][3]['País']}\n
"""
textoH = f"""
Grupo H:
{dados[7][0]['País']}
{dados[7][1]['País']}
{dados[7][2]['País']}
{dados[7][3]['País']}\n
"""
return [textoA, textoB, textoC, textoD,
textoE, textoF, textoG, textoH]


# FIM DA FUNÇÃO SORTEIO
if __name__ == '__main__':

Expand Down
32 changes: 16 additions & 16 deletions v2_matamata.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ def copa_mundo(grupos, RA, RB, RC, RD, RE, RF, RG, RH):

# Jogo O1

O1 = resultado(int(A1[1]), int(B2[1]))
O1 = resultado(int(A1[1]), int(B2[1]), pro=True)
pO1 = O1

TO1 = ('\n{} {} x {} {}\n'.format(A1[0],
Expand All @@ -134,7 +134,7 @@ def copa_mundo(grupos, RA, RB, RC, RD, RE, RF, RG, RH):

# Jogo O2

O2 = resultado(int(C1[1]), int(D2[1]))
O2 = resultado(int(C1[1]), int(D2[1]), pro=True)
pO2 = O2

TO2 = ('\n{} {} x {} {}\n'.format(C1[0],
Expand All @@ -156,7 +156,7 @@ def copa_mundo(grupos, RA, RB, RC, RD, RE, RF, RG, RH):
# Fim do jogo O2

# Jogo O3
O3 = resultado(int(E1[1]), int(F2[1]))
O3 = resultado(int(E1[1]), int(F2[1]), pro=True)
pO3 = O3

TO3 = ('\n{} {} x {} {}\n'.format(E1[0],
Expand All @@ -179,7 +179,7 @@ def copa_mundo(grupos, RA, RB, RC, RD, RE, RF, RG, RH):

# Jogo O4

O4 = resultado(int(G1[1]), int(H2[1]))
O4 = resultado(int(G1[1]), int(H2[1]), pro=True)
pO4 = O4

TO4 = ('\n{} {} x {} {}\n'.format(G1[0],
Expand All @@ -202,7 +202,7 @@ def copa_mundo(grupos, RA, RB, RC, RD, RE, RF, RG, RH):

# Jogo O5

O5 = resultado(int(B1[1]), int(A2[1]))
O5 = resultado(int(B1[1]), int(A2[1]), pro=True)
pO5 = O5

TO5 = ('\n{} {} x {} {}\n'.format(B1[0],
Expand All @@ -225,7 +225,7 @@ def copa_mundo(grupos, RA, RB, RC, RD, RE, RF, RG, RH):

# Jogo O6

O6 = resultado(int(D1[1]), int(C2[1]))
O6 = resultado(int(D1[1]), int(C2[1]), pro=True)
pO6 = O6

TO6 = ('\n{} {} x {} {}\n'.format(D1[0],
Expand All @@ -248,7 +248,7 @@ def copa_mundo(grupos, RA, RB, RC, RD, RE, RF, RG, RH):

# Jogo O7

O7 = resultado(int(F1[1]), int(E2[1]))
O7 = resultado(int(F1[1]), int(E2[1]), pro=True)
pO7 = O7

TO7 = ('\n{} {} x {} {}\n'.format(F1[0],
Expand All @@ -271,7 +271,7 @@ def copa_mundo(grupos, RA, RB, RC, RD, RE, RF, RG, RH):
# Fim do jogo O7

# Jogo O8
O8 = resultado(int(H1[1]), int(G2[1]))
O8 = resultado(int(H1[1]), int(G2[1]), pro=True)
pO8 = O8

TO8 = ('\n{} {} x {} {}\n'.format(H1[0],
Expand All @@ -296,7 +296,7 @@ def copa_mundo(grupos, RA, RB, RC, RD, RE, RF, RG, RH):

# Jogo QF1

QF1 = resultado(int(QF1_1[1]), int(QF1_2[1]))
QF1 = resultado(int(QF1_1[1]), int(QF1_2[1]), pro=True)
pQF1 = QF1

TQ1 = ('\n{} {} x {} {}\n'.format(QF1_1[0],
Expand All @@ -320,7 +320,7 @@ def copa_mundo(grupos, RA, RB, RC, RD, RE, RF, RG, RH):

# Jogo QF2

QF2 = resultado(int(QF2_1[1]), int(QF2_2[1]))
QF2 = resultado(int(QF2_1[1]), int(QF2_2[1]), pro=True)
pQF2 = QF2

TQ2 = ('\n{} {} x {} {}\n'.format(QF2_1[0],
Expand All @@ -343,7 +343,7 @@ def copa_mundo(grupos, RA, RB, RC, RD, RE, RF, RG, RH):

# Jogo QF3

QF3 = resultado(int(QF3_1[1]), int(QF3_2[1]))
QF3 = resultado(int(QF3_1[1]), int(QF3_2[1]), pro=True)
pQF3 = QF3

TQ3 = ('\n{} {} x {} {}\n'.format(QF3_1[0],
Expand All @@ -366,7 +366,7 @@ def copa_mundo(grupos, RA, RB, RC, RD, RE, RF, RG, RH):

# Jogo QF4

QF4 = resultado(int(QF4_1[1]), int(QF4_2[1]))
QF4 = resultado(int(QF4_1[1]), int(QF4_2[1]), pro=True)
pQF4 = QF4

TQ4 = ('\n{} {} x {} {}\n'.format(QF4_1[0],
Expand All @@ -390,7 +390,7 @@ def copa_mundo(grupos, RA, RB, RC, RD, RE, RF, RG, RH):
# SEMI FINAL
# Jogo SF1

SF1 = resultado(int(SF1_1[1]), int(SF1_2[1]))
SF1 = resultado(int(SF1_1[1]), int(SF1_2[1]), pro=True)
pSF1 = SF1

TSF1 = ('\n{} {} x {} {}\n'.format(SF1_1[0],
Expand All @@ -417,7 +417,7 @@ def copa_mundo(grupos, RA, RB, RC, RD, RE, RF, RG, RH):

# Jogo SF2

SF2 = resultado(int(SF2_1[1]), int(SF2_2[1]))
SF2 = resultado(int(SF2_1[1]), int(SF2_2[1]), pro=True)
pSF2 = SF2

TSF2 = ('\n{} {} x {} {}\n'.format(SF2_1[0],
Expand All @@ -444,7 +444,7 @@ def copa_mundo(grupos, RA, RB, RC, RD, RE, RF, RG, RH):

# Jogo TL

TL = resultado(int(TL1[1]), int(TL2[1]))
TL = resultado(int(TL1[1]), int(TL2[1]), pro=True)
pTL = TL

TTL = ('\n{} {} x {} {}\n'.format(TL1[0],
Expand Down Expand Up @@ -475,7 +475,7 @@ def copa_mundo(grupos, RA, RB, RC, RD, RE, RF, RG, RH):

# Jogo final

final = resultado(int(FINAL_1[1]), int(FINAL_2[1]))
final = resultado(int(FINAL_1[1]), int(FINAL_2[1]), pro=True)
pfinal = final

TFINAL = ('\n{} {} x {} {}\n'.format(FINAL_1[0],
Expand Down
Loading

0 comments on commit 5dd477d

Please sign in to comment.