Git Product home page Git Product logo

piedra-papel-tijera-lagarto-spock's Introduction

Piedra, papel, tijera, lagarto, Spock

Contexto

Creado por Sam Kaas y luego popularizado por la comedia The Big Bang Theory, este juego busca complejizar las reglas del tradicional piedra, papel o tijera mediante el agregado de dos componentes nuevos: el lagarto y Spock.
La idea fundamental tras este cambio fue la de reducir las chances de empate, situación que se daba muy a menudo entre jugadores que se conocían lo suficiente.

Reglas

Si bien Sheldon tiene una excelente explicación de las reglas del juego, las transcribimos aquí mismo:

  • Tijera corta papel
  • Papel cubre piedra
  • Piedra aplasta lagarto
  • Lagarto envenena Spock
  • Spock destroza tijera
  • Tijera decapita lagarto
  • Lagarto come papel
  • Papel refuta Spock
  • Spock vaporiza piedra
  • Piedra aplasta tijera

Aunque es más sencillo con una imagen:

Reglas gráficas

Sugerimos que lo jueguen un par de veces para comprender la temática, aunque es bastante sencilla

Consigna

Se pide implementar una solución que permita jugar al piedra, papel, tijera, lagarto, Spock, calculando el resultado de cada partida en función de las formas elegidas por las manos. Aquí un ejemplo de cómo debería funcionar:

Mano jugadorUno = new Mano(Forma.PAPEL);
Mano jugadorDos = new Mano(Forma.LAGARTO);

Resultado resultadoJuego = jugadorUno.jugarContra(jugadorDos);
// resultadoJuego debe valer Resultado.PIERDE

resultadoJuego = jugadorDos.jugarContra(jugadorUno);
// resultadoJuego debe valer Resultado.GANA

resultadoJuego = jugadorUno.jugarContra(jugadorUno);
// resultadoJuego debe valer Resultado.EMPATA

Material proporcionado

Se otorga la implementación base de la clase Mano, donde deberás completar, agregando tu propio código y eliminando las excepciones correspondientes, que hacen fallar el programa tal cual se entrega. Adicionalmente se entrega una implementación básica de los enumerados Forma y Resultado.

También se te proveerá un test (dentro de la clase PartidaTests) a modo de testigo, probando uno de los casos emblemáticos. Idealmente deberías hacer crecer esas pruebas, o agregar las tuyas propias para asegurarte de que tu solución es correcta.

Sugerencias

La implementación más sencilla, completamente válida pero no recomendada, implica una gran cantidad de estructuras condicionales anidadas. Ese código no es mantenible, legible ni prolijo.
Te alentamos a que pruebes otras implementaciones, con algoritmos más sencillos que, idealmente, no tengan ninguna estructura condicional if, ni su reemplazo, switch.

Criterios de evaluación

Este trabajo tendrá una nota normalizada en 10.0 puntos, los cuales se componen según el siguiente detalle:

Concepto Puntos totales Porcentaje sobre el total
Funcionalidad 8.0 80 %
Estilo 2.0 20 %
Total 10.0 100 %

Por lo tanto, se te evaluará tanto la funcionalidad como la correctitud de estilo (tabulación, espacios, nombres, etcétera).

Consideraciones

  1. Recordá no cambiar la firma de los métodos proporcionados por la cátedra.
  2. Podés hacer tantos tests como consideres necesarios, pero los mismos no se utilizarán para evaluar tu código.
  3. Recordá que podés enviar la tarea a corrección tantas veces como quieras, dentro del período de vigencia de la misma.

piedra-papel-tijera-lagarto-spock's People

Contributors

delucas avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.