Skip to content
Jav09 edited this page May 22, 2020 · 20 revisions

ALLIANCE

SALUDOS JUGADORES

En esta sección explicaremos el principal algoritmo que usa el programa así como los diferentes comandos usados. Empezaremos de forma sencilla en que se basa el programa. Se trata de un PVP (player vs player) en el que los jugadores tendrán tres opciones para reaccionar ante la situación planteada en cada ronda.

Empieza el jugador 1 con 3 opciones disponibles, y luego le sigue el jugador 2 que tendrá disponibles las otras dos opciones restantes. El juego está preparado para que en cada ronda empiece quien terminó en la anterior, de tal forma que haya un balance en las opciones disponibles.

Las decisiones se deben de tomar de forma meditada ya que cada una tiene una puntuación del 1 al 3, de esta forma quien haya pensado la decisión correctamente recibirá mayor o menor puntuación. Una vez acabadas las 8 rondas se mostrarán las puntuaciones finales y el ganador, o en su defecto, si la partida ha resultado en empate.

Para comenzar a jugar tendréis que presionar "1" o si quereis salir solamente pulsar cualquier otra tecla. Después tenéis que elegir vuestros nombres (apodos) para saber a quien le toca en cada ronda.

Es importante señalar que el código esta "optimizado" de tal forma que aunque se agreguen 300 rondas, el código no se haría mucho más complicado o tedioso de realizar.

En el siguiente link se puede ver el video de una partida siendo ejecutada con comentarios explicativos

[Video del juego corriendo en consola]

(https://youtu.be/VGoE9g6RBUc )

Explicación del código

Tres librerias

--> <stdio.h>, <stdlib.h>, <string.h> y un define de RONDAS 8

2 estructuras usadas (jugadores, juego)

  • Struct jugadores

  • Struct juego

3 funciones usadas

-->(2 funcion void y 1 funcion int)

Fichero usado

--> Enunciados.txt

Prototipos de las funciones utilizadas:

  • void get_input(int *input);

  • void printear_jugador(struct juego juego);

  • void printear_opciones(char *opciones_texto[], int opcion_elegida);

  • int calcular_puntos(struct jugador jugador);

Para calcular puntos, se necesita poder acceder a todas las posiciones del vector de decisiones de cada jugador. Para ello se sigue el siguiente algoritmo:

De esta forma, la función queda programada de la siguiente manera:

  • void printear_bienvenida();

Bucle que mantiene al juego en marcha (optimización)

La utilización de las funciones planteadas, de las estructuras y del fichero enunciados.txt permite que el código quede muy optimizado, ya que independientemente del numero de rondas el bucle que pone en marcha al juego sería exactamente el mismo.

A continuación se muestra el bucle while principal que se utiliza para el juego

Recursos alternativos no dados en clase

  • Operador ternario (Se utiliza en la funcion printear_jugador)
  • Punteros