Skip to content

Instantly share code, notes, and snippets.

@SebastianCastilloDev
Created September 9, 2023 04:57
Show Gist options
  • Save SebastianCastilloDev/b377edbed2b24ca7de0760561a574c21 to your computer and use it in GitHub Desktop.
Save SebastianCastilloDev/b377edbed2b24ca7de0760561a574c21 to your computer and use it in GitHub Desktop.
Console.WriteLine("Maquina tragamonedas");
Console.Write("Ingrese su nombre: ");
string? nombre = Console.ReadLine();
bool existeNombre = false;
TragaMonedas tragaMonedas;
if (nombre != "") {
existeNombre = true;
}
if (existeNombre) {
tragaMonedas = new TragaMonedas(nombre);
} else {
tragaMonedas = new TragaMonedas();
}
tragaMonedas.Bienvenida();
do {
tragaMonedas.MostrarMenu();
string? opcion = Console.ReadLine();
switch (opcion) {
case "1":
tragaMonedas.TirarLaPalanca();
break;
case "2":
tragaMonedas.IndicarSaldo();
break;
case "3":
tragaMonedas.CargarCreditos();
break;
case "4":
return;
}
} while(true);
public class TragaMonedas {
public int credito;
public string nombreJugador;
private int ganaCredito = 60;
private int pierdeCredito = -50;
private Animaciones animacion = new Animaciones();
public TragaMonedas() {
credito = 200;
nombreJugador = "Anónimo";
}
public TragaMonedas(string _nombreJugador) {
credito = 200;
nombreJugador = _nombreJugador;
}
public void Bienvenida() {
int velocidadAnimacion = 1;
string mensaje = "B I E N V E N I D O " + nombreJugador + "\n";
animacion.EscribirAnimacion(velocidadAnimacion,mensaje);
}
public void MostrarMenu() {
int velocidadAnimacion = 3;
string menu = "Que deseas hacer?\n";
menu += "1. Tirar la palanca\n";
menu += "2. Consultar Saldo\n";
menu += "3. Agregar Creditos\n";
menu += "4. Retirarse";
animacion.EscribirAnimacion(velocidadAnimacion, menu + "\n" + "Ingrese una opción: ");
}
public void TirarLaPalanca(){
Console.Clear();
int velocidadAnimacion = 0;
int numero = GenerarNumeroAleatorio();
int[] numerosDeLaSuerte = {1,2,3,4};
bool haGanado = numerosDeLaSuerte.Contains(numero);
animacion.TragaMonedas(numero);
string mensaje = haGanado ?
"\n 🎉 🎉 🎉 Ha Acertado, ha obtenido el numero: " + numero + " FELICITACIONES!"+ "\n" + "Ha ganado $" + ganaCredito + " 🎉 🎉 🎉 "+"\n"
:
"\n 🧨 🧨 🧨 Ha Perdido, ha obtenido el numero: " + numero + "\n" + "Ha perdido $" + pierdeCredito + " 🧨 🧨 🧨 " + "\n";
if (credito > 0) {
ModificarSaldo(haGanado);
} else {
credito = 0;
}
animacion.EscribirAnimacion(velocidadAnimacion, mensaje);
IndicarSaldo();
}
public void ModificarSaldo(bool tirada){
if(tirada) credito += ganaCredito;
else credito += pierdeCredito;
}
public void CargarCreditos(){
credito += 200;
IndicarSaldo();
}
public void IndicarSaldo(){
int velocidadAnimacion = 10;
string mensaje = "\n- - - - - - - - - - - - - -\n";
mensaje += nombreJugador + " tu saldo final es " + credito + "\n";
mensaje += "- - - - - - - - - - - - - -\n\n";
animacion.EscribirAnimacion(velocidadAnimacion, mensaje);
}
private int GenerarNumeroAleatorio(){
Random random = new Random();
return random.Next(1,20);
}
}
public class Animaciones {
int velocidadAnimacion;
string mensaje;
static char[] caracteres;
public Animaciones() {
velocidadAnimacion = 0;
mensaje = "";
caracteres = new char[3] {'X','#','$'};
}
public void EscribirAnimacion(int velocidad, string texto) {
for (int i = 0; i < texto.Length; i++)
{
Console.BackgroundColor = ConsoleColor.Magenta;
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Write(texto[i]);
Thread.Sleep(velocidad);
}
}
public void TragaMonedas(int numeroGanador) {
Console.Clear();
cuadro(1,1);
cuadro(1,3);
cuadro(1,5);
cuadro(3,1);
cuadro(3,3);
cuadro(3,5);
cuadro(5,1);
cuadro(5,3);
cuadro(5,5);
cuadroGanador(3,3, numeroGanador);
Console.SetCursorPosition(5,5);
Thread.Sleep(500);
}
static void cuadro(int x, int y){
int tiempo = 10;
int repeticiones = 5;
for (int i = 0; i < repeticiones; i++) {
foreach (char caracter in caracteres) {
Console.SetCursorPosition (x,y);
Console.Write(caracter);
Thread.Sleep(tiempo);
}
}
}
static void cuadroGanador(int x, int y, int numeroGanador){
int tiempo = 20;
int repeticiones = 5;
int tiempoIncremento = 10;
for (int i = 0; i < repeticiones; i++) {
foreach (char caracter in caracteres) {
Console.SetCursorPosition (x,y);
Console.Write(caracter);
Thread.Sleep(tiempo);
tiempo += tiempoIncremento;
}
}
Console.SetCursorPosition (x,y);
Console.Write(numeroGanador);
Thread.Sleep(tiempo + 10);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment