Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Created July 17, 2014 00:49
Show Gist options
  • Save Fhernd/cea6210dc3e4636a9d26 to your computer and use it in GitHub Desktop.
Save Fhernd/cea6210dc3e4636a9d26 to your computer and use it in GitHub Desktop.
Implementación de la clase EmpresaJuegos en C#.
// ===++===
//
// 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
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment