Code Monkey home page Code Monkey logo

duxtennis's Introduction

🎾 DuxTennis v0.1

build issuesBadge checkStyleBadge sonarLintBadge

openJDKTarget apacheMavenBadge operatingSystemBadge

📜 Índice

🔎 ¿Qué es?

Desarrollado completamente en Java, este programa representa la segunda parte de la prueba técnica del proceso de selección en DuxSoftware.
Se trata de un simulador de partidos de tenis de 2 jugadores.

📦 Requisitos generales

☕ Java

  • Versión mínima

    🟡 Java 11
  • Versión recomendada

    🟢 Java 17 (o más reciente)

⚙️ Requisitos para compilación

🪶 Apache Maven

📥 Descarga

La versión estable más reciente del programa se encuentra disponible para descargar en la sección releases de este proyecto.

▶️ Instalación y ejecución

Más allá de los requisitos listados, no hace falta ninguna instalación para correr este programa.
Una vez descargado el archivo con extensión .jar, e independientemente del sistema operativo que se utilice, se lo puede ejecutar con un simple doble click. Una alternativa es abrir una terminal dentro de la carpeta contenedora del archivo y ejecutar el comando:

java -jar duxtennis-0.1.jar

🛠️ Compilación manual

Para compilar manualmente el programa, asumiendo que tanto los requisitos generales como los requisitos para compilación han sido instalados correctamente, se debe dirigir a la carpeta contenedora del proyecto y ejecutar Apache Maven haciendo uso del archivo pom.xml con el siguiente comando:

mvn package --file pom.xml

o, simplemente:

mvn package

Esto creará una carpeta llamada target. Dentro de esa carpeta estará el archivo ejecutable en formato .jar. Para ejecutarlo, dentro de la carpeta contenedora, se debe ejecutar el comando indicado anteriormente:

java -jar duxtennis-0.1.jar

📝 ¿Cómo se usa?

Para comenzar un partido, se debe ingresar el nombre del torneo y de los dos jugadores que participan en el mismo. Luego, se puede calibrar la probabilidad que tiene cada jugador de ganar el partido (recordar que las probabilidades van de 0% a 100% y son complementarias). Finalmente, se puede elegir si jugar un partido a 3 sets o a 5 sets.

Cuando estos parámetros hayan sido establecidos, se podrá hacer click en el botón 'Continuar' para comenzar la simulación.

En ese momento se abrirá una ventana que mostrará el progreso de la simulación del partido, indicando quién saca en cada set, y cuántos puntos, games y sets ganados tiene cada jugador en el transcurso del mismo. Durante esta simulación, el usuario sólo puede observar el progreso de la simulación.

Cuando la simulación finalice, el usuario tendrá frente a sí una nueva ventana que mostrará el resumen del partido, indicando el resultado de cada set y el ganador del partido del torneo. En este punto, el usuario puede optar por jugar una revancha (iniciar un partido con los mismos jugadores y los mismos parámetros que los ingresados en un principio), o volver al menú principal para comenzar otra simulación distinta.

📖 Reglas del juego

Como simple recordatorio, se detallan a continuación las reglas básicas de un partido de tenis tenidas en cuenta para el desarrollo de este programa.

  • El jugador que efectúa el saque cambiará cada set.
  • El primer saque del juego (primer set) será asignado a un jugador de manera aleatoria.
  • El resto de saques será intercalado (el jugador que sacó en el set anterior, recibirá en el set actual).
  • Cada partido se puede jugar a 3 ó 5 sets.
  • Cada set está compuesto por 6 games en principio.
  • Para ganar un game, un jugador debe pasar los 40 puntos con diferencia de 2.
  • Los puntos son de la forma: 0-15-30-40-game
  • Si los jugadores empatan 40-40 en los puntos, el game se disputa por diferencia de 2.
  • Si los jugadores empatan 5-5 en games, el set se jugará a 7; y para ganar el set, uno de los dos deberá ganar 7-5 (diferencia de 2).
  • Si los jugadores empatan 6-6 en games, se entra a un 'tie break', donde jugarán mínimo hasta 7 puntos (comenzando desde 0), y ganará el set el jugador que gane el tie break a 7 con diferencia de 2.
  • Si los jugadores empatan 6-6 en el tie break, se desempatará el tie break con diferencia de 2.
  • Si el partido es a 3 sets y un jugador gana 2 sets seguidos, el tercer set no se jugará.
  • Si el partido es a 5 sets y un jugador gana 3 sets seguidos, el cuarto set no se jugará.
  • Si el partido es a 5 sets y un jugador gana 3 sets y el otro sólo 1, el quinto set no se jugará.

💬 Comentarios

  • En la ventana de ingreso de parámetros, el botón 'Continuar' está deshabilitado al comienzo. Para habilitarlo, es necesario ingresar todos los nombres pedidos (escribir en el campo de texto y presionar la tecla 'Enter').
  • Los nombres de los jugadores y del torneo deben estar escritos sólo con letras de la A la Z (incluyendo la Ñ), en mayúscula o minúscula, con o sin acentos, con o sin espacios, sin más de 10 caracteres en total.

⚠️ Reportes y sugerencias

Si el programa presenta algún error que debería ser reportado para arreglarlo, si podría haber alguna nueva funcionalidad para agregar al programa, o si algo podría ser modificado, la sección de issues está abierta para hacer estos reportes y/o sugerencias. Es necesario tener una cuenta en GitHub para abrir un nuevo reporte en el repositorio.

📸 Capturas de pantalla

mainMenu
Ventana del menú principal

dataInput
Ventana de ingreso de parámetros

simulation1
Ventana de progreso de simulación de partido sin deuce ni empates

simulation2
Ventana de progreso de simulación de partido con deuce

simulation3
Ventana de progreso de simulación de partido con empate

result1
Ventana de resultado de partido sin empates

result2
Ventana de resultado de partido con empates

duxtennis's People

Contributors

akmsw avatar

Watchers

 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.