acá pongo la relevante del código:
Código C#:
Ver original
namespace _09_CLASES { public class Jugador { private int id; private string nombre; private bool vivo; public int Id { get => id; set => id = value; } public string Nombre { get => nombre; set => nombre = value; } public bool Vivo { get => vivo; set => vivo = value; } //Contructor public Jugador(int id) { this.id = id; this.nombre = "Jugador " + id; this.vivo = true; } /** * El jugador dispara el revolver * @param r */ public string disparar(Revolver r) { string res = "El " + nombre + " se apunta con la pistola\n"; //El jugador se pone el revolver y... if (r.disparar()) { this.vivo = false; //muere res += "El " + nombre + " ha muerto...\n"; } else { res += "El " + nombre + " se ha librado...\n"; //No muere } return res; } } }
Código C#:
Ver original
namespace _09_CLASES { public class Juego { //atributos private Jugador[] jugadores; private Revolver revolver; //Constructor public Juego(int numJugadores) { jugadores = new Jugador[comprobarJugadores(numJugadores)]; crearJugadores(); revolver = new Revolver(); } //Comprueba que el numero de jugadores esta en el rango correcto private int comprobarJugadores(int numJugadores) { //Sino esta en el rango correcto se pone a 6 if (!(numJugadores >= 1 && numJugadores <= 6)) { numJugadores = 6; } return numJugadores; } //Crea los jugadores private void crearJugadores() { for (int i = 0; i < jugadores.Length; i++) { jugadores[i] = new Jugador(i + 1); } } //indica si el juego acaba o no public bool finJuego() { int enjuego = jugadores.Length; foreach (Jugador jugadore in jugadores) { if (jugadore == null) { enjuego--; } } return enjuego == 1; } public string ronda() { string res = ""; for(int i = 0; i < jugadores.Length; i++){ if(jugadores[i] != null){ res += jugadores[i].disparar(revolver); if(!jugadores[i].Vivo){ jugadores[i] = null; } } } return res; } public string ganador() { string res = ""; foreach (Jugador jugadore in jugadores) { if (jugadore != null) { res += jugadore; } } return res; } } }
Código C#:
Ver original
namespace _09_CLASES { public class Revolver { private int posicionBalaActual; private int posicionBala; public int PosicionBalaActual { get => posicionBalaActual; set => posicionBalaActual = value; } public int PosicionBala { get => posicionBala; set => posicionBala = value; } //Constructor public Revolver() { posicionBalaActual = Metodos.generaNumeroAleatorio(1, 6); posicionBala = Metodos.generaNumeroAleatorio(1, 6); } //Metodos //Dispara el revolver public bool disparar() { bool exito = false; if (posicionBalaActual == posicionBala) { exito = true; //Alguien va a morir... } siguienteBala(); return exito; } //Cambia a la siguiente posicion public void siguienteBala() { if (posicionBalaActual == 6) { posicionBalaActual = 1; //posicion incial } else { posicionBalaActual++; } } } }
Código C#:
Ver original
using System; namespace _09_CLASES { class Program { /** * https://www.discoduroderoer.es/ejercicios-propuestos-y-resueltos-programacion-orientado-a-objetos-java/ * * 9. Vamos a hacer el juego de la ruleta rusa en Java. * Como muchos sabéis, se trata de un número de jugadores que con * un revolver con un sola bala en el tambor se dispara en la cabeza. * Las clases a hacer son: - Revolver: - Atributos: - posición actual (posición del tambor donde se dispara, puede que esté la bala o no) - posición bala (la posición del tambor donde se encuentra la bala) Estas dos posiciones, se generaran aleatoriamente. - Funciones: - disparar(): devuelve true si la bala coincide con la posición actual - siguienteBala(): cambia a la siguiente posición del tambor - toString(): muestra información del revolver (posición actual y donde está la bala) - Jugador: - Atributos - id (representa el número del jugador, empieza en 1) - nombre (Empezara con Jugador más su ID, “Jugador 1” por ejemplo) - vivo (indica si está vivo o no el jugador) - Funciones: - disparar(Revolver r): el jugador se apunta y se dispara, si la bala se dispara, el jugador muere. - Juego: - Atributos: - Jugadores (conjunto de Jugadores) - Revolver - Funciones: - finJuego(): cuando un jugador muere, devuelve true - ronda(): cada jugador se apunta y se dispara, se informara del estado de la partida (El jugador se dispara, no ha muerto en esa ronda, etc.) * El número de jugadores será decidido por el usuario, pero debe ser entre 1 * y 6. Si no está en este rango, por defecto será 6. * En cada turno uno de los jugadores, dispara el revólver, si este tiene la * bala el jugador muere y el juego termina. * NOTA: Aunque no lo haya comentado, recuerda usar una clase ejecutable * para probarlo. */ static void Main(string[] args) { Console.Clear(); int jugadores = Mensajes.requestInt("Ingrese cantidad de jugadores"); Juego juego = new Juego(jugadores); String res = ""; while(!juego.finJuego()){ res += juego.ronda(); } res += "\nGanador: " + juego.ganador(); res += "\nEl juego ha terminado"; Mensajes.info(res); } } }
Y creo que en esta función están mis problemas:
Código C#:
Ver original
using System; namespace _09_CLASES { public class Metodos { public static int generaNumeroAleatorio(int minimo, int maximo) { Random r = new Random(); int num = r.Next((maximo - minimo + 1) + (minimo)); return num; } } }
Esta es la original de java:
Código Java:
Ver original
Esta es mi situación, espero sus respuestas y saludos.