Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # librerías que vamos a usar
- import random
- # creamos la función que usaremos para imprimir
- def imprimir(diccionario: dict):
- # SI introducimos los valores del diccionario, los separamos de forma que:
- lista_valores = list(diccionario.values())
- for i in range(len(lista_valores)):
- if lista_valores[i] == 0:
- lista_valores[i] = ' '
- print('''
- _____________________________
- |{:>7}{:>7}{:>7}{:>7}
- |{:^6}{}{:^6}{}{:^6}{}{:^6}{}
- |______|______|______|______|
- |{:>7}{:>7}{:>7}{:>7}
- |{:^6}{}{:^6}{}{:^6}{}{:^6}{}
- |______|______|______|______|
- |{:>7}{:>7}{:>7}{:>7}
- |{:^6}{}{:^6}{}{:^6}{}{:^6}{}
- |______|______|______|______|
- |{:>7}{:>7}{:>7}{:>7}
- |{:^6}{}{:^6}{}{:^6}{}{:^6}{}
- |______|______|______|______|
- '''.format(
- '|', '|', '|', '|',
- lista_valores[0], '|', lista_valores[1], '|', lista_valores[2], '|', lista_valores[3], '|',
- '|', '|', '|', '|',
- lista_valores[4], '|', lista_valores[5], '|', lista_valores[6], '|', lista_valores[7], '|',
- '|', '|', '|', '|',
- lista_valores[8], '|', lista_valores[9], '|', lista_valores[10], '|', lista_valores[11], '|',
- '|', '|', '|', '|',
- lista_valores[12], '|', lista_valores[13], '|', lista_valores[14], '|', lista_valores[15], '|'))
- # creamos una función que nos escogerá un índice al azar donde colocar los valores al azar
- def posicion_azar(diccionario: dict):
- opciones = []
- for items in list(diccionario.keys()):
- if diccionario[items] == 0:
- opciones.append(items)
- azar = random.choice(opciones)
- return azar
- # creamos una función que nos devuelve un valor al azar
- def valor_azar():
- azar = random.randrange(2, 5, 2)
- return(azar)
- # tenemos esta función que solo utilizaremos al final para comprobar si hemos perdido
- def comprobacion_derrota(diccionario: dict) -> bool:
- lista_valores = list(diccionario.values())
- for items in lista_valores:
- lista_valores.remove(items)
- if items in lista_valores:
- return False
- # creamos un diccionario donde iremos almacenando todos los valores del juego:
- valores = {'a1': 0, 'a2': 0, 'a3': 0, 'a4': 0, 'b1': 0, 'b2': 0, 'b3': 0, 'b4': 0, 'c1': 0, 'c2': 0, 'c3': 0, 'c4': 0, 'd1': 0, 'd2': 0, 'd3': 0, 'd4': 0}
- # damos por sentado que no perdemos antes de empezar:
- perder = False
- # hasta que no perdamos no pararemos de ejecutar el código:
- while not perder:
- # lo primero que debemos hacer es comprobar si estamos empezando la partida (por lo que tendríamos que generar 2 valores aleatorios
- # para empezar) o simplemente seguimos jugando
- # Para ello, lo que haremos será sumar todos los valores de la partida, y si son 0, es que aún no hay fichas en juego
- suma_inicio = 0
- for v in valores.values():
- suma_inicio += int(v)
- # Comparamos ahora el resultado para obtener una conclusión
- if suma_inicio == 0:
- # Llamamos a las funciones que hemos creado anteriormente con la finalidad de crear valores
- valores[posicion_azar(valores)] = valor_azar()
- valores[posicion_azar(valores)] = valor_azar()
- imprimir(valores)
- # empezamos a jugar; los movimientos posibles son w(arriba) a(izquierda) d(derecha) s(abajo)
- # la variable que utilizaremos para registrar los movimientos sera 'movimiento'
- moviemiento = ' '
- while moviemiento not in ['w', 'W', 'a', 'A', 's', 'S', 'd', 'D']:
- moviemiento = input('Introduzca su moviemiento')
- # aquí empezamos a jugar
- if moviemiento in ['w', 'W']:
- # movemos hacia arriba
- ###################################
- # Casos en los que se acumula en A1:
- ###################################
- # a1 = 0, b1 = algo, c1= cualquiera, d1= cualquiera
- if valores['a1'] == 0 and valores['b1'] != 0:
- if valores['b1'] == valores['c1']:
- valores['a1'] = valores['b1'] + valores['c1']
- valores['b1'] = valores['d1']
- valores['c1'] = 0
- valores['d1'] = 0
- else:
- valores['a1'] = valores['b1']
- if valores['c1'] == valores['d1'] or valores['c1'] == 0:
- valores['b1'] = valores['c1'] + valores['d1']
- valores['c1'] = 0
- valores['d1'] = 0
- else:
- valores['b1'] = valores['c1']
- valores['c1'] = valores['d1']
- valores['d1'] = 0
- # a1 = 0, b1 = 0, c1 = algo, d1 = cualquier cosa
- elif valores['a1'] == 0 and valores['b1'] == 0 and valores['c1'] != 0:
- if valores['c1'] == valores['d1']:
- valores['a1'] = valores['c1'] + valores['d1']
- valores['b1'] = 0
- valores['c1'] = 0
- valores['d1'] = 0
- else:
- valores['a1'] = valores['c1']
- valores['b1'] = valores['d1']
- valores['c1'] = 0
- valores['d1'] = 0
- # a1 = 0, b1 = 0, c1 = 0, d1 = cualquier cosa
- elif valores['a1'] == 0 and valores['b1'] == 0 and valores['c1'] == 0 and valores['d1'] != 0:
- valores['a1'] = valores['d1']
- valores['d1'] = 0
- # casos en los que a vale algo
- #
- # a1 = b1 (es decir, se suman)
- elif valores['a1'] == valores['b1']:
- # además coinciden c1 y d1, por lo que se suman también
- if valores['c1'] == valores['d1']:
- valores['a1'] = valores['a1'] + valores['b1']
- valores['b1'] = valores['c1'] + valores['d1']
- valores['c1'] = 0
- valores['d1'] = 0
- # no coinciden, asi que solo se ordenan
- else:
- valores['a1'] = valores['a1'] + valores['b1']
- valores['b1'] = valores['c1']
- valores['c1'] = valores['d1']
- valores['d1'] = 0
- # casos en los que a1 y b1 son distintos de 0, pero no son iguales, por lo que b puede sumar con c o con d
- elif valores['b1'] != 0:
- #casos en los que c1 es cero, por lo que d se acumula si es dintinto de b
- if valores['c1'] == 0:
- if valores['b1'] == valores['d1']:
- valores['b1'] = valores['b1'] + valores['d1']
- valores['d1'] = 0
- else:
- valores['c1'] = valores['d1']
- valores['d1'] = 0
- # casos en los que c es dinstinto de 0
- else:
- if valores['b1'] == valores['c1']:
- valores['b1'] = valores['b1'] + valores['c1']
- valores['c1'] = valores['d1']
- valores['d1'] = 0
- else:
- if valores['c1'] == valores['d1']:
- valores['c1'] = valores['c1'] + valores['d1']
- valores['d1'] = 0
- # casos en los que b es 0 siendo a diferente de 0, hay que comprobar si c es cero tambien
- elif valores['c1'] == 0:
- if valores['d1'] == valores['a1']:
- valores['a1'] = valores['a1'] + valores['d1']
- valores['d1'] = 0
- else:
- valores['b1'] = valores['d1']
- valores['d1'] = 0
- elif valores['a1'] == valores['c1']:
- valores['a1'] = valores['a1'] + valores['c1']
- valores['b1'] = valores['d1']
- valores['c1'] = 0
- valores['d1'] = 0
- elif valores['c1'] == valores['d1']:
- valores['b1'] = valores['c1'] + valores['d1']
- valores['c1'] = 0
- valores['d1'] = 0
- elif valores['c1'] != valores['d1']:
- valores['b1'] = valores['c1']
- valores['c1'] = valores['d1']
- valores['d1'] = 0
- ##############################
- # Casos columna 2
- ##############################
- if valores['a2'] == 0 and valores['b2'] != 0:
- if valores['b2'] == valores['c2']:
- valores['a2'] = valores['b2'] + valores['c2']
- valores['b2'] = valores['d2']
- valores['c2'] = 0
- valores['d2'] = 0
- else:
- valores['a2'] = valores['b2']
- if valores['c2'] == valores['d2'] or valores['c2'] == 0:
- valores['b2'] = valores['c2'] + valores['d2']
- valores['c2'] = 0
- valores['d2'] = 0
- else:
- valores['b2'] = valores['c2']
- valores['c2'] = valores['d2']
- valores['d2'] = 0
- # a2 = 0, b2 = 0, c2 = algo, d2 = cualquier cosa
- elif valores['a2'] == 0 and valores['b2'] == 0 and valores['c2'] != 0:
- if valores['c2'] == valores['d2']:
- valores['a2'] = valores['c2'] + valores['d2']
- valores['b2'] = 0
- valores['c2'] = 0
- valores['d2'] = 0
- else:
- valores['a2'] = valores['c2']
- valores['b2'] = valores['d2']
- valores['c2'] = 0
- valores['d2'] = 0
- # a2 = 0, b2 = 0, c2 = 0, d2 = cualquier cosa
- elif valores['a2'] == 0 and valores['b2'] == 0 and valores['c2'] == 0 and valores['d2'] != 0:
- valores['a2'] = valores['d2']
- valores['d2'] = 0
- # casos en los que a vale algo
- #
- # a2 = b2 (es decir, se suman)
- elif valores['a2'] == valores['b2']:
- # además coinciden c2 y d2, por lo que se suman también
- if valores['c2'] == valores['d2']:
- valores['a2'] = valores['a2'] + valores['b2']
- valores['b2'] = valores['c2'] + valores['d2']
- valores['c2'] = 0
- valores['d2'] = 0
- # no coinciden, asi que solo se ordenan
- else:
- valores['a2'] = valores['a2'] + valores['b2']
- valores['b2'] = valores['c2']
- valores['c2'] = valores['d2']
- valores['d2'] = 0
- # casos en los que a2 y b2 son distintos de 0, pero no son iguales, por lo que b puede sumar con c o con d
- elif valores['b2'] != 0:
- #casos en los que c2 es cero, por lo que d se acumula si es dintinto de b
- if valores['c2'] == 0:
- if valores['b2'] == valores['d2']:
- valores['b2'] = valores['b2'] + valores['d2']
- valores['d2'] = 0
- else:
- valores['c2'] = valores['d2']
- valores['d2'] = 0
- # casos en los que c es dinstinto de 0
- else:
- if valores['b2'] == valores['c2']:
- valores['b2'] = valores['b2'] + valores['c2']
- valores['c2'] = valores['d2']
- valores['d2'] = 0
- else:
- if valores['c2'] == valores['d2']:
- valores['c2'] = valores['c2'] + valores['d2']
- valores['d2'] = 0
- # casos en los que b es 0 siendo a diferente de 0, hay que comprobar si c es cero tambien
- elif valores['c2'] == 0:
- if valores['d2'] == valores['a2']:
- valores['a2'] = valores['a2'] + valores['d2']
- valores['d2'] = 0
- else:
- valores['b2'] = valores['d2']
- valores['d2'] = 0
- elif valores['a2'] == valores['c2']:
- valores['a2'] = valores['a2'] + valores['c2']
- valores['b2'] = valores['d2']
- valores['c2'] = 0
- valores['d2'] = 0
- elif valores['c2'] == valores['d2']:
- valores['b2'] = valores['c2'] + valores['d2']
- valores['c2'] = 0
- valores['d2'] = 0
- elif valores['c2'] != valores['d2']:
- valores['b2'] = valores['c2']
- valores['c2'] = valores['d2']
- valores['d2'] = 0
- ####################
- # Columna 3
- ####################
- if valores['a3'] == 0 and valores['b3'] != 0:
- if valores['b3'] == valores['c3']:
- valores['a3'] = valores['b3'] + valores['c3']
- valores['b3'] = valores['d3']
- valores['c3'] = 0
- valores['d3'] = 0
- else:
- valores['a3'] = valores['b3']
- if valores['c3'] == valores['d3'] or valores['c3'] == 0:
- valores['b3'] = valores['c3'] + valores['d3']
- valores['c3'] = 0
- valores['d3'] = 0
- else:
- valores['b3'] = valores['c3']
- valores['c3'] = valores['d3']
- valores['d3'] = 0
- # a3 = 0, b3 = 0, c3 = algo, d3 = cualquier cosa
- elif valores['a3'] == 0 and valores['b3'] == 0 and valores['c3'] != 0:
- if valores['c3'] == valores['d3']:
- valores['a3'] = valores['c3'] + valores['d3']
- valores['b3'] = 0
- valores['c3'] = 0
- valores['d3'] = 0
- else:
- valores['a3'] = valores['c3']
- valores['b3'] = valores['d3']
- valores['c3'] = 0
- valores['d3'] = 0
- # a3 = 0, b3 = 0, c3 = 0, d3 = cualquier cosa
- elif valores['a3'] == 0 and valores['b3'] == 0 and valores['c3'] == 0 and valores['d3'] != 0:
- valores['a3'] = valores['d3']
- valores['d3'] = 0
- # casos en los que a vale algo
- #
- # a3 = b3 (es decir, se suman)
- elif valores['a3'] == valores['b3']:
- # además coinciden c3 y d3, por lo que se suman también
- if valores['c3'] == valores['d3']:
- valores['a3'] = valores['a3'] + valores['b3']
- valores['b3'] = valores['c3'] + valores['d3']
- valores['c3'] = 0
- valores['d3'] = 0
- # no coinciden, asi que solo se ordenan
- else:
- valores['a3'] = valores['a3'] + valores['b3']
- valores['b3'] = valores['c3']
- valores['c3'] = valores['d3']
- valores['d3'] = 0
- # casos en los que a3 y b3 son distintos de 0, pero no son iguales, por lo que b puede sumar con c o con d
- elif valores['b3'] != 0:
- #casos en los que c3 es cero, por lo que d se acumula si es dintinto de b
- if valores['c3'] == 0:
- if valores['b3'] == valores['d3']:
- valores['b3'] = valores['b3'] + valores['d3']
- valores['d3'] = 0
- else:
- valores['c3'] = valores['d3']
- valores['d3'] = 0
- # casos en los que c es dinstinto de 0
- else:
- if valores['b3'] == valores['c3']:
- valores['b3'] = valores['b3'] + valores['c3']
- valores['c3'] = valores['d3']
- valores['d3'] = 0
- else:
- if valores['c3'] == valores['d3']:
- valores['c3'] = valores['c3'] + valores['d3']
- valores['d3'] = 0
- # casos en los que b es 0 siendo a diferente de 0, hay que comprobar si c es cero tambien
- elif valores['c3'] == 0:
- if valores['d3'] == valores['a3']:
- valores['a3'] = valores['a3'] + valores['d3']
- valores['d3'] = 0
- else:
- valores['b3'] = valores['d3']
- valores['d3'] = 0
- elif valores['a3'] == valores['c3']:
- valores['a3'] = valores['a3'] + valores['c3']
- valores['b3'] = valores['d3']
- valores['c3'] = 0
- valores['d3'] = 0
- elif valores['c3'] == valores['d3']:
- valores['b3'] = valores['c3'] + valores['d3']
- valores['c3'] = 0
- valores['d3'] = 0
- elif valores['c3'] != valores['d3']:
- valores['b3'] = valores['c3']
- valores['c3'] = valores['d3']
- valores['d3'] = 0
- ############
- # Columna 4
- ############
- if valores['a4'] == 0 and valores['b4'] != 0:
- if valores['b4'] == valores['c4']:
- valores['a4'] = valores['b4'] + valores['c4']
- valores['b4'] = valores['d4']
- valores['c4'] = 0
- valores['d4'] = 0
- else:
- valores['a4'] = valores['b4']
- if valores['c4'] == valores['d4'] or valores['c4'] == 0:
- valores['b4'] = valores['c4'] + valores['d4']
- valores['c4'] = 0
- valores['d4'] = 0
- else:
- valores['b4'] = valores['c4']
- valores['c4'] = valores['d4']
- valores['d4'] = 0
- # a4 = 0, b4 = 0, c4 = algo, d4 = cualquier cosa
- elif valores['a4'] == 0 and valores['b4'] == 0 and valores['c4'] != 0:
- if valores['c4'] == valores['d4']:
- valores['a4'] = valores['c4'] + valores['d4']
- valores['b4'] = 0
- valores['c4'] = 0
- valores['d4'] = 0
- else:
- valores['a4'] = valores['c4']
- valores['b4'] = valores['d4']
- valores['c4'] = 0
- valores['d4'] = 0
- # a4 = 0, b4 = 0, c4 = 0, d4 = cualquier cosa
- elif valores['a4'] == 0 and valores['b4'] == 0 and valores['c4'] == 0 and valores['d4'] != 0:
- valores['a4'] = valores['d4']
- valores['d4'] = 0
- # casos en los que a vale algo
- #
- # a4 = b4 (es decir, se suman)
- elif valores['a4'] == valores['b4']:
- # además coinciden c4 y d4, por lo que se suman también
- if valores['c4'] == valores['d4']:
- valores['a4'] = valores['a4'] + valores['b4']
- valores['b4'] = valores['c4'] + valores['d4']
- valores['c4'] = 0
- valores['d4'] = 0
- # no coinciden, asi que solo se ordenan
- else:
- valores['a4'] = valores['a4'] + valores['b4']
- valores['b4'] = valores['c4']
- valores['c4'] = valores['d4']
- valores['d4'] = 0
- # casos en los que a4 y b4 son distintos de 0, pero no son iguales, por lo que b puede sumar con c o con d
- elif valores['b4'] != 0:
- #casos en los que c4 es cero, por lo que d se acumula si es dintinto de b
- if valores['c4'] == 0:
- if valores['b4'] == valores['d4']:
- valores['b4'] = valores['b4'] + valores['d4']
- valores['d4'] = 0
- else:
- valores['c4'] = valores['d4']
- valores['d4'] = 0
- # casos en los que c es dinstinto de 0
- else:
- if valores['b4'] == valores['c4']:
- valores['b4'] = valores['b4'] + valores['c4']
- valores['c4'] = valores['d4']
- valores['d4'] = 0
- else:
- if valores['c4'] == valores['d4']:
- valores['c4'] = valores['c4'] + valores['d4']
- valores['d4'] = 0
- # casos en los que b es 0 siendo a diferente de 0, hay que comprobar si c es cero tambien
- elif valores['c4'] == 0:
- if valores['d4'] == valores['a4']:
- valores['a4'] = valores['a4'] + valores['d4']
- valores['d4'] = 0
- else:
- valores['b4'] = valores['d4']
- valores['d4'] = 0
- elif valores['a4'] == valores['c4']:
- valores['a4'] = valores['a4'] + valores['c4']
- valores['b4'] = valores['d4']
- valores['c4'] = 0
- valores['d4'] = 0
- elif valores['c4'] == valores['d4']:
- valores['b4'] = valores['c4'] + valores['d4']
- valores['c4'] = 0
- valores['d4'] = 0
- elif valores['c4'] != valores['d4']:
- valores['b4'] = valores['c4']
- valores['c4'] = valores['d4']
- valores['d4'] = 0
- # TENEMOS COMENTADOS LOS POSIBLES MOVIMIENTOS PORQUE SINO NO SE PUEDE PROBAR EL PRIMERO
- #elif movimiento in ['a', 'A']:
- # moviemiento hacia la izquierda
- #elif movimiento in ['s', 'S']:
- # movimiento hacia abajo
- #elif movimiento in ['d', 'D']:
- #movimiento hacia la derecha
- # insertamos ahora un valor aleatorio (sino el juego no tiene gracia)
- valores[posicion_azar(valores)] = valor_azar()
- imprimir(valores)
- # comprobamos si hemos perdido la partida, esto sucede si, y solo si, el tablero está lleno de números distintos de 0
- lista_valores_comprobar_perder = list(valores.values())
- if 0 in lista_valores_comprobar_perder or not comprobacion_derrota(valores):
- perder = False
- else:
- perder = True
- # dejamos ester perder aquí metido para que no sea un bucle infinito mientras no tengamos todas las funciones implementadas
- perder = True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement