Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
restrepo
GitHub Repository: restrepo/ComputationalMethods
Path: blob/master/projects/Proyecto_2018_1_1032478036.ipynb
934 views
Kernel: Python 3

BOOM!

Este juego consiste en dejar el tablero completamente en ceros seleccionando una fila y una columna para eliminar el número de esa ubicación y sus alrededores, solo sí estos tienen el mismo valor. Recuerde que las filas son horizontales y las columnas verticales.

Se enfrentrán el Jugador y la Máquina por turnos y al final ganará quien más números haya eliminado.

import numpy as np import pandas as pd import time

Se pide al usuario que ingrese la dimensión del tablero, para luego completarlo con números aleatorios que van desde 1 hasta el valor que se haya ingresado como dimensión

dimension= input('Dígite la dimensión del tablero: ') if ( int( dimension) <4): print('La dimensión debe ser mayor o igual a 4') if ( int(dimension) >= 4): tablero=np.random.randint(1,dimension,size=dimension*dimension).reshape(dimension,dimension) nombres=np.arange(1,dimension+1) tablero=pd.DataFrame(tablero, index=nombres, columns=nombres)
Dígite la dimensión del tablero: 4
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-3-92c9a16614e8> in <module>() 4 if ( int(dimension) >= 4): 5 ----> 6 tablero=np.random.randint(1,dimension,size=dimension*dimension).reshape(dimension,dimension) 7 nombres=np.arange(1,dimension+1) 8 tablero=pd.DataFrame(tablero, index=nombres, columns=nombres) TypeError: can't multiply sequence by non-int of type 'str'

Se define una función por tipo de jugador(Jugador-Máquina) que evalúa, de acuerdo a la posición ingresada, el valor de la casilla y de sus alrededores para ponerlo o no en ceros

def Casillas(Fila,Columna): ceros=0. casilla_y = Fila casilla_x = Columna numero = tablero.loc[ casilla_y , casilla_x ] if (tablero.loc[ casilla_y , casilla_x ] != 0): #consideraciones para una entrada en el borde del tablero if (Fila==dimension): if (tablero.loc[casilla_y-1, casilla_x]== numero): tablero.loc[casilla_y-1,casilla_x]=0 ceros+=1 if (tablero.loc[casilla_y, casilla_x]== numero): tablero.loc[casilla_y,casilla_x]=0 ceros+=1 elif(Fila==1): if (tablero.loc[casilla_y+1, casilla_x]== numero): tablero.loc[casilla_y+1,casilla_x]=0 ceros+=1 if (tablero.loc[casilla_y, casilla_x]== numero): tablero.loc[casilla_y,casilla_x]=0 ceros+=1 elif(Columna==1): if (tablero.loc[casilla_y, casilla_x+1]== numero): tablero.loc[casilla_y, casilla_x+1]=0 ceros+=1 if (tablero.loc[casilla_y, casilla_x]== numero): tablero.loc[casilla_y,casilla_x]=0 ceros+=1 elif(Columna==dimension): if (tablero.loc[casilla_y, casilla_x-1]== numero): tablero.loc[casilla_y, casilla_x-1]=0 ceros+=1 if (tablero.loc[casilla_y, casilla_x]== numero): tablero.loc[casilla_y,casilla_x]=0 ceros+=1 #consideraciones para otras entradas else: for l in range(casilla_y-1,casilla_y+2): for m in range(casilla_x-1,casilla_x+2): if(tablero.loc[l,m]==numero): tablero.loc[l,m]=0 ceros+=1 if (tablero.loc[casilla_y,m]== numero): tablero.loc[casilla_y,m]=0 ceros+=1 if (tablero.loc[l, casilla_x]== numero): tablero.loc[l,casilla_x]=0 ceros+=1 print tablero return ceros def Casillas2(Fila,Columna): ceros=0. casilla_y = Fila casilla_x = Columna numero = tablero.loc[ casilla_y , casilla_x ] if (tablero.loc[ casilla_y , casilla_x ] != 0): #consideraciones para una entrada en el borde del tablero if (Fila==dimension): if (tablero.loc[casilla_y-1, casilla_x]== numero): tablero.loc[casilla_y-1,casilla_x]=0 ceros+=1 if (tablero.loc[casilla_y, casilla_x]== numero): tablero.loc[casilla_y,casilla_x]=0 ceros+=1 elif(Fila==1): if (tablero.loc[casilla_y+1, casilla_x]== numero): tablero.loc[casilla_y+1,casilla_x]=0 ceros+=1 if (tablero.loc[casilla_y, casilla_x]== numero): tablero.loc[casilla_y,casilla_x]=0 ceros+=1 elif(Columna==1): if (tablero.loc[casilla_y, casilla_x+1]== numero): tablero.loc[casilla_y, casilla_x+1]=0 ceros+=1 if (tablero.loc[casilla_y, casilla_x]== numero): tablero.loc[casilla_y,casilla_x]=0 ceros+=1 elif(Columna==dimension): if (tablero.loc[casilla_y, casilla_x-1]== numero): tablero.loc[casilla_y, casilla_x-1]=0 ceros+=1 if (tablero.loc[casilla_y, casilla_x]== numero): tablero.loc[casilla_y,casilla_x]=0 ceros+=1 #consideraciones para otras entradas else: for l in range(casilla_y-1,casilla_y+2): for m in range(casilla_x-1,casilla_x+2): if(tablero.loc[l,m]==numero): tablero.loc[l,m]=0 ceros+=1 if (tablero.loc[casilla_y,m]== numero): tablero.loc[casilla_y,m]=0 ceros+=1 if (tablero.loc[l, casilla_x]== numero): tablero.loc[l,casilla_x]=0 ceros+=1 print tablero return ceros

Se muestra el tablero generado aleatoriamente, con el número de fila y columna específicado, se inicializan los puntajes y empieza el juego. Por turnos se ingresa la posición de la casilla deseada y con esto se llama a la función antes definida y se evalúa el resultado. Vale aclarar que la máquina hace un proceso completamente aleatorio para escoger una posición.

El juego termina cuando el tablero queda completamente en ceros y se muestran los puntajes finales junto con el jugador victorioso

print tablero partidas=dimension*dimension Partidas=1 Puntaje1=0 Puntaje2=0 while Puntaje1+Puntaje2<partidas: print("partida: {}".format(Partidas)) jugadores=[1,2] for turnos in range (len(jugadores)): #se definen los turnos if turnos%2==0.: Fila=input('Ingrese la fila: ') Columna=input('Ingrese la columna: ') Puntaje1+=Casillas(Fila,Columna) #se llama a la función y se va acumulando el puntaje print ('Puntaje Jugador: {}'.format(Puntaje1)) else: time.sleep(3) #se da un tiempo de espera para mostrar en pantalla el resultado Fila=np.random.randint(1,dimension+1) Columna=np.random.randint(1,dimension+1) print('Fila: {} \nColumna: {}'.format(Fila,Columna)) Puntaje2+=Casillas2(Fila,Columna) #se llama a la función y se va acumulando el puntaje print ('Puntaje Máquina: {}'.format(Puntaje2)) turnos+=1 Partidas+=1 #se imprimen los resultados finales print('Fin del juego') print('\nPuntajes finales: \n\tJugador: {} \n\tMáquina: {}'.format(Puntaje1,Puntaje2)) if (Puntaje1>Puntaje2): print('\nGanaste!') elif (Puntaje1==Puntaje2): print('Empate') else: print('Ganó la máquina ')