s3Eva2014TI_T3 Juego Poli-Mancala

Ejercicios: 3Eva2014TI_T3 Juego Poli-Mancala

Propuesta de solución en Python:

El tema pide realizar el programa usando la función siembra del tema 4. Por lo que la función se califica aparte.

import numpy as np

# funcion siembra del tema 4
def siembra(mancala,jugador,casilla):
    tamano = np.shape(mancala)
    m = tamano[1]
    fila = jugador
    # Selecciona el movimiento del contador
    if (fila == 0):
        mueve = 1
    else:
        mueve = -1

    # Recoge las fichas
    fichas = mancala[fila,casilla]
    mancala[fila,casilla] = 0
    
    # inicia la siembra
    while not(fichas==0):
        casilla = casilla + mueve
        if (casilla>=m):
            casilla = m-1
            fila = 1
            mueve = -1 
        if (casilla<0):
            casilla = 0
            fila = 0
            mueve = 1
        mancala[fila,casilla] = mancala[fila,casilla]+1
        fichas = fichas-1

    return(mancala)

El programa inicializa los vectores y matrices para el juego

mancala tablero y fichas
  • Al inicio, se ubican 4 fichas en cada casilla excepto en los extremos izquierdo y derecho del tablero.
Tablero inicial:
Jugador1 [0 4 4 4 4 4 4 0] Jugador2
   0     [0 4 4 4 4 4 4 0]    0
# PROGRAMA PARA EL JUEGO ---------------
# inicializa tablero
mancala = np.ones(shape=(2,8),dtype=int)
mancala = mancala*4 # casillas con 4 fichas
mancala[:,0] = 0  # ceros en los extremos
mancala[:,7] = 0
casa1 = 0
casa2 = 0
print('  1 2 3 4 5 6 7 8')
print(mancala)
  • Se juega por turnos alternados para realizar un movimiento de siembra.
  • Suponga que existe la función siembra(tablero, fila, columna) que devuelve el tablero modificado.
Jugador 1. ¿Casilla siembra?: 5
Jugador1 [0 4 4 4 0 5 5 1] Jugador2
   0     [0 4 4 4 4 4 4 1]    2
    jugador = 1
    print(' Juega 1')
    casilla = input('¿Cual casilla?:')
    while not(casilla&gt;'1' and casilla&lt;'8'):
        casilla = input('¿Cual casilla?:')
    mancala = siembra(mancala,jugador-1, int(casilla)-1)
    print('  1 2 3 4 5 6 7 8')
    print(mancala)
  • El jugador que acumule más de la mitad de fichas en las casillas de su extremo (Casa) gana el juego.
while not(casa1>24 or casa2>24):

Algoritmo en Python

Integrando las partes en un solo algoritmo se tiene:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IT2014_T3 Juego Poli-Mancala
import numpy as np

# funcion siembra del tema 4
def siembra(mancala,jugador,casilla):
    tamano = np.shape(mancala)
    m = tamano[1]
    fila = jugador
    # Selecciona el movimiento del contador
    if (fila == 0):
        mueve = 1
    else:
        mueve = -1

    # Recoge las fichas
    fichas = mancala[fila,casilla]
    mancala[fila,casilla] = 0
    
    # inicia la siembra
    while not(fichas==0):
        casilla = casilla + mueve
        if (casilla>=m):
            casilla = m-1
            fila = 1
            mueve = -1 
        if (casilla<0):
            casilla = 0
            fila = 0
            mueve = 1
        mancala[fila,casilla] = mancala[fila,casilla]+1
        fichas = fichas-1

    return(mancala)

# PROGRAMA PARA EL JUEGO ---------------
# inicializa tablero
mancala = np.ones(shape=(2,8),dtype=int)
mancala = mancala*4 # casillas con 4 fichas
mancala[:,0] = 0  # ceros en los extremos
mancala[:,7] = 0
casa1 = 0
casa2 = 0
print('  1 2 3 4 5 6 7 8')
print(mancala)

while not(casa1>24 or casa2>24):
    
    jugador = 1
    print(' Juega 1')
    casilla = input('¿Cual casilla?:')
    while not(casilla>'1' and casilla<'8'):
        casilla = input('¿Cual casilla?:')
    mancala = siembra(mancala,jugador-1, int(casilla)-1)
    print('  1 2 3 4 5 6 7 8')
    print(mancala)

    jugador = 2
    print(' Juega 2')
    casilla = input('¿Cual casilla?:')
    while not(casilla>'1' and casilla<'8'):
        casilla = input('¿Cual casilla?:')
    mancala = siembra(mancala,jugador-1, int(casilla)-1)
    casa1 = mancala[0,0]+mancala[1,0]
    casa2 = mancala[0,7]+mancala[1,7]
    print('  1 2 3 4 5 6 7 8')
    print(mancala)

# Muestra ganadores
if (casa1>casa2):
    print(' Gana Jugador 1')
else:
    print(' Gana Jugador 2')

Ejercicios resueltos/Ejemplos por año

Ejemplos 1ra Evaluación

1ra Eva 2020-2011

1ra Eva 2010-2001

Ejemplos 2da Evaluación

2da Eva 2020-2011

2da Eva 2010-2001

Ejemplos 3ra Evaluación

3ra Eva 2020-2011

3ra Eva 2010-2001