public static bool LoadMenu(List <Game> Games) { List <string> menuList = VisualList(Games); menuList.Add("<< Atrás"); if (Games.Count <= 0) { Boxy NoGamesMs = new Boxy(22, 0, 15, true, "No hay juegos guardados"); Console.ReadKey(); NoGamesMs.Erase(); return(false); } else { Menu SavedGames = new Menu(12, true); int game = SavedGames.Read(menuList, "Elige qué partida quieres cargar", 3); if (game < Games.Count) { //Game LOADED LoadGame(Games[game]); Console.Clear(); Boxy LoadedMs = new Boxy(18, 0, 15, true, "Partida cargada"); Console.ReadKey(); LoadedMs.Erase(); return(true); } else { SavedGames.Erase(); return(false); } } }
public void MoveLeft(int movX, int movY) { this.Erase(); CursorX -= movX; CursorY -= movY; Boxy States = new Boxy(CursorX, Content); }
public void Move(int movX, int movY) { this.Erase(); this.CursorX += movX; this.CursorY += movY; Boxy States = new Boxy(CursorX, Content); }
static void Take() { int dmg = Mob.Attack(); Boxy DamageM = new Boxy(22, 0, true, $"Te pega un legüetazo ácido! Te mete {Player.TakeDamage(false, dmg)} de daño! Uos!"); PlayerStatus.Refresh(); PlayerStatus.AnimationLeft(2, 35); Console.ReadKey(); DamageM.Erase(); }
//Returns false if no item has been used public bool Open() { List <string> Objects = new List <string>(); if (this.Potion.quantity > 0) { Objects.Add($"{Potion.PotName} ({Potion.quantity})"); } if (Objects.Count <= 0) { Boxy Noth = new Boxy(17, 0, true, "El inventario está vacío."); Console.ReadKey(); Noth.Erase(); return(false); } else { Objects.Add("Salir"); Menu InvMenu = new Menu(3, true); switch (InvMenu.InvMenu(Objects, $"¿Qué objeto quieres usar?", 20)) { case "p": InvMenu.Erase(); int heal = Potion.Drink(); Program.PlayerStatus.Refresh(); Program.PlayerStatus.Print(); Boxy Poti = new Boxy(17, 0, true, $"Bebes una poti y te curas {heal} hp"); Console.ReadKey(); Poti.Erase(); return(true); break; case "s": InvMenu.Erase(); return(false); break; } } return(false); }
static void Attack(bool magic) { int dmg = 0; if (magic) { dmg = Player.MagicDmg(critical()); Boxy DamageM = new Boxy(22, 0, true, $"Le lanzas una bola de fuego! Le haces {Mob.TakeDmg(dmg, magic)} de daño! WOW!"); MobStatus.Refresh(); MobStatus.Animation(2, 35); Console.ReadKey(); DamageM.Erase(); } else { dmg = Player.PhisicDmg(critical()); Boxy DamageM = new Boxy(22, 0, true, $"Le pegas una patada voladora! Le haces {Mob.TakeDmg(dmg, magic)} de daño! WOW!"); MobStatus.Refresh(); MobStatus.Animation(2, 35); Console.ReadKey(); DamageM.Erase(); } }
public void NewPlayer() { existent = false; Name = "STATIC"; Age = Random.Next(16, 24); LifeTime = 1; LongLife = 0; Race = "humano"; Class = ""; St = 5; In = 4; Rs = 3; Cr = 2; Crit = 1; cure = false; fury = false; meditate = false; vampire = false; Hp = new int[] { 24, 24 }; Mana = new int[] { 7, 7 }; Xp = new int[] { 0, 4 }; Lvl = 1; bool invalidName; string newName; Menu CreatePlayerMenu = new Menu(5, true); do { Console.Clear(); Boxy NameBoxy = new Boxy("Introduce el nombre de tu personaje", 2, 0, 5, true); newName = NameBoxy.ReadLine(20); NameBoxy.Erase(); if (newName.Length <= 0) { NameBoxy = new Boxy("Tienes que introducir un nombre ._.", 1, 0, 5, true); Console.ReadKey(); invalidName = true; } else if (Program.SuccesfulConnection && SavedGames.CheckPlayerName(newName)) { NameBoxy = new Boxy("Ya existe una partida guardada con este nombre", 1, 0, 5, true); Console.ReadKey(); invalidName = true; } else { invalidName = false; } } while (invalidName); this.Name = newName; switch (CreatePlayerMenu.Read(new string[] { "ella", "él", "elle" }, "Con qué pronombre prefieres que se refieran a ti?", 20)) { case 0: this.Gender = "f"; break; case 1: this.Gender = "m"; break; case 2: this.Gender = "n"; break; } Console.Clear(); this.Race = Program.Races.NewRace(this.Gender); Boxy Message = new Boxy(22, 0, true, BackStory()); Console.ReadKey(); Console.Clear(); }
//true if new game, false if loaded static bool StartMenu(List <Game> Games) { Graphics.Title(1); Menu StartMenu = new Menu(12, true); bool exit = false; bool output = true; while (!exit) { StartMenu.Erase(); switch (StartMenu.Read(new string[] { "Nueva partida", "Cargar Partida", "Salón de la Fama", "Conectar BDD local", "Salir" }, "Hola!", 18)) { case 0: exit = true; output = true; break; case 1: exit = SavedGames.LoadMenu(Games); output = false; break; case 2: Boxy noMsn = new Boxy(12, 0, true, "Esta función se encuentra en desarrollo"); Console.ReadKey(); noMsn.Erase(); break; case 3: Boxy NameBoxy = new Boxy("Introduce la dirección de la BDD (ejemplo 'THIS-PC\\SQLEXPRESS'", 2, 0, 5, true); string url = Console.ReadLine(); SavedGames.Connect(url); try { Games = SavedGames.GetAll(); SuccesfulConnection = true; Boxy dBError = new Boxy(22, 13, 0, true, "Conectado a la base de datos con éxito!"); Console.ReadKey(); dBError.Erase(); } catch { Boxy dBError = new Boxy(22, 13, 0, true, "No se ha podido conectar con la base de datos. Las funciones de carga y de guardado no estarán disponibles"); Console.ReadKey(); Console.Clear(); dBError.Erase(); } NameBoxy.Erase(); break; case 4: Console.Clear(); Boxy thanks = new Boxy(12, 0, true, "Gracias por jugar :')"); Console.ReadKey(); Environment.Exit(0); break; } } Console.Clear(); return(output); }
static void Main(string[] args) { //while (1 < 2) //{ // Console.WriteLine(FantasyGen.Fantastic()); // Console.ReadKey(); //} //Connection to database //INSERT HERE YOUR DATABASE PATH SavedGames.Connect("THIS-PC\\SQLEXPRESS"); Console.SetWindowSize(Console.LargestWindowWidth, Console.LargestWindowHeight); //Preset string msg = null; //Game Bucle while (1 < 2) { //First of all - Loading savedgames list List <Game> Games = new List <Game>(); try { Games = SavedGames.GetAll(); SuccesfulConnection = true; } catch { Boxy dBError = new Boxy(22, 13, 0, true, "No se ha podido conectar con la base de datos. Las funciones de carga y de guardado no estarán disponibles"); Console.ReadKey(); Console.Clear(); } //StartMenu - false load, true new Player if (StartMenu(Games)) { Inventory = new Inventory(); Gea = new World(); //Creating new player Player.NewPlayer(); } //Once the player is created or loaded, we refresh the statics Mob = new Mob(Gea.corruption); PlayerStatus = new PlayerStatus(15, 3); gameover = false; //Gameplay while (!gameover) { //Pre-turn PlayerStatus.Refresh(); //Setting world corruption if (!loot) { if (Random.Next(1, 4) == 4) { Gea.corruption++; } } else { loot = false; if (Random.Next(1, 4) <= 3) { Gea.corruption++; } } //Setting starting turn msg switch (lastAct) { case "born": msg = "Amanece un hermoso día."; break; case "fight": msg = "Menuda carnicería!"; break; case "camp": msg = "Amanece un hermoso día."; break; case "dialogue": msg = "Menudo combate dialéctico!"; break; case "runaway": msg = "Por los pelos!"; break; } //Turn Itself if (!Journey.Direction(msg)) { gameover = true; } else { if (Encounter()) { Combat(); } Gea.months += Random.Next(1, 4); } //End of turn checkout while (Gea.months >= 12) { Gea.months -= 12; Gea.age++; Player.Age++; } } if (Player.Hp[0] <= 0) { Console.Clear(); Graphics.Death(5); SavedGames.DeleteCurrentGame(); Console.ReadKey(); } Console.Clear(); } }
static void Combat() { Menu Combat = new Menu(3, true); bool runaway = false; while (1 < 2) { MobStatus.Refresh(); MobStatus.Print(); bool pass = true; switch (Combat.CombatMenu($"{Mob.Name.Print(false, 2)} se retuerce violentamente!", Player.cure, Player.meditate, Player.fury)) { case "a": Combat.Erase(); //ataque Attack(false); break; case "c": Combat.Erase(); //conjuro if (Player.Mana[0] < 1) { Boxy NoMana = new Boxy(22, 0, true, "No te queda mana!"); pass = false; Console.ReadKey(); NoMana.Erase(); } else { Attack(true); } break; case "d": Combat.Erase(); //discurso if (Mob.TakeDiscourse(Player.Discourse())) { Boxy MD = new Boxy(22, 0, true, "Le echas una buena bronca. Se ha reducido su agresividad."); Console.ReadKey(); MD.Erase(); } else { Boxy MD = new Boxy(22, 0, true, "La bestia ya no atiende a razones"); Console.ReadKey(); MD.Erase(); } break; case "i": Combat.Erase(); //inventario pass = Inventory.Open(); break; case "h": Combat.Erase(); //huida if (Random.Next(1, 3) == 1) { MobStatus.Erase(); Boxy MH = new Boxy(22, 0, true, "Huiste!"); Console.ReadKey(); MH.Erase(); runaway = true; } else { Boxy MH = new Boxy(22, 0, true, "Corres y corres, pero el monstruo te persigue!"); Console.ReadKey(); MH.Erase(); } break; } if (runaway) { loot = false; lastAct = "runaway"; break; } else if (Player.Hp[0] <= 0) { //Boxy MH = new Boxy(22, 0, true, "Has muerto :("); //Console.ReadKey(); //MH.Erase(); break; } else if (Mob.Hp[0] <= 0) { int xp = Mob.St + Random.Next(-Mob.St / 3, Mob.St / 3); Boxy MH = new Boxy(25, 0, true, $"Has asesinado a {Mob.Name.Print(false, 1)}. Ganas {xp}xp"); lastAct = "fight"; loot = true; MobStatus.Erase(); Console.ReadKey(); Player.GainXp(xp); MH.Erase(); break; } if (pass) { Take(); } if (Player.Hp[0] <= 0) { //Boxy MH = new Boxy(22, 0, true, "Has muerto :("); //Console.ReadKey(); //MH.Erase(); gameover = true; break; } } }
static bool Encounter() { Place Place = new Place(); Menu RunMenu = new Menu(3, true); int rdn = Random.Next(1, 7); if (rdn == 1) { switch (RunMenu.Read(new string[] { "Montar el campamento", "Descansar es para débiles" }, $"{Arrival()} Todo está tranquilo ¿Qué haces?", 30)) { case 0: RunMenu.Erase(); Firecamp.FireMenu(); break; case 1: RunMenu.Erase(); Boxy Keep = new Boxy(17, 0, true, "Sigues andando toda la noche"); Console.ReadKey(); Keep.Erase(); break; } lastAct = "camp"; return(false); } else { anotherMob(); switch (RunMenu.Read(new string[] { "Luchar", "Parlamentar", "Huir" }, $"{Arrival()} {View()} {Mob.Name.Print(true, 1)}. ¿Qué haces?", 37)) { case 2: if (Random.Next(1, 4) == 1) { RunMenu.Erase(); Boxy Message = new Boxy(22, 0, true, $"Huíste como {Common.Dt().GetWord(Player.Gender)} cobarde!"); lastAct = "runaway"; Console.ReadKey(); Message.Erase(); return(false); } else { RunMenu.Erase(); Boxy MessageTwo = new Boxy(22, 0, true, "No puedes huir!"); Console.ReadKey(); MessageTwo.Erase(); return(true); } break; case 0: RunMenu.Erase(); Boxy MessageThree = new Boxy(22, 0, true, "A luchar!"); Console.ReadKey(); MessageThree.Erase(); return(true); break; case 1: RunMenu.Erase(); if (Player.Discourse(Mob.St)) { int xp = Random.Next(Mob.Attack() / 8, Mob.Attack() / 5) + 1; Boxy MessageConvinced = new Boxy(22, 0, true, $"Charlas con el monstruo y lo vuelves pacifista. Ganas {xp} xp"); Console.ReadKey(); Player.GainXp(xp); MessageConvinced.Erase(); loot = true; lastAct = "dialogue"; return(false); } else { if (Random.Next(1, 2) == 1) { Boxy MessageUnConvinced = new Boxy(22, 0, true, "Intentas hablar con el monstruo, pero solo quiere luchar!"); Console.ReadKey(); MessageUnConvinced.Erase(); return(true); } else { Boxy MessageUnConvinced = new Boxy(22, 0, true, "Tu discurso vuelve al monstruo más agresivo!"); Mob.St += Random.Next(Mob.St / 10, Mob.St / 9); Console.ReadKey(); MessageUnConvinced.Erase(); return(true); } } break; } } return(false); }
//TRue if game keeps going, false if returning to main menu public bool Direction(string txt) { Menu DirectionMenu = new Menu(3, true); switch (DirectionMenu.Read(new string[] { "Norte", "Sur", "Este", "Oeste", "(Guardar y salir)" }, $"{txt}¿Hacia dónde quieres ir?", 20)) { case 0: DirectionMenu.Erase(); Boxy Northy = new Boxy("Te diriges hacia el Norte...", 1, 0, 5, true); Console.ReadKey(); Northy.Erase(); return(true); break; case 1: DirectionMenu.Erase(); Boxy Southy = new Boxy("Te diriges hacia el Sur...", 1, 0, 5, true); Console.ReadKey(); Southy.Erase(); return(true); break; case 2: DirectionMenu.Erase(); Boxy Easty = new Boxy("Te diriges hacia el Este...", 1, 0, 5, true); Console.ReadKey(); Easty.Erase(); return(true); break; case 3: DirectionMenu.Erase(); Boxy Westy = new Boxy("Te diriges hacia el Oeste...", 1, 0, 5, true); Console.ReadKey(); Westy.Erase(); return(true); break; case 4: //Save and Go if (Program.SuccesfulConnection) { if (!Program.Player.existent) { SavedGames.SaveNew(); Boxy Save = new Boxy("Se ha guardado una nueva partida", 1, 0, 5, true); Console.ReadKey(); Console.Clear(); return(false); } else { SavedGames.Rewrite(); Boxy Rewrite = new Boxy("Se han sobreescrito los datos guardados", 1, 0, 5, true); Console.ReadKey(); Console.Clear(); return(false); } } else { System.Threading.Thread.Sleep(2000); Boxy Rewrite = new Boxy("No se ha podido conectar con la base de datos :S", 1, 0, 5, true); Console.ReadKey(); Console.Clear(); return(true); } break; } return(false); }
public static void FireMenu() { Random ran = new Random(); List <string> Options = new List <string>(); Options.Add("Dormir"); Options.Add("Meditar"); Options.Add("Hacer Sudokus"); Options.Add("Comer un marshmallow"); Menu Menu = new Menu(3, true); Boxy message; switch (Menu.Read(Options, $"Enciendes una hoguera y montas el campamento. ¿Qué vas a hacer esta noche?", 20)) { case 0: Menu.Erase(); message = new Boxy(22, 0, true, "A mimir!"); Program.Player.Hp[0] = Program.Player.Hp[1]; Console.ReadKey(); message.Erase(); break; case 1: Menu.Erase(); message = new Boxy(22, 0, true, $"Meditas durante toda la noche.");; Program.Player.Heal(ran.Next(Program.Player.Hp[1] / 4, Program.Player.Hp[1] / 2)); Program.Player.Restore(ran.Next(Program.Player.Hp[1] / 5, Program.Player.Hp[1] / 3)); Console.ReadKey(); message.Erase(); break; case 2: Menu.Erase(); message = new Boxy(22, 0, true, $"Te pasas la noche haciendo sudokus."); Program.Player.Restore(ran.Next(Program.Player.Hp[1] / 4, Program.Player.Hp[1] / 2)); Console.ReadKey(); message.Erase(); break; case 3: Menu.Erase(); //burn if (ran.Next(0, 2) == 0) { message = new Boxy(22, 0, true, $"El marshmallow se te ha quemado :_("); Console.ReadKey(); message.Erase(); break; } else { message = new Boxy(22, 0, true, $"El marshmallow estaba buenísimo."); switch (ran.Next(0, 2)) { case 0: Program.Player.Heal(ran.Next(1, 5)); break; case 1: Program.Player.Restore(ran.Next(1, 2)); break; case 2: Program.Player.GainXp(ran.Next(1, 2)); break; } Console.ReadKey(); message.Erase(); break; } } Program.PlayerStatus.Refresh(); }
public void Print() { Boxy States = new Boxy(CursorX, Content); }
//Inventory Menu, similarly to combat Menu, returns a letter public string InvMenu(List <string> item, string title, int x) { //var originalpos = Console.CursorTop; int i = 0; ConsoleKeyInfo k; //Looking for the longest string in the menu int longest = Construct.Longest(item); if (longest > x) { x = longest; } int extraY = title.Length / x; if (title.Length % x != 0) { extraY++; } int height = item.Count + extraY; this.X = x; this.Y = height; this.posX = (Console.WindowWidth - this.X - 2) / 2; //Printing the boxy box Boxy Boxy = new Boxy(this.X, this.Y, this.posX, this.posY, this.Center); Boxy.BiPrint(); Boxy.WriteLine(title); while (1 < 2) { Boxy.GoTop(); Boxy.Jump(extraY); foreach (string element in item) { Boxy.WriteLine(element); } Boxy.GoTop(); Boxy.Jump(extraY + i); Console.ForegroundColor = ConsoleColor.Black; Console.BackgroundColor = ConsoleColor.Yellow; Boxy.WriteLine(item[i]); Console.ResetColor(); Boxy.GoTo(this.posX + Boxy.X - 1, this.posY + extraY - 2); while (1 < 2) { k = Console.ReadKey(); if (k.Key == ConsoleKey.UpArrow) { if (i == 0) { i = item.Count - 1; } else { i--; } break; } else if (k.Key == ConsoleKey.DownArrow) { if (i == item.Count - 1) { i = 0; } else { i++; } break; } else if (k.Key == ConsoleKey.Enter) { return(item[i].Substring(0, 1).ToLower()); } } } return("p"); }
//Combat menu returns the first letter of the selected option public string CombatMenu(string title, bool cure, bool meditate, bool fury) { //var originalpos = Console.CursorTop; int i = 0; ConsoleKeyInfo k; //Options List <string> item = new List <string>(); item.Add("Ataque"); item.Add("Conjuro"); item.Add("Discurso épico"); if (cure) { item.Add("Sanaciión"); } if (meditate) { item.Add("Meditar"); } if (fury) { item.Add("Enfurecer"); } item.Add("Inventario"); item.Add("Huir"); //Looking for the longest string in the menu int longest = Construct.Longest(item); X = 17; if (longest > X) { X = longest; } Boxy counter = new Boxy(X, Y, 1, 1, Center); int extraY = counter.CountLines(title); Y = item.Count + extraY; this.posX = (Console.WindowWidth - this.X - 2) / 2; //Printing the boxy box Boxy Boxy = new Boxy(X, Y, posX, posY, Center); Boxy.BiPrint(); Boxy.WriteLine(title); while (1 < 2) { Boxy.GoTop(); Boxy.Jump(extraY); foreach (string element in item) { Boxy.WriteLine(element); } Boxy.GoTop(); Boxy.Jump(extraY + i); Console.ForegroundColor = ConsoleColor.Black; Console.BackgroundColor = ConsoleColor.Yellow; Boxy.WriteLine(item[i]); Console.ResetColor(); Boxy.GoTo(this.posX + Boxy.X - 1, this.posY + extraY - 2); while (1 < 2) { k = Console.ReadKey(); if (k.Key == ConsoleKey.UpArrow) { if (i == 0) { i = item.Count - 1; } else { i--; } break; } else if (k.Key == ConsoleKey.DownArrow) { if (i == item.Count - 1) { i = 0; } else { i++; } break; } else if (k.Key == ConsoleKey.Enter) { return(item[i].Substring(0, 1).ToLower()); } } } }