Skip to content

Commit

Permalink
Merge pull request #38 from Tilk1/retoques_finales
Browse files Browse the repository at this point in the history
Retoques finales
  • Loading branch information
Tilk1 authored Sep 3, 2020
2 parents 5c408b5 + 668f60c commit a373174
Show file tree
Hide file tree
Showing 7 changed files with 208 additions and 75 deletions.
2 changes: 1 addition & 1 deletion posponer.txt

Large diffs are not rendered by default.

47 changes: 47 additions & 0 deletions pruebas/graph.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import sys
import random

import PySimpleGUI as sg
mode = "tkinter"
mysize = (2,1)
BAR_WIDTH = 100
BAR_SPACING = 90
EDGE_OFFSET = 3
GRAPH_SIZE = (300,2000)
DATA_SIZE = (800,500)

bcols = ['blue','red','green','blue','red','green','blue','red','green','green']
myfont = "Ariel 18"

graph = sg.Graph(GRAPH_SIZE, (0,0), DATA_SIZE)


layout = [[sg.Text('Pi Sensor Values',font=myfont)],
[graph],
# [sg.Text('1',text_color=bcols[0],font=myfont,size= mysize ),
# sg.Text('2',text_color=bcols[1],font=myfont,size= mysize ),
# sg.Text('3',text_color=bcols[2],font=myfont,size= mysize),
# sg.Text('4',text_color=bcols[2],font=myfont,size= mysize),
# sg.Text('5',text_color=bcols[2],font=myfont,size= mysize),
# sg.Text('6',text_color=bcols[2],font=myfont,size= mysize),
# sg.Text('7',text_color=bcols[2],font=myfont,size= mysize),
# sg.Text('8',text_color=bcols[2],font=myfont,size= mysize),
# sg.Text('9',text_color=bcols[2],font=myfont,size= mysize),
# sg.Text('10',text_color=bcols[2],font=myfont,size= mysize)],
[sg.Exit()]]

window = sg.Window('Real Time Charts', layout)
while True:
event, values = window.read(timeout=2000)
if event in (None, 'Exit'):
break

graph.erase()
for i in range(10):
# Random value are used. Add interface to Pi sensors here:
graph_value = random.randint(0, 400)
graph.draw_rectangle(top_left=(i * BAR_SPACING + EDGE_OFFSET, graph_value),
bottom_right=(i * BAR_SPACING + EDGE_OFFSET + BAR_WIDTH, 0), fill_color=bcols[i])
#<span id="mce_SELREST_start" style="overflow:hidden;line-height:0;"></span>graph.draw_text(text=str(graph_value), location=(i*BAR_SPACING+EDGE_OFFSET+15, graph_value+10),color=bcols[i],font=myfont)

window.close()
2 changes: 1 addition & 1 deletion puntajes.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[["jacinto", 22, "Nivel f\u00e1cil", "2020-08-06"], ["spiderman", 33, "Nivel medio", "2019-10-22"], ["reju", 45, "Nivel medio", "2019-02-01"], ["pipo", 2, "Nivel medio", "2017-01-01"], ["mike", 7, "Nivel f\u00e1cil", "2020-08-06"], ["rosa", 10, "Nivel f\u00e1cil", "2017-03-22"], ["pepe", 9, "Nivel f\u00e1cil", "2001-03-22"], ["bartolomeo", 21, "Nivel f\u00e1cil", "2020-08-06"], ["pipa", 45, "Nivel medio", "2020-08-06"], ["batman", 1021, "Nivel medio", "2019-06-12"]]
[["SAN-PC", 0, "Nivel f\u00e1cil", "2020-08-29"], ["pepe", -1, "Nivel f\u00e1cil", "2001-03-22"], ["mike", 7, "Nivel f\u00e1cil", "2020-08-06"], ["rosa", 10, "Nivel f\u00e1cil", "2017-03-22"], ["bartolomeo", 21, "Nivel f\u00e1cil", "2020-08-06"], ["jacinto", 22, "Nivel f\u00e1cil", "2020-08-06"], ["spiderman", 33, "Nivel medio", "2019-10-22"], ["reju", 45, "Nivel medio", "2019-02-01"], ["pipa", 45, "Nivel medio", "2020-08-06"], ["batman", 102, "Nivel medio", "2019-06-12"]]
93 changes: 62 additions & 31 deletions scrabble/ScrabbleAR.py

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion scrabble/compu.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def turno_maquina(tr,puntaje,coordPlay, tableroIm, tableroFichas, letrasM, windo
"""
botones_disable = True
funciones.activar_desactivar_Botones_basicos(window, botones_disable)

window['-TURNO-'].update('Turno:Compu')
if nivel == 'Nivel fácil': # estos intentos deben setearse segun la dificultad
intentos_formar = 3
intentos_ubicar = 5
Expand Down Expand Up @@ -145,4 +145,5 @@ def turno_maquina(tr,puntaje,coordPlay, tableroIm, tableroFichas, letrasM, windo

# vuelve a robar fichas de a cuerdo a las que le faltan
fin = funcionesFichas.repartir(letrasM, bolsa, window)
window['-TURNO-'].update('Turno:Usuario')
return fin,puntaje, tr
112 changes: 83 additions & 29 deletions scrabble/funciones.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@
import PySimpleGUI as sg
import json
from datetime import date
import time
import sys
import getpass
import random

cwd = os.getcwd()

Expand Down Expand Up @@ -140,6 +144,8 @@ def activarBotones(window):
window["u4"].Update(disabled=False)
window["u5"].Update(disabled=False)
window["u6"].Update(disabled=False)
window["exit"].Update(disabled=False)
window["posponer"].Update(disabled=False)
window.FindElement("intercambiar").Widget.config(cursor="exchange")
window.FindElement("palabra").Widget.config(cursor="heart")
window.FindElement("sacar").Widget.config(cursor="pirate")
Expand All @@ -161,11 +167,36 @@ def mostrar_top10(hide,puntajes, configuracion):
columna = [
[sg.Image(os.path.join(cwd,'imagenes','rankings.png'))],
]

bcols = ['salmon','orange','salmon','orange','salmon','orange','salmon','orange','salmon','orange']
mysize = (2,1)
BAR_WIDTH = 65
BAR_SPACING = 70
EDGE_OFFSET = 3
GRAPH_SIZE = (452,150)
#tomo como el elemento mas grande de referencia
puntaje_mayor = (puntajes[0][1])
DATA_SIZE = (700,puntaje_mayor+1) #le sumo uno xq sino no entra
graph = sg.Graph(GRAPH_SIZE, (0,0), DATA_SIZE)
mysize = (4,1)
myfont = "Fixedsys"
layout = [
[sg.Text(' TOP PUNTAJES ALTOS', font=('Fixedsys', 20),
[sg.Text(' TOP PUNTAJES ALTOS', font=('Fixedsys', 20),
text_color='salmon', background_color='white'), sg.Image(os.path.join(cwd, 'imagenes','trofeo.png'))],
[sg.Column(columna, ""), sg.Table(puntajes, headings, select_mode="none", col_widths=ancho_columnas,
num_rows=10, text_color="black", auto_size_columns=True, font=('Fixedsys', 6))],
[sg.Text('Comparativa grafica', size=(60,1),justification='center', text_color='black',font=('Fixedsys', 15), background_color='white')],
[graph],
[sg.Text('1°',text_color=bcols[0],font=myfont,size= mysize,justification='center', background_color='white' ),
sg.Text('2°',text_color=bcols[1],font=myfont,size= mysize,justification='center', background_color='white' ),
sg.Text('3°',text_color=bcols[2],font=myfont,size= mysize,justification='center', background_color='white'),
sg.Text('4°',text_color=bcols[2],font=myfont,size= mysize,justification='center', background_color='white'),
sg.Text('5°',text_color=bcols[2],font=myfont,size= mysize,justification='center', background_color='white'),
sg.Text('6°',text_color=bcols[2],font=myfont,size= mysize,justification='center', background_color='white'),
sg.Text('7°',text_color=bcols[2],font=myfont,size= mysize,justification='center', background_color='white'),
sg.Text('8°',text_color=bcols[2],font=myfont,size= mysize,justification='center', background_color='white'),
sg.Text('9°',text_color=bcols[2],font=myfont,size= mysize,justification='center', background_color='white'),
sg.Text('10°',text_color=bcols[2],font=myfont,size= mysize,justification='center', background_color='white')],
[sg.Text(' ', font=('Fixedsys', 18), background_color='white'), sg.Button(
'VOLVER', font=('Fixedsys', 18), button_color=('orange', 'White'), key='volver')],
]
Expand All @@ -174,7 +205,11 @@ def mostrar_top10(hide,puntajes, configuracion):
if(hide):
top10.UnHide()
while True:
event, values = top10.read()
event, values = top10.read(2000)
for i in range(10):
graph_value = puntajes[i][1]
graph.draw_rectangle(top_left=(i * BAR_SPACING + EDGE_OFFSET, graph_value),
bottom_right=(i * BAR_SPACING + EDGE_OFFSET + BAR_WIDTH, 0), fill_color=bcols[i])
print(event, values)
if event == 'volver' or event == None:
break
Expand Down Expand Up @@ -203,28 +238,25 @@ def cargar(puntajeU,name,nivel):
try:
with open(os.path.join(cwd,"puntajes.json")) as arc:
datos = json.load(arc)
if not datos:
sg.popup('Archivo de puntajes no encontrado')
else:
puntajes = sorted(datos, reverse=False, key=lambda x: x[1])
puntajes = sorted(datos, reverse=False, key=lambda x: x[1])

except FileNotFoundError:
sg.popup('Archivo de puntajes no encontrado')
sg.popup('Archivo de puntajes no encontrado, creando uno nuevo vacio',keep_on_top=True)
datos = [["", 0, "", ""], ["", 0, "", ""], ["", 0, "", ""], ["", 0, "", ""], ["", 0, "", ""], ["", 0, "", ""], ["", 0, "", ""], ["", 0, "", ""], ["", 0, "", ""], ["", 0, "", ""]]
with open((os.path.join(cwd,"puntajes.json")), "w") as arc:
json.dump(datos,arc)
puntajes = sorted(datos, reverse=False, key=lambda x: x[1])

if puntajeU > puntajes[0][1]:
quedotop10 = True
else:
quedotop10 = False
print('FALSOO')

if quedotop10 == True:
with open(os.path.join(cwd,'puntajes.json'),'w') as arc2: #quito al ultimo
print('LEEE 1111')
puntajes[0][0] = name
puntajes[0][2] = nivel
json.dump(puntajes, arc2)

def mostrar_fin_partida(puntajeU,puntajeM):
def mostrar_fin_partida(puntajeU,puntajeM,name,nivel,ingresoxtimer):
username = getpass.getuser()
cargar(puntajeU,name,nivel)
print(ingresoxtimer)
"""
Recibe algunos datos de la partida para colocar en el top10 en caso de superar
el puntaje del que esta ultimo. (Con json una lista verificando el ultimo elemento)
Expand All @@ -234,27 +266,19 @@ def mostrar_fin_partida(puntajeU,puntajeM):
with open((os.path.join(cwd,"puntajes.json"))) as arc:
datos = json.load(arc)
if not datos:
sg.popup('Archivo de puntajes no encontrado')
sg.popup('Archivo de puntajes no encontrado',keep_on_top=True)
else:
puntajes = sorted(datos, reverse=False, key=lambda x: x[1])

except FileNotFoundError:
sg.popup('Archivo de puntajes no encontrado')
sg.popup('Archivo de puntajes no encontrado',keep_on_top=True)

# me fijo si supera al mas bajo de todos para quedar en el top 10
if puntajeU > puntajes[0][1]:
quedotop10 = True
else:
quedotop10 = False

if quedotop10 == True:
with open(os.path.join(cwd,'puntajes.json'),'w') as arc2: #quito al ultimo
print('LEEE 222')
today = date.today()
puntajes[0][1] = puntajeU # puntaje
puntajes[0][3] = str(today) #fecha
json.dump(puntajes, arc2)

# agrego el nuevo puntaje una vez que lo haya escrito y toco el boton OK
#puntajes.append = ["juuuu", 999, "easy", "3/3/2050"]
#print(puntajes)
Expand All @@ -271,6 +295,17 @@ def mostrar_fin_partida(puntajeU,puntajeM):
imagen_ganador = 'robot.gif'
color_compu = 'green'

datos_automaticos = False
if ingresoxtimer == True: # esto es pq ya no me deja ingresar mas nada
if quedotop10 == True:
today = date.today()
datos_automaticos = True
with open(os.path.join(cwd,'puntajes.json'),'w') as arc2: #quito al ultimo
puntajes[0][0] = username
puntajes[0][2] = nivel
puntajes[0][1] = puntajeU # puntaje
puntajes[0][3] = str(today) #fecha
json.dump(puntajes, arc2)

layout = [
[sg.Text('¡La partida ha terminado!', font=('Fixedsys', 30),text_color='salmon', background_color='white')],
Expand All @@ -281,15 +316,34 @@ def mostrar_fin_partida(puntajeU,puntajeM):
[sg.Text('',background_color= 'White')],
[sg.Text('Puntuacion Usuario :', font=('Fixedsys', 17),text_color='salmon', background_color='white'),sg.Text(str(puntajeU), font=('Fixedsys', 20),text_color=color_usuario, background_color='white')],
[sg.Text('Puntuacion Computadora:', font=('Fixedsys', 17),text_color='salmon', background_color='white'),sg.Text(str(puntajeM), font=('Fixedsys', 20),text_color=color_compu, background_color='white')],
[sg.Text('Escribe tu nombre', font=('Fixedsys', 20),text_color='salmon', background_color='white', visible= False),sg.Input(size=(12,8),font=('Fixedsys', 17),visible= False),sg.Button('OK', size=(5,2), font=('Fixedsys', 15), button_color=('orange', 'White'), key='volver',visible= False)],
[sg.Text('Escribe tu nombre', font=('Fixedsys', 20),text_color='salmon', key='-NOMBRE-', background_color='white', visible= quedotop10),sg.Input(size=(12,8),font=('Fixedsys', 17),key='-INPUT-',visible= quedotop10,disabled=datos_automaticos),sg.Button('OK', size=(5,2), font=('Fixedsys', 15), button_color=('orange', 'White'), key='-OK-',visible= quedotop10,disabled=datos_automaticos)],
[sg.Text(' datos cargados!', font=('Fixedsys', 20),text_color='green', background_color='white',key='-CARGADO-',visible=False)],
[sg.Text(username, font=('Fixedsys', 17),text_color='green', background_color='white',key='-CARGADO-',visible=datos_automaticos)],
[sg.Text('tus datos han sido cargados automaticamente, no necesitas ingresar nada. Uf que alivio!', font=('Fixedsys', 15),text_color='green', background_color='white',key='-CARGADO-',visible=datos_automaticos)],
[sg.Text(' ', font=('Fixedsys', 45),background_color= 'White'), sg.Button('SALIR', font=('Fixedsys', 18), button_color=('orange', 'White'), key='salir2',visible=False)],
]

fin_partida = sg.Window("fin", layout, resizable=True,finalize=True)
while True:
event, values = fin_partida.read()
event, values = fin_partida.read(10)
fin_partida.UnHide()
print(event,values)
if event == '-OK-':
fin_partida['-OK-'].update(visible=False)
fin_partida['-INPUT-'].update(visible=False)
fin_partida['-NOMBRE-'].update(visible=False)
fin_partida['-CARGADO-'].update(visible=True)
if quedotop10 == True:
today = date.today()
with open(os.path.join(cwd,'puntajes.json'),'w') as arc2: #quito al ultimo
if (values['-INPUT-']) == '': #en el caso q no ingreso nada, le toma el usuario
puntajes[0][0] = getpass.getuser()
else:
puntajes[0][0] = values['-INPUT-']
puntajes[0][2] = nivel
puntajes[0][1] = puntajeU # puntaje
puntajes[0][3] = str(today) #fecha
json.dump(puntajes, arc2)
if event == 'salir2' or event == None:
break
fin_partida.Close()
fin_partida.Close()
sys.exit()
24 changes: 12 additions & 12 deletions scrabble/funcionesFichas.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ def intercambiarFichas(letras, bolsa, copia, window, cant):
"""
if(bolsa=={}):
sg.popup('No quedan mas fichas en la bolsa, no se ha podido realizar el intercambio')
sg.popup('No quedan mas fichas en la bolsa, no se ha podido realizar el intercambio',keep_on_top=True)
else:
letra=''
x=0
Expand Down Expand Up @@ -109,9 +109,9 @@ def intercambiarFichas(letras, bolsa, copia, window, cant):
x=x+1
sigo=False
if(letra=='vacio'):
sg.popup('No quedan mas fichas en la bolsa, se han intercambiado las posibles')
sg.popup('No quedan mas fichas en la bolsa, se han intercambiado las posibles',keep_on_top=True)
elif(q=='u'):
sg.popup('Intercambio realizado!')
sg.popup('Intercambio realizado!',keep_on_top=True)


def ponerFicha(window,letra, puestas, event):
Expand Down Expand Up @@ -185,9 +185,9 @@ def colocarFicha(inter,tableroI,tableroF,letras, window, colores,coordPlay, bols
elif(isinstance(event, tuple)): #Si toco el tablero
if(poner and letra!=''): #Si tengo una ficha en mano (poner=True) y (letra!='')
if(event in tableroF): #Si estoy intentando poner la ficha arriba de una de otra partida
sg.popup('No puede colocar una ficha sobre una de una jugada anterior')
sg.popup('No puede colocar una ficha sobre una de una jugada anterior',keep_on_top=True)
elif(event in puestas):
sg.popup('No puede colocar la letra en un lugar ocupado, retirela si lo desea') #Si intento poner una ficha sobre las ya puestas en esa jugada
sg.popup('No puede colocar la letra en un lugar ocupado, retirela si lo desea',keep_on_top=True) #Si intento poner una ficha sobre las ya puestas en esa jugada
else:
correcta=True #correcta me dice si elegi un lugar del tablero correcto para poner la ficha
if(nro==0): #La primera es en caso de cuando no es la primera jugada de toda la partida
Expand All @@ -214,7 +214,7 @@ def colocarFicha(inter,tableroI,tableroF,letras, window, colores,coordPlay, bols
letra=''
else:
if((event in puestas) and (event==ficha)): #Si no tengo una ficha en mano, pero toco una ficha colocada en el tablero
s1=sg.popup_yes_no('Quiere sacar la ficha?')
s1=sg.popup_yes_no('Quiere sacar la ficha?',keep_on_top=True)
if(s1=='Yes'): #Si quiero sacar la ficha
sacarFicha(tableroI, puestas, originales,letras, event, window)
if(direc=='izq'): #la pos del tablero en donde podes poner va a ser -1 ya que en donde estaba la ficha ya no esta
Expand All @@ -223,20 +223,20 @@ def colocarFicha(inter,tableroI,tableroF,letras, window, colores,coordPlay, bols
ficha=(ficha[0]-1,ficha[1])
nro=nro-1 #Como saco una ficha, el nro de ficha puesto es -1, de esta forma puedo volver a elegir la direccion si saco la 2da ficha de la palabra y si saco la primera ficha, poder seguir poniendo fichas(Si saco la primera y nro es >2 va asuponer que hay una direccion o que habia una ficha previa puesta con la cual calcularla)
elif(not event in (tableroF, puestas)): #Si no tenes una letra en mano y estas tocando un lugar en donde no hay nada
sg.popup('No ha seleccionado una ficha para colocar')
sg.popup('No ha seleccionado una ficha para colocar',keep_on_top=True)
elif(event=='sacar'):
s2=sg.popup_yes_no('Quiere sacar todas las fichas?')
s2=sg.popup_yes_no('Quiere sacar todas las fichas?',keep_on_top=True)
if(s2=='Yes'):
sacarFicha(tableroI, puestas, originales, letras, event, window)
nro=0
elif(event=='intercambiar'): #Si intento intercambiar fichas durante la jugada, tienen que estar todas las fichas en el atril, no puede haber puestas. UNa vez que saque todas puedo hacer el intercambio y vuelvo a empezar a colocar
if(inter>=3):
sg.popup('el numero máximo de intercambios es 3, ha llegado al límite')
sg.popup('el numero máximo de intercambios es 3, ha llegado al límite',keep_on_top=True)
else:
if(puestas=={}):
salir=True
else:
sg.popup('Para hacer un intercambio no puede haber fichas colocadas en el tablero de la jugada actual, saquelas para poder hacerlo, pero perdera el turno')
sg.popup('Para hacer un intercambio no puede haber fichas colocadas en el tablero de la jugada actual, saquelas para poder hacerlo, pero perdera el turno',keep_on_top=True)
elif(event=='palabra'): #Si toco el boton 'palabra', entonces significa que analizo si existe o no lo que forme en el tablero
ponerpal=True
if(tableroF=={}):
Expand All @@ -252,11 +252,11 @@ def colocarFicha(inter,tableroI,tableroF,letras, window, colores,coordPlay, bols
tableroF[x]=puestas[x] #agrego las fichas que se confirmaron forman una palbra en el diccionario de toda las fichas del juego, no de solo esa partida
salir=True
else:
sg.popup('No existe esa palabra, vuelva a intentarlo')
sg.popup('No existe esa palabra, vuelva a intentarlo',keep_on_top=True)
sacarFicha(tableroI, puestas, originales, letras, 'sacar', window) #saco todas las fichas porque esa palabra no existe, no termina la jugada, vuelvo a intentar
nro=0
else:
sg.popup('La primera palabra del juego debe pasar por el inicio')
sg.popup('La primera palabra del juego debe pasar por el inicio',keep_on_top=True)
sacarFicha(tableroI, puestas, originales, letras, 'sacar', window) #saco todas las fichas porque esa palabra no existe, no termina la jugada, vuelvo a intentar
nro=0
if(salir!=True):
Expand Down

0 comments on commit a373174

Please sign in to comment.