Registrarse

[Otros] Instrucciones Tarea 1

Estado
Cerrado para nuevas respuestas.

Ngidol

Caballero de Assembly (?)
Instrucciones tarea 1​

Para la entrega de esta tarea deberán enviarme vía MP un link con el archivo .py que contenga su tarea a más tardar el lunes 29 de enero a las 23:59 horas GMT -3:00.
El archivo deberá tener por nombre: "tarea_1_numero_usuario_guerra.py"
Por favor, no cometan errores en el nombre del archivo.

Objetivo:

En esta tarea se espera que apliques en la solución de un problema, todos los contenidos vistos hasta la clase 7.


El juego:

Para esta tarea deberás implementar el juego de cartas Guerra. Este juego goza de gran originalidad y fue inventado en el Departamento de Ciencias de la Computación y modificado por el usuario de Wahackforo JoséPUC para tu diversión. A continuación se explican las reglas del juego.


Reglas:

Es para 2 jugadores.
Se juega con un mazo de cartas inglés de 52 cartas. El mazo se baraja, divide en dos y esos serán los mazos de cada jugador.
Cada jugador tiene un mazo de 26 cartas (al inicio), una pila de cartas ganadas y su mano con tres cartas (al inicio).
El juego consiste en cada turno, los jugadores completaan las tres cartas de su mano, luego colocan boca abajo una de las cartas de su mano sobre la mesa y por último, ambos jugadores dan vuelta a la vez la carta que hayan colocado sobre la mesa. El jugador que haya colocado una carta de mayor valor, se lleva ambas a su "pila de ganadas". En caso de empatar:
1) Cada jugador colocará boca abajo en la mesa las cuatro primeras cartas de su mazo.
2) Cada jugador elegirá una de las cuatro cartas del contrario y ambos las voltearán a la vez.
3) El jugador dueño de la carta con mayor valor gana el desempate, llevándose las dos cartas que produjeron el empate y las 8 que participaron en el desempate. En caso de un nuevo empate, se repite y el ganador de ese nuevo desempate se llevaría entonces 18 cartas.

El juego termina cuando se acaben las cartas de los mazos de los jugadores, sin importar cuántas cartas había en las manos de los jugadores. Si estaban en una fase de desempate, las cartas que estaban en juego quedan ahí. Luego, el jugador que tenga más cartas en su pila de ganadas, será el ganador. Puede haber empate.


Carta:

La carta es un string de la forma numeropinta, donde el número puede ser [1, 2, 3, 4, ..., 8, 9, D, J, Q, K] y la pinta puede ser:
Corazón: c
Diamante: d
Pica: p
Trébol: t

Por ejemplo, el cinco de diamantes se representa por '5d'.


Mazo:

Deberás implementar el comportamiento de un mazo de cartas a través de strings, en donde DEBES implementar el mazo como la concatenación de cartas, por ejemplo:

mazo = ’Dt9c6dQpKp1pKt1t4t3p3t3dJp2cDp9dKd8d2p8pQd8c1c5d2t2d3c’

Para esto, tu código deberá poder:

Generar el mazo ordenado.
Dividir el mazo en dos partes.
Barajar el mazo: DEBE SER ALEATORIO
Tomar una carta en su forma numeropinta y escribirla en la forma "Número de Pinta"
Ej:
"Kc": K de Corazones
"Dp": 10 de Pica

Interacción:

Además, debes implementar un programa que permita jugar entre dos jugadores con turnos intercalados. En particular el juego debería:

1) Pedir el nombre de los jugadores
2) Enseñar las cartas en la mano del jugador y preguntar cuál desea enviar a la mesa.
3) Si desea el BONUS, se debe preguntar si desea jugar contra otra persona o contra la máquina.

Bonus:

Todos los que completen el bonus de forma satisfactoria recibirán 750 WahBalls.
El bonus consiste en hacer un "módulo" donde el se pueda jugar contra el computador, donde este deberá contar con una estrategia a la hora de enviar las cartas de la mano a la mesa (ELECCIÓN NO ALEATORIA). No podrá consultar las cartas de su mazo, del mazo o de la mano del contrario. Para la fase de desempate sí podrá ser una elección aleatoria. No podrá consultar los valores de las cartas que se encuentran boca abajo.

Luego de la entrega y evaluación de sus programas, tomaré sus "computer_players" y los pondré a jugar uno contra otro en una serie de partidas a modo de torneo. El que cree el jugador ganador recibirá además 3000 WahBalls como premio.


Ejemplo de interacción:

El siguiente ejemplo es meramente ilustrativo. Tú decides cómo será la interacción en la consola.

Código:
================ Guerra - T1 ==================
¡Bienvenido a la Guerra!
Diga nombre del Jugador 1:
>> Jugador1
Diga nombre del Jugador 2:
>> Jugador2
¿Qué quiere hacer?
1) Empezar nueva partida contra otro jugador.
2) Empezar nueva partida contra el pc.
>> 1
Turno 1
Jugador1 completa su mano.
Jugador2 completa su mano.
Jugador1 tiene las siguientes cartas en su mano:
1) 8 de Trébol.
2) 5 de Corazones.
3) 1 de Pica.
¿Cuál desea enviar?
>>> 2
Jugador2 tiene las siguientes cartas en su mano:
1) K de Diamantes.
2) 
3) ...
¿Cuál desea enviar?
>>> 1
Jugador1 ha sacado 5 de Corazones.
Jugador2 ha sacado K de Diamantes.
Jugador2 ha Ganado el turno.
Jugador1 tiene en su montón de cartas ganadoras: -
Jugador2 tiene en su montón de cartas ganadoras: Kd 5c
======================================================================
Presione para continuar
Turno 2
Jugador1 completa su mano.
Jugador2 completa su mano.
Jugador1 tiene las siguientes cartas en su mano:
1) 3 de Diamantes.
2) 1 de Pica.
3) 8 de Trébol.
¿Cuál desea enviar?
>>> 1
Jugador2 tiene las siguientes cartas en su mano:
1) 6 de Pica.
2) 6 de Diamantes.
3) Q de Corazones.
¿Cuál desea enviar?
>>> 2
Jugador1 3 de Diamantes.
Jugador2 6 de Diamantes.
Jugador2 ha Ganado el turno.
Jugador1 tiene en su montón de cartas ganadoras: -
Jugador2 tiene en su montón de cartas ganadoras: Kd 5c 6d 3d
======================================================================
Presione para continuar
.
.
.
======================================================================
Presione para continuar
JUGADOR2 ES EL GUERRERO GANADOR
Restricciones:

1.- No quiero plagios ni "ayudas" entre ustedes. Recomiendo que ni si quiera conversen sobre los problemas porque hasta eso puede influir en el código del otro. En el servidor de discord pueden realizar las dudas que tengan.
2.- No pueden usar materia que será vista en clases posteriores (como listas, por ejemplo). Sí pueden usar google para buscar información pero deberán colocar las respectivas citas en un comentario dentro del código.


 
Última edición:
Estado
Cerrado para nuevas respuestas.
Arriba