Pues como digo en el titulo siempre siempre gana el segundo jugador y no encuentro el fallo
using System;
class Turno
{
//ATRIBUTOS
int contador; //cuenta en el turno en el que nos encontramos
int accion;
//CONSTRUCTOR
public Turno()
{
contador = 1; // un turno 0 no tiene sentido
}
//METODOS
public int CONTADOR
{
get
{
return contador;
}
set
{
contador = value;
}
}
public int eleccion() //Aquí el jugador selecciona lo que desea hacer en ese turno y lo devuelve
{
Console.WriteLine("Elije la acción que desea realizar");
Console.WriteLine("1-Atacar");
Console.WriteLine("2-Usar objeto");
Console.WriteLine("3-Pasar turno");
accion = Convert.ToInt16(Console.ReadLine());
return (accion);
}
}
using System;
class Programa
{
static void Main(string[] args)
{
do
{
Creación_personaje datos_personaje1 = new Creación_personaje(); //Los datos del primer personaje
Creación_personaje datos_personaje2 = new Creación_personaje(); //Los datos del segundo personaje
Turno turno = new Turno();//Quiza se pueda poner como static
Objetos objeto = new Objetos();//se encarga de controlar los objetos
Random aleatorio_turno = new Random();//Nos creamos el número aleatorio que luego pasaremos a la clase combate
int aleatorio = aleatorio_turno.Next(1, 3); //porque si no nunca saldria el 2
Console.WriteLine("JUGADOR 1:");
Personaje personaje1 = new Personaje(datos_personaje1.asignar_nombre(), datos_personaje1.asignar_clase()); //Creamos los personajes con los datos anteriormente recogidos
Console.WriteLine("JUGADOR 2:");
Personaje personaje2 = new Personaje(datos_personaje1.asignar_nombre(), datos_personaje1.asignar_clase());
//PARTE DE JUEGO
Combate combate = new Combate(turno, personaje1, personaje2, objeto, aleatorio); //Metemos en el combate los dos personajes y los datos del turno
combate.realizar_combate();//Ejecutamos la pelea
//PEQUEÑO MENÚ QUE NOS PERMITE VOLVER A JUGAR
Console.WriteLine("\nPULSA 1 PARA VOLVER A JUGAR O CUALQUIER OTRA TECLA PARA SALIR");
} while (Convert.ToInt16(Console.ReadLine()) == 1);
}
}
using System;
class Personaje //LA CLASE
{
//ATRIBUTOS
string nombre;
int PV; //condición de victoria PV=0
int Clase; // 1 planta, 2 fuego, 3 agua será elegido mediante un switch más adelante
int objeto; // 0 vacio resto lleno
//CONSTRUCTOR
public Personaje(string n, int c) //Se lo pasamos desde el main después de haberlo preguntado al usuario
{
PV = 60;
nombre = n;
Clase = c;
objeto = 1;// de momento el personaje empieza con una pocion pocion = 1
}
//METODOS
public int pv
{
get
{
return PV;
}
set
{
PV = value;
}
}
public int Objeto//nos permite poner y quitar objetos
{
get
{
return objeto;
}
set
{
objeto = value;
}
}
public string GetNombre (){
return (nombre);
}
public int GetClase()
{
return(Clase);
}
public void datos_personaje()
{
Console.WriteLine("\n" + nombre + " : " + PV + "PV");
}
public int atacar()//Realiza el ataque básico
{
Console.WriteLine(nombre + " realizó un ataque básico");
return (5);
}
public int ataque_potenciado()//De momento este ataque se puede lanzar cada 4 ataques
{
Console.WriteLine(nombre + " realizó un ataque potenciado!!!");
return (10);
}
}
using System;
class Creación_personaje
{
//ATRIBUTOS
string nombre;
int clase;
//CONSTRUCTOR como no vamos a meter ningún parametro dejamos el predefinido
//METODOS
public string asignar_nombre()
{
Console.WriteLine("Introduzca su nombre: ");
return (nombre = Console.ReadLine());
}
public int asignar_clase()
{
Console.WriteLine("Introduzca el nombre de la clase que desea");
Console.WriteLine("1-Fuego");
Console.WriteLine("2-Agua");
Console.WriteLine("3-Planta");
clase = Convert.ToInt16(Console.ReadLine());
return (clase);
}
}
using System;
class Combate
{
Objetos objeto;
Turno turno;
Personaje personaje1;
Personaje personaje2;
int jugador_aleatorio;
Personaje primero; //Nos permiten guardar cual de los dos personajes es el primero
Personaje segundo;
public Combate(Turno t, Personaje p, Personaje s,Objetos o,int aleatorio) //TENEMOS QUE METERLE EL OBJETO TURNO Y LOS DOS PERSONAJES
{
turno = t;
personaje1 = p;
personaje2 = s;
objeto = o;
jugador_aleatorio = aleatorio;
}
//METODOS
public void realizar_combate()
{
//EMPEZAMOS CON LOS JUGADORES
if (jugador_aleatorio == 1)
{
primero = personaje1;
segundo = personaje2;
}
else
{
primero = personaje2;
segundo = personaje1;
}
//BUCLE DE PARTIDA
do
{
//VEMOS SI EL TURNO ES DIVISIBLE ENTRE 5 SI ES ASI ASIGNAMOS UN OBJETO ALEATORIO AL JUGADOR
if (turno.CONTADOR % 5 == 0)
{
objeto.asignar_objeto(primero);
}
//SWITCH PARA EL JUGADOR I
Console.WriteLine(" \nTUNRO DE " + primero.GetNombre());
switch (turno.eleccion())
{
case 1:
if (turno.CONTADOR % 5 == 0)//si el turno es divisible entre 5 es decir cada 4 turnos se lanza un ataque potenciado
{
segundo.pv = segundo.pv - primero.ataque_potenciado(); //restamos los puntos de vida al otro jugador
segundo.datos_personaje();
}
else //En los demas turnos lanza un atque normal
{
segundo.pv = segundo.pv - primero.atacar();
segundo.datos_personaje();
}
break;
case 2:
objeto.accion_objeto(primero,segundo);
break;
case 3:
Console.WriteLine("Has pasado el turno");
break;
}
//DAMOS OBJETO AL SEGUNDO
if (turno.CONTADOR % 5 == 0)
{
objeto.asignar_objeto(segundo);
}
//SWITCH PARA LA ELECCIÓN DEL JUGADOR II
Console.WriteLine(" \nTUNRO DE " + segundo.GetNombre());
switch (turno.eleccion())
{
case 1:
if (turno.CONTADOR % 5 == 0)//si el turno es divisible entre 5 es decir cada 4 turnos se lanza un ataque potenciado
{
primero.pv = primero.pv - segundo.ataque_potenciado(); //restamos los puntos de vida al otro jugador
primero.datos_personaje();
}
else //En los demas turnos lanza un atque normal
{
primero.pv = personaje1.pv - segundo.atacar();
primero.datos_personaje();
}
break;
case 2:
objeto.accion_objeto(segundo,primero);
segundo.Objeto = 0; //Le quitamos el objeto al personaje
break;
case 3:
Console.WriteLine("Has pasado el turno");
break;
}
turno.CONTADOR++;
} while (primero.pv > 0 && segundo.pv > 0);
//MENSAJE DE VICTORIA
if (primero.pv == 0)
{
Console.WriteLine("EL GANADOR ES: " + segundo.GetNombre());
}
if(segundo.pv == 0)
{
Console.WriteLine("EL GANADOR ES: " + primero.GetNombre());
}
}
}
Creo que el error se encuentra en la clase combate.