Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ===++===
- //
- // OrtizOL
- //
- // ===--===
- /*============================================================
- //
- // Clase: EmpresaJuegos.cs
- //
- // Original en: http://goo.gl/JYQzkf
- //
- // Propósito: Representa una emprea de venta de videojuegos.
- //
- ============================================================*/
- using System;
- namespace JuegosCelulares.Modelo
- {
- public class EmpresaJuegos
- {
- #region Campos
- /// <summary>
- /// Arreglo que representa las cantidades vendidas de cada juego.
- /// </summary>
- private int[] cantidadesVendidas;
- /// <summary>
- /// Conjunto de juegos que vende la empresa de juegos.
- /// </summary>
- private Juego[] juegos;
- #endregion
- #region Constantes
- /// <summary>
- /// Constate que representa un juego que no existe.
- /// </summary>
- public const string NINGUNO = "Ninguno";
- /// <summary>
- /// Constante que representa el nombre del juego `Car Racer 2`.
- /// </summary>
- public const string NOMBRE_JUEGO1 = "Car Racer 2";
- /// <summary>
- /// Constante que representa el nombre del juego `Air Attack`.
- /// </summary>
- public const string NOMBRE_JUEGO2 = "Air Attack";
- /// <summary>
- /// Constante que representa el nombre del juego `Mini Golf 2`.
- /// </summary>
- public const string NOMBRE_JUEGO3 = "Mini Golf 2";
- /// <summary>
- /// Constante que representa el nombre del juego `Aztec Warrior`.
- /// </summary>
- public const string NOMBRE_JUEGO4 = "Aztec Warrior";
- #endregion
- #region Constructores
- /// <summary>
- /// Crea una nueva empresa de venta de juegos.
- /// </summary>
- public EmpresaJuegos()
- {
- // Crea el arrego de juegos:
- juegos = new Juego[4];
- // Crea juego por juego con valores arbitrarios y haciendo uso de las
- // constantes definidas arriba:
- juegos[0] = new Juego(NOMBRE_JUEGO1, CategoriaJuego.Velocidad, 30000, 300, 50);
- juegos[1] = new Juego(NOMBRE_JUEGO2, CategoriaJuego.Accion, 55000, 2500, 15);
- juegos[2] = new Juego(NOMBRE_JUEGO3, CategoriaJuego.Deporte, 15000, 150, 22);
- juegos[3] = new Juego(NOMBRE_JUEGO4, CategoriaJuego.Aventura, 20000, 1000, 36);
- // Inicialia todas las cantidades en 0:
- cantidadesVendidas = new int[4];
- cantidadesVendidas[0] = 0;
- cantidadesVendidas[1] = 0;
- cantidadesVendidas[2] = 0;
- cantidadesVendidas[3] = 0;
- }
- #endregion
- #region Métodos:
- /// <summary>
- /// Calcula el descuento por la venta de varios juegos en diferentes cantidades.
- /// </summary>
- /// <param name="cantidadJuego1">Cantidad del juego `Car Racer 2`.</param>
- /// <param name="cantidadJuego2">Cantidad del juego `Air Attack`.</param>
- /// <param name="cantidadJuego3">Cantidad del juego `Mini Golf 2`.</param>
- /// <param name="cantidadJuego4">Cantidad del juego `Aztec Warrior`.</param>
- /// <returns></returns>
- public string CalcularDescuento (int cantidadJuego1, int cantidadJuego2, int cantidadJuego3, int cantidadJuego4)
- {
- decimal totalVenta = 0.0M;
- // Areglo de categorías:
- CategoriaJuego[] categoriasJuegos = new CategoriaJuego[4];
- categoriasJuegos[0] = CategoriaJuego.Ninguna;
- categoriasJuegos[1] = CategoriaJuego.Ninguna;
- categoriasJuegos[2] = CategoriaJuego.Ninguna;
- categoriasJuegos[3] = CategoriaJuego.Ninguna;
- cantidadesVendidas[0] = cantidadJuego1;
- cantidadesVendidas[1] = cantidadJuego2;
- cantidadesVendidas[2] = cantidadJuego3;
- cantidadesVendidas[3] = cantidadJuego4;
- for (int i = 0; i < juegos.Length; ++i)
- {
- if (juegos[i] != null)
- {
- totalVenta += juegos[i].Precio * cantidadesVendidas[i];
- categoriasJuegos[i] = juegos[i].Categoria;
- }
- }
- decimal descuento = 0.0M;
- // Calcula el descuento para juegos de acción:
- if ((cantidadesVendidas[0] >= 25 && categoriasJuegos[0] == CategoriaJuego.Accion) || (cantidadesVendidas[1] >= 25 && categoriasJuegos[1] == CategoriaJuego.Accion) ||
- (cantidadesVendidas[2] >= 25 && categoriasJuegos[2] == CategoriaJuego.Accion) || (cantidadesVendidas[3] >= 25 && categoriasJuegos[3] == CategoriaJuego.Accion))
- {
- descuento = totalVenta * 0.15M;
- }
- else if ( (cantidadesVendidas[3] >= 32) ||
- ((( cantidadesVendidas[0] >= 12 && categoriasJuegos[0] == CategoriaJuego.Deporte) || (cantidadesVendidas[1] >= 12 && categoriasJuegos[1] == CategoriaJuego.Deporte) ||
- (cantidadesVendidas[2] >= 12 && categoriasJuegos[2] == CategoriaJuego.Deporte) || (cantidadesVendidas[3] >= 12 && categoriasJuegos[3] == CategoriaJuego.Deporte))) &&
- ((cantidadesVendidas[0] >= 15 && categoriasJuegos[0] == CategoriaJuego.Velocidad) || (cantidadesVendidas[1] >= 15 && categoriasJuegos[1] == CategoriaJuego.Velocidad) ||
- (cantidadesVendidas[2] >= 55 && categoriasJuegos[2] == CategoriaJuego.Velocidad) || (cantidadesVendidas[3] >= 15 && categoriasJuegos[3] == CategoriaJuego.Velocidad)))
- {
- descuento = totalVenta * 0.10M;
- }
- else
- {
- descuento = 0.0M;
- }
- decimal totalConDescuento = totalVenta - descuento;
- string mensaje = String.Format("El valor total de su venta es: {0}\nEl descuento por su compra es: {1}\nEl valor total de su compra es: {2}",
- totalVenta.ToString("C"), descuento.ToString("C"), totalConDescuento.ToString("C"));
- return mensaje;
- }
- /// <summary>
- /// Compra un juego para la venta en la empresa.
- /// </summary>
- /// <param name="nombreJuego">Nombre del juego a comprar.</param>
- /// <param name="cantidad">Cantidad del juego a comprar.</param>
- public void ComprarJuego(string nombreJuego, int cantidad)
- {
- if (nombreJuego.Equals (NOMBRE_JUEGO1))
- {
- if (juegos[0] == null)
- {
- juegos[0] = new Juego(NOMBRE_JUEGO1, CategoriaJuego.Velocidad, 30000, 300, cantidad);
- }
- else
- {
- juegos[0].ComprarJuego(cantidad);
- }
- }
- else if (nombreJuego.Equals(NOMBRE_JUEGO2))
- {
- if (juegos[1] == null)
- {
- juegos[1] = new Juego(NOMBRE_JUEGO2, CategoriaJuego.Accion, 55000, 2500, cantidad);
- }
- else
- {
- juegos[1].ComprarJuego(cantidad);
- }
- }
- else if (nombreJuego.Equals(NOMBRE_JUEGO3))
- {
- if (juegos[2] == null)
- {
- juegos[2] = new Juego(NOMBRE_JUEGO3, CategoriaJuego.Deporte, 15000, 150, cantidad);
- }
- else
- {
- juegos[2].ComprarJuego(cantidad);
- }
- }
- else if (nombreJuego.Equals(NOMBRE_JUEGO4))
- {
- if (juegos[3] == null)
- {
- juegos[3] = new Juego(NOMBRE_JUEGO4, CategoriaJuego.Aventura, 20000, 1000, cantidad);
- }
- else
- {
- juegos[3].ComprarJuego(cantidad);
- }
- }
- }
- /// <summary>
- /// Obtiene la cantidad disponible de un juego en la empresa.
- /// </summary>
- /// <param name="nombreJuego">Nombre del juego del que se desea conocer su cantidad.</param>
- /// <returns>Cantidad actual vendida del juego.</returns>
- public int ObtenerCantidadActual(string nombreJuego)
- {
- Juego juego = ObtenerJuego(nombreJuego);
- if (juego != null)
- {
- return juego.CantidadActual;
- }
- else
- {
- return 0;
- }
- }
- /// <summary>
- /// Busca un juego por su nombre.
- /// </summary>
- /// <param name="nombreJuego">Nombre del juego a buscar.</param>
- /// <returns>Juego más vendido.</returns>
- public Juego ObtenerJuego(string nombreJuego)
- {
- if (nombreJuego.Equals(NOMBRE_JUEGO1))
- {
- return juegos[0];
- }
- else if (nombreJuego.Equals(NOMBRE_JUEGO2))
- {
- return juegos[1];
- }
- else if (nombreJuego.Equals(NOMBRE_JUEGO3))
- {
- return juegos[2];
- }
- else if (nombreJuego.Equals(NOMBRE_JUEGO4))
- {
- return juegos[3];
- }
- else
- {
- return null;
- }
- }
- /// <summary>
- /// Obtiene el juego más vendido.
- /// </summary>
- /// <returns>Juego más vendido en la empresa.</returns>
- public string ObtenerJuegoMasVendido()
- {
- if (cantidadesVendidas[0] == 0 && cantidadesVendidas[1] == 0 && cantidadesVendidas[2] == 0 && cantidadesVendidas[3] == 0)
- {
- return NINGUNO;
- }
- else if (cantidadesVendidas[0] >= cantidadesVendidas[1] && cantidadesVendidas[0] >= cantidadesVendidas[2] && cantidadesVendidas[0] >= cantidadesVendidas[3])
- {
- return NOMBRE_JUEGO1;
- }
- else if (cantidadesVendidas[1] >= cantidadesVendidas[0] && cantidadesVendidas[1] >= cantidadesVendidas[2] && cantidadesVendidas[1] >= cantidadesVendidas[3])
- {
- return NOMBRE_JUEGO2;
- }
- else if (cantidadesVendidas[2] >= cantidadesVendidas[0] && cantidadesVendidas[2] >= cantidadesVendidas[1] && cantidadesVendidas[2] >= cantidadesVendidas[3])
- {
- return NOMBRE_JUEGO3;
- }
- else if (cantidadesVendidas[3] >= cantidadesVendidas[0] && cantidadesVendidas[3] >= cantidadesVendidas[1] && cantidadesVendidas[3] >= cantidadesVendidas[2])
- {
- return NOMBRE_JUEGO4;
- }
- else
- {
- return NINGUNO;
- }
- }
- /// <summary>
- /// Determina qué juegos puede comprar de acuerdo a su cantidad y su precio.
- /// </summary>
- /// <param name="capacidad">Capacidad de memoria del dispositivo. En KB.</param>
- /// <param name="precio">Presupuesto.</param>
- /// <returns>Resumen de los juegos que puede comprar.</returns>
- public string SeleccionarJuego(int capacidad, decimal precio)
- {
- string respuesta = "Los juegos apropiados para usted son: ";
- if (juegos[0] != null && juegos[0].Precio <= precio && juegos[0].TamanioKB <= capacidad)
- {
- respuesta += String.Format("\n{0}", juegos[0].Nombre);
- }
- if (juegos[1] != null && juegos[1].Precio <= precio && juegos[1].TamanioKB <= capacidad)
- {
- respuesta += String.Format("\n{0}", juegos[1].Nombre);
- }
- if (juegos[2] != null && juegos[2].Precio <= precio && juegos[2].TamanioKB <= capacidad)
- {
- respuesta += String.Format("\n{0}", juegos[2].Nombre);
- }
- if (juegos[3] != null && juegos[3].Precio <= precio && juegos[3].TamanioKB <= capacidad)
- {
- respuesta += String.Format("\n{0}", juegos[3].Nombre);
- }
- if (respuesta.Equals("Los juegos apropiados para usted son: "))
- {
- respuesta = "Ninguno de los juegos es apropiado para usted.";
- }
- return respuesta;
- }
- /// <summary>
- /// Vende un juego.
- /// </summary>
- /// <param name="nombreJuego">Nombre del juego a vender.</param>
- /// <param name="cantidad">Cantidad del juego a vender.</param>
- /// <returns></returns>
- public bool VenderJuego(string nombreJuego, int cantidad)
- {
- bool vendio = false;
- if (juegos[0] != null && juegos[0].Nombre.Equals(nombreJuego) && juegos[0].CantidadActual >= cantidad)
- {
- cantidadesVendidas[0] = cantidadesVendidas[0] + cantidad;
- juegos[0].VenderJuego(cantidad);
- if (juegos[0].CantidadActual == 0)
- {
- juegos[0] = null;
- }
- vendio = true;
- }
- else if (juegos[1] != null && juegos[1].Nombre.Equals(nombreJuego) && juegos[1].CantidadActual >= cantidad)
- {
- cantidadesVendidas[1] = cantidadesVendidas[1] + cantidad;
- juegos[1].VenderJuego(cantidad);
- if (juegos[1].CantidadActual == 0)
- {
- juegos[1] = null;
- }
- vendio = true;
- }
- else if (juegos[2] != null && juegos[2].Nombre.Equals(nombreJuego) && juegos[2].CantidadActual >= cantidad)
- {
- cantidadesVendidas[2] = cantidadesVendidas[2] + cantidad;
- juegos[2].VenderJuego(cantidad);
- if (juegos[2].CantidadActual == 0)
- {
- juegos[2] = null;
- }
- vendio = true;
- }
- else if (juegos[3] != null && juegos[3].Nombre.Equals(nombreJuego) && juegos[3].CantidadActual >= cantidad)
- {
- cantidadesVendidas[3] = cantidadesVendidas[3] + cantidad;
- juegos[3].VenderJuego(cantidad);
- if (juegos[3].CantidadActual == 0)
- {
- juegos[3] = null;
- }
- vendio = true;
- }
- return vendio;
- }
- #endregion
- #region Puntos de extensión
- /// <summary>
- /// Punto de extensión no. 1.
- /// </summary>
- /// <returns>Respuesta del punto de extensión.</returns>
- public string PuntoExtension1()
- {
- return "Respuesta";
- }
- /// <summary>
- /// Punto de extensión no. 2.
- /// </summary>
- /// <returns>Respuesta del punto de extensión.</returns>
- public string PuntoExtension2()
- {
- return "Respuesta";
- }
- #endregion
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement