Ejemplo n.º 1
0
        /// <summary>
        /// 战斗场景,当玩家选择战斗后进入
        /// </summary>
        public static void Combat()
        {
            //生成随机数
            Random sjs = new Random();
            //计数器,用来统计局数
            int countNum = 1;
            //判断用户选择角色是否为战士
            bool Rolse = (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Warrior);

            //进入战争循环,直到玩家或者所有怪物死亡,退出
            while (true)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("\n\t战争开始了");
                Console.ForegroundColor = ConsoleColor.White;
                int ntemp = sjs.Next(1, 4);
                //用来随机生成敌人(1-3个)
                for (int i = 1; i <= ntemp; i++)
                {
                    //生成一个敌人变量
                    ComputerRoles computerRoles = new ComputerRoles();
                    Thread.Sleep(400);
                    //输出敌人变量的名字
                    Console.WriteLine("\n\t遇到敌人:    " + computerRoles.Name);
                    //把敌人加到敌人列表中
                    ComputerRoles.ListComputerRoles.Add(computerRoles);
                    Thread.Sleep(400);
                }
                //判断玩家输入的是否正确,输入正确后退出循环
                while (true)
                {
                    //显示游戏进行了几次
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("\n\t第" + countNum + "回合");
                    Console.ForegroundColor = ConsoleColor.White;
                    Thread.Sleep(400);
                    //提示玩家进行输入
                    s : Console.WriteLine("\n\t请按键选择要执行的行为: \n\n\t1.普通攻击  2.技能攻击  3.显示敌方属性  \n\n\t4.显示己方属性  5.逃跑   6.使用补血药品");
                    //判断玩家输入的是否正确
                    ConsoleKeyInfo Downkey1 = Console.ReadKey(true);
                    //玩家输入后进入攻击方法
                    if (Downkey1.Key.Equals(ConsoleKey.D1) || Downkey1.Key.Equals(ConsoleKey.NumPad1))
                    {
                        Thread.Sleep(400);
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("\n\t您选择的是普通攻击,请按键选择攻击目标:");
                        Console.ForegroundColor = ConsoleColor.White;
                        //输出生成的所有敌人,供玩家选择攻击
                        for (int i = 0; i < ComputerRoles.ListComputerRoles.Count; i++)
                        {
                            Console.WriteLine("\n\t" + (i + 1) + ":" + ComputerRoles.ListComputerRoles[i].Name);
                        }
                        //判断输入的是否正确
                        int Ninttemp;
                        while (true)
                        {
                            //接受玩家的输入信息
                            string strTemp = Console.ReadLine();
                            //判断玩家输入的是否为数字,如果是就退出循环
                            if (int.TryParse(strTemp, out Ninttemp))
                            {
                                //判断玩家输入的是否超过了小怪列表的长度
                                if (ComputerRoles.ListComputerRoles.Count >= Ninttemp)
                                {
                                    break;
                                }
                                else
                                {
                                    Thread.Sleep(400);
                                    Console.ForegroundColor = ConsoleColor.Red;
                                    Console.WriteLine("\n\t很抱歉,您选择的对象不存在,请重新选择");
                                    Console.ForegroundColor = ConsoleColor.White;
                                }
                            }
                            else
                            {
                                Thread.Sleep(400);
                                Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("\n\t很抱歉,您输入的有误,请重新选择");
                                Console.ForegroundColor = ConsoleColor.White;
                            }
                        }
                        //判断玩家选择的角色,在攻击中对怪物进行不同上海
                        if (Rolse)
                        {
                            //给被攻击对象方法传入:战士
                            ComputerRoles.ListComputerRoles[Ninttemp - 1].Bcombat(_RolesWarrior);
                        }
                        else
                        {
                            //给被攻击对象方法传入:法师
                            ComputerRoles.ListComputerRoles[Ninttemp - 1].Bcombat(_RolesWizard);
                        }
                    }
                    else if (Downkey1.Key.Equals(ConsoleKey.D2) || Downkey1.Key.Equals(ConsoleKey.NumPad2))
                    {
                        Thread.Sleep(400);
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("\n\t您选择的是技能攻击,请按键选择攻击目标:");
                        Console.ForegroundColor = ConsoleColor.White;
                        for (int i = 0; i < ComputerRoles.ListComputerRoles.Count; i++)
                        {
                            Console.WriteLine("\n\t" + (i + 1) + ":" + ComputerRoles.ListComputerRoles[i].Name);
                        }
                        //判断输入的是否正确
                        int Ninttemp;
                        while (true)
                        {
                            //接受玩家输入的选择目标,并进行判断
                            string strTemp = Console.ReadLine();
                            if (int.TryParse(strTemp, out Ninttemp))
                            {
                                if (ComputerRoles.ListComputerRoles.Count >= Ninttemp)
                                {
                                    break;
                                }
                                else
                                {
                                    Thread.Sleep(400);
                                    Console.WriteLine("\n\t很抱歉,您输入的有误,请重新选择");
                                }
                            }
                            else
                            {
                                Thread.Sleep(400);
                                Console.WriteLine("\n\t很抱歉,您输入的有误,请重新选择");
                            }
                        }
                        if (Rolse)
                        {
                            //改变参数,传递使用了技能攻击
                            Bskill = true;
                            ComputerRoles.ListComputerRoles[Ninttemp - 1].Bcombat(_RolesWarrior);
                        }
                        else
                        {
                            //改变参数,传递使用了技能攻击
                            Bskill = true;
                            ComputerRoles.ListComputerRoles[Ninttemp - 1].Bcombat(_RolesWizard);
                        }
                    }
                    else if (Downkey1.Key.Equals(ConsoleKey.D3) || Downkey1.Key.Equals(ConsoleKey.NumPad3))
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("\n\t您选择的是显示敌方属性");
                        Console.ForegroundColor = ConsoleColor.White;
                        Load();
                        //加载出所有怪物的属性
                        for (int i = 0; i < ComputerRoles.ListComputerRoles.Count; i++)
                        {
                            GameRolesManager.Information(ComputerRoles.ListComputerRoles[i].Name, ComputerRoles.ListComputerRoles[i].Hp, ComputerRoles.ListComputerRoles[i].Attack, ComputerRoles.ListComputerRoles[i].Defense, 0, 0, 0, false);
                        }
                    }
                    else if (Downkey1.Key.Equals(ConsoleKey.D4) || Downkey1.Key.Equals(ConsoleKey.NumPad4))
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("\n\t您选择的是显示己方属性");
                        Console.ForegroundColor = ConsoleColor.White;
                        Load();
                        if (Rolse)
                        {
                            //战士的角色信息展示
                            GameRolesManager.Information(_PlayerRoles.Name, _RolesWarrior.Hp, _RolesWarrior.Attack, _RolesWarrior.Defense, _RolesWarrior.Experience, _RolesWarrior.Money, _RolesWarrior.Grade, false);
                        }
                        else if (!Rolse)
                        {
                            //法师的角色信息展示
                            GameRolesManager.Information(_PlayerRoles.Name, _RolesWizard.Hp, _RolesWizard.Attack, _RolesWizard.Defense, _RolesWizard.Experience, _RolesWizard.Money, _RolesWizard.Grade, false);
                        }
                    }
                    else if (Downkey1.Key.Equals(ConsoleKey.D5) || Downkey1.Key.Equals(ConsoleKey.NumPad5))
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("\n\t正在为您加速逃跑中");
                        Console.ForegroundColor = ConsoleColor.White;
                        Load();
                        int temp = sjs.Next(1, 3);
                        if (temp == 2)
                        {
                            Console.ForegroundColor = ConsoleColor.Yellow;
                            Console.WriteLine("\n\n\t逃跑成功………………");
                            Console.ForegroundColor = ConsoleColor.White;
                            GameChoice();
                        }
                        else
                        {
                            Console.ForegroundColor = ConsoleColor.Yellow;
                            Console.WriteLine("\n\n\t逃跑失败………………");
                            Console.ForegroundColor = ConsoleColor.White;
                        }
                    }
                    else if (Downkey1.Key.Equals(ConsoleKey.D6) || Downkey1.Key.Equals(ConsoleKey.NumPad6))
                    {
                        Console.WriteLine("\n\t您选择的是使用补血药品");
                        Load();
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("\n\t请选择您要使用的补血药品");
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.WriteLine("\n\t1.能量甘饮");
                        Console.WriteLine("\n\t2.止痛药");
                        ConsoleKeyInfo Downkey4 = Console.ReadKey(true);
                        if (Downkey4.Key.Equals(ConsoleKey.D1) || Downkey4.Key.Equals(ConsoleKey.NumPad1))
                        {
                            if (GamePackage.DicPackageGoods1.ContainsKey("能量甘饮"))
                            {
                                Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("\n\t您已成功使用能量甘饮,您的血量增加了120");
                                Console.ForegroundColor = ConsoleColor.White;
                                int count = GamePackage.DicPackageGoods1["能量甘饮"];
                                GamePackage.DicPackageGoods1["能量甘饮"] = count - 1;
                                _RolesWarrior.Hp += 120;
                                _RolesWizard.Hp  += 120;
                                //判断加血是否超过了最大血量
                                if (_RolesWarrior.Hp > ntemp)
                                {
                                    _RolesWarrior.Hp = ntemp;
                                }
                                if (_RolesWizard.Hp > HPTempWizard)
                                {
                                    _RolesWizard.Hp = HPTempWizard;
                                }
                            }
                            else
                            {
                                Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("\n\t您的背包中没有此物品,您可以去商店购买");
                                Console.ForegroundColor = ConsoleColor.White;
                            }
                        }
                        else if (Downkey4.Key.Equals(ConsoleKey.D2) || Downkey4.Key.Equals(ConsoleKey.NumPad2))
                        {
                            if (GamePackage.DicPackageGoods1.ContainsKey("止痛药"))
                            {
                                Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("\n\t您已成功使用止痛药,您的血量增加了240");
                                Console.ForegroundColor = ConsoleColor.White;
                                int count = GamePackage.DicPackageGoods1["止痛药"];
                                GamePackage.DicPackageGoods1["止痛药"] = count - 1;
                                _RolesWarrior.Hp += 240;
                                _RolesWizard.Hp  += 240;
                                //判断加血是否超过了最大血量
                                if (_RolesWarrior.Hp > ntemp)
                                {
                                    _RolesWarrior.Hp = ntemp;
                                }
                                if (_RolesWizard.Hp > HPTempWizard)
                                {
                                    _RolesWizard.Hp = HPTempWizard;
                                }
                            }
                            else
                            {
                                Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("\n\t您的背包中没有此物品,您可以去商店购买");
                                Console.ForegroundColor = ConsoleColor.White;
                            }
                        }
                        else
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Thread.Sleep(500);
                            Console.WriteLine("\n\t很抱歉,您输入的有误,请重新选择");
                            Console.ForegroundColor = ConsoleColor.White;
                        }
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Thread.Sleep(500);
                        Console.WriteLine("\n\t很抱歉,您输入的有误,请重新选择");
                        Console.ForegroundColor = ConsoleColor.White;
                        goto s;
                    }
                    //判断生成怪物是否被消灭
                    for (int i = 0; i < ComputerRoles.ListComputerRoles.Count; i++)
                    {
                        if (ComputerRoles.ListComputerRoles[i].Hp <= 0)
                        {
                            Thread.Sleep(400);
                            Console.WriteLine("\n\t" + ComputerRoles.ListComputerRoles[i].Name + "被消灭了");
                            //如果消灭了就删掉这个怪物
                            ComputerRoles.ListComputerRoles.RemoveAt(i);
                            i--;
                        }
                    }
                    //如果所有怪物被消灭
                    if (ComputerRoles.ListComputerRoles.Count == 0)
                    {
                        Thread.Sleep(400);
                        Console.BackgroundColor = ConsoleColor.Red;
                        Console.WriteLine("\n\t战斗结束,你获胜了!!!");
                        Console.BackgroundColor = ConsoleColor.White;
                        //随机生成经验和金钱
                        int jie2 = sjs.Next(10, 20);
                        int jie3 = sjs.Next(5, 200);
                        //给不同角色分别增加金钱和经验
                        if (Rolse)
                        {
                            _RolesWarrior.Experience += jie2;
                            Thread.Sleep(400);
                            Console.WriteLine("\n\t本次战争获得经验" + jie2);
                            _RolesWarrior.Money += jie3;
                            Thread.Sleep(400);
                            Console.WriteLine("\n\t本次战争获得金钱" + jie3);
                        }
                        else
                        {
                            _RolesWizard.Experience += jie2;
                            Thread.Sleep(400);
                            Console.WriteLine("\n\t本次战争获得经验" + jie2);
                            _RolesWizard.Money += jie3;
                            Thread.Sleep(400);
                            Console.WriteLine("\n\t本次战争获得金钱" + jie3);
                        }
                        //随机生成物品
                        int jie1 = sjs.Next(1, 10);
                        if (jie1 == 9 || jie1 == 7)
                        {
                            Thread.Sleep(400);
                            Console.BackgroundColor = ConsoleColor.Yellow;
                            Console.WriteLine("\n\t本次战争获得能量甘饮1瓶,已自动为您放入背包");
                            Console.BackgroundColor = ConsoleColor.White;
                            //给玩家背包增加这个物品
                            int count = GamePackage.DicPackageGoods1["能量甘饮"];
                            GamePackage.DicPackageGoods1["能量甘饮"] = count + 1;
                        }
                        if (jie1 == 5)
                        {
                            Thread.Sleep(400);
                            Console.BackgroundColor = ConsoleColor.Yellow;
                            Console.WriteLine("\n\t本次战争获得止痛药1瓶,已自动为您放入背包");
                            Console.BackgroundColor = ConsoleColor.White;
                            int count = GamePackage.DicPackageGoods1["止痛药"];
                            //给玩家背包增加这个物品
                            GamePackage.DicPackageGoods1["止痛药"] = count + 1;
                        }
                        //判断角色是否可以升级
                        GameRolesManager.Up(Rolse);
                        //回到选择页面,等待玩家再次选择
                        GameChoice();
                    }
                    //如果怪物没有被消灭
                    else
                    {
                        //局数增加
                        countNum++;
                        foreach (var guaiwu in ComputerRoles.ListComputerRoles)
                        {
                            //如果怪物的HP大于0,攻击玩家
                            if (guaiwu.Hp > 0)
                            {
                                if (Rolse)
                                {
                                    //传递对玩家伤害的怪物
                                    _RolesWarrior.Bcombat(guaiwu);
                                }
                                else if (!Rolse)
                                {
                                    _RolesWizard.Bcombat(guaiwu);
                                }
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 提示玩家选择,1.开始战斗 2.进入商城 3.查看当前属性
 /// </summary>
 public static void GameChoice()
 {
     //清除所有生成的怪物
     ComputerRoles.ListComputerRoles.Clear();
     //判断玩家的等级是否等于5级,如果等于5级就解锁新场景
     if (_RolesWarrior.Grade == 5 || _RolesWizard.Grade == 5)
     {
         //判断是否解锁过新场景,如果解锁过,就不再次解锁
         if (PGrade == 1)
         {
             Console.ForegroundColor = ConsoleColor.Red;
             Console.WriteLine("\n\t**************解锁场景失落的古城**************");
             Console.ForegroundColor = ConsoleColor.White;
             Console.WriteLine("\n\t解锁新怪物 叛军  BOSS:变异的军人 ");
             //进入场景后,用于判断玩家等级是否升级的计数器进行增加
             PGrade++;
         }
     }
     //判断玩家选择角色,在玩家每次战斗结束后,恢复玩家血量
     if (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Warrior)
     {
         //恢复战士的HP
         _RolesWarrior.Hp = HPTemp;
     }
     else if (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Wizard)
     {
         //恢复法师的HP
         _RolesWizard.Hp = HPTempWizard;
     }
     //加载延时,模仿真实游戏加载
     Thread.Sleep(500);
     Console.ForegroundColor = ConsoleColor.Red;
     Console.WriteLine("\n\n\t\t* * * * * * * * *欢迎回来\t" + _PlayerRoles.Name);
     Console.ForegroundColor = ConsoleColor.White;
     //进入一个死循环,用于判断玩家的选择是否是给出的选择,如果不是则不退出,如果是则执行相对应的函数
     while (true)
     {
         Thread.Sleep(400);
         Console.ForegroundColor = ConsoleColor.White;
         Console.WriteLine("\n\t请选择您要进行的操作  \n\n\t1.进入战斗  2.进入商城  \n\n\t3.查看当前属性  4.查看当前背包物品  \n\n\t5.技能查看   6.技能学习");
         //判断玩家的按键,获得玩家选择
         ConsoleKeyInfo Downkey1 = Console.ReadKey(true);
         if (Downkey1.Key.Equals(ConsoleKey.D1) || Downkey1.Key.Equals(ConsoleKey.NumPad1))
         {
             //判断玩家选择角色,然后进行判断,在战斗前存储玩家Hp,用于在战斗结束后恢复
             if (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Warrior)
             {
                 //保存战士的HP
                 HPTemp = _RolesWarrior.Hp;
             }
             else if (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Wizard)
             {
                 //保存法师的HP
                 HPTempWizard = _RolesWizard.Hp;
             }
             Thread.Sleep(400);
             Console.ForegroundColor = ConsoleColor.Red;
             Console.WriteLine("\n\t**************您选择的是进入战斗");
             Console.ForegroundColor = ConsoleColor.White;
             //加载动画
             Load();
             //进入战斗场景
             Combat();
             break;
         }
         else if (Downkey1.Key.Equals(ConsoleKey.D2) || Downkey1.Key.Equals(ConsoleKey.NumPad2))
         {
             Thread.Sleep(400);
             Console.ForegroundColor = ConsoleColor.Red;
             Console.WriteLine("\n\t**************您选择的是进入商城");
             Console.ForegroundColor = ConsoleColor.White;
             //加载动画
             Load();
             _WeaponStore.PanDuan();
             break;
         }
         else if (Downkey1.Key.Equals(ConsoleKey.D3) || Downkey1.Key.Equals(ConsoleKey.NumPad3))
         {
             Thread.Sleep(400);
             Console.ForegroundColor = ConsoleColor.Red;
             Console.WriteLine("\n\t**************您选择的是查看当前属性");
             Console.ForegroundColor = ConsoleColor.White;
             //加载动画
             Load();
             //根据玩家选择的是法师还是战士,展示不同的属性
             if (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Warrior)
             {
                 //战士的角色信息展示
                 GameRolesManager.Information(_PlayerRoles.Name, _RolesWarrior.Hp, _RolesWarrior.Attack, _RolesWarrior.Defense, _RolesWarrior.Experience, _RolesWarrior.Money, _RolesWarrior.Grade);
             }
             else if (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Wizard)
             {
                 //法师的角色信息展示
                 GameRolesManager.Information(_PlayerRoles.Name, _RolesWizard.Hp, _RolesWizard.Attack, _RolesWizard.Defense, _RolesWizard.Experience, _RolesWizard.Money, _RolesWizard.Grade);
             }
             break;
         }
         else if (Downkey1.Key.Equals(ConsoleKey.D4) || Downkey1.Key.Equals(ConsoleKey.NumPad4))
         {
             Thread.Sleep(400);
             Console.ForegroundColor = ConsoleColor.Red;
             Console.WriteLine("\n\t**************您选择的是查看背包");
             Console.ForegroundColor = ConsoleColor.White;
             //加载动画
             Load();
             _PlayerPackage.PackageToUp();
             break;
         }
         else if (Downkey1.Key.Equals(ConsoleKey.D5) || Downkey1.Key.Equals(ConsoleKey.NumPad5))
         {
             Thread.Sleep(400);
             Console.ForegroundColor = ConsoleColor.Red;
             Console.WriteLine("\n\t**************您选择的是查看技能");
             Console.ForegroundColor = ConsoleColor.White;
             //加载动画
             Load();
             //根据玩家选择的是法师还是战士,展示不同的技能
             if (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Warrior)
             {
                 //战士的技能列表
                 WarriorSkill.WarriorSkillShow();
             }
             else if (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Wizard)
             {
                 //法师的技能列表
                 WizardSkill.WizardSkillShow();
             }
             break;
         }
         else if (Downkey1.Key.Equals(ConsoleKey.D6) || Downkey1.Key.Equals(ConsoleKey.NumPad6))
         {
             Thread.Sleep(400);
             Console.ForegroundColor = ConsoleColor.Red;
             Console.WriteLine("\n\t**************您选择的是学习技能");
             Console.ForegroundColor = ConsoleColor.White;
             //加载动画
             Load();
             //根据玩家选择的是法师还是战士,学习不同的技能
             if (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Warrior)
             {
                 WarriorSkill.StartWarriorSkill();
                 //战士的技能学习
             }
             else if (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Wizard)
             {
                 WizardSkill.StartWizardSkill();
                 //法师的技能学习
             }
             break;
         }
         //选择错误就提示错误,并回到开头,重新选择
         else
         {
             Console.ForegroundColor = ConsoleColor.Red;
             Thread.Sleep(500);
             Console.WriteLine("\n\t**************很抱歉,您输入的有误,当前选择不存在");
         }
     }
 }