Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
 public void MoveLeft(int movX, int movY)
 {
     this.Erase();
     CursorX -= movX;
     CursorY -= movY;
     Boxy States = new Boxy(CursorX, Content);
 }
Ejemplo n.º 3
0
 public void Move(int movX, int movY)
 {
     this.Erase();
     this.CursorX += movX;
     this.CursorY += movY;
     Boxy States = new Boxy(CursorX, Content);
 }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        //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);
        }
Ejemplo n.º 6
0
        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();
            }
        }
Ejemplo n.º 7
0
        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();
        }
Ejemplo n.º 8
0
        //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);
        }
Ejemplo n.º 9
0
        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();
            }
        }
Ejemplo n.º 10
0
        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;
                }
            }
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        //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);
        }
Ejemplo n.º 13
0
        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();
        }
Ejemplo n.º 14
0
 public void Print()
 {
     Boxy States = new Boxy(CursorX, Content);
 }
Ejemplo n.º 15
0
        //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");
        }
Ejemplo n.º 16
0
        //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());
                    }
                }
            }
        }