day10, day11 c#英雄聯盟文字遊戲(亞索,蓋倫,安妮)

namespace day10   //day11
{ 
    public class Hero
    {
        public  string name;
        public  int blood;
        public int dengJi = 1;
        public int money = 0;
        public  int attack;        
        public bool isAlive=true;
        public bool canUseJineng=false;
        public bool isUseJineng=false;
        public int magic=0;
        public int equipmentCount = 0;
        public string saoHua;
        public Dictionary<int,Equipment> equipmentList= new Dictionary<int, Equipment>();
        public Dictionary<int, JiNeng> jiNengList = new Dictionary<int, JiNeng>();

        public Hero()
        { }
        public Hero(string name, int blood,  int attack,string saoHua)
        {
            this.name = name;
            this.blood = blood;
            this.attack = attack;
            this.saoHua = saoHua;
        }
        public void StudyJiNeng(int a,Player player,bool flag)
        {
            flag = true;
            switch (a)
            {
                case 1:
                    if (player.Hero.dengJi > 1 && player.Hero.jiNengList[a].isStudy == false)
                    {
                        player.Hero.jiNengList[a].isStudy = true;
                        Console.WriteLine("恭喜你學會了" + player.Hero.jiNengList[a].name);
                    }
                    else if (player.Hero.jiNengList[a].isStudy == true)
                    {
                        Console.WriteLine("你已經學習了該技能");
                    }
                    else
                    {
                        Console.WriteLine("二級才能學技能,先去升等級吧。");
                        Console.WriteLine("-----------------------------------");
                    }
                    break;
                case 2:
                    if (player.Hero.dengJi > 4)
                    {
                        player.Hero.jiNengList[a].isStudy = true;
                        Console.WriteLine("恭喜你學會了" + player.Hero.jiNengList[a].name);
                    }
                    else
                    {
                        Console.WriteLine("五級才能學大招,先去升等級吧。");
                        Console.WriteLine("-----------------------------------");
                    }
                    break;
                default:
                    Console.WriteLine("輸入信息有誤!");
                    break;
            }
        }
        public void Description(Player player)
        {
            Console.WriteLine($"{player.Hero.name}的:生命:{player.Hero.blood}" +
                    $"攻擊:{player.Hero.attack}法強:{player.Hero.magic}");
            Console.WriteLine("-------------------------------------------------------");
        }
        public void UpDengJi()
        {
            blood += 80;
            attack += 5;
            dengJi += 1;
            money += 500;
        }

        public void BuyEquipment(Equipment  equipment,Player player)
        {
            
            if (player.Hero.money > equipment.money && equipmentCount < 3)
            {
                player.Hero.blood += equipment.blood;
                player.Hero.attack += equipment.attack;
                player.Hero.magic += equipment.magic;
                player.Hero.equipmentList.Add(equipmentCount+1, equipment);
                equipmentCount++;
                Console.WriteLine($"{player.Hero.name}的信息更新:生命:{player.Hero.blood}" +
                    $"攻擊:{player.Hero.attack}法強:{player.Hero.magic}");
            } else if ( equipmentCount >3) 
            {
                Console.WriteLine("裝備欄滿了");
            }
            else
            {
                Console.WriteLine("提莫爺爺說:窮逼,你的錢不夠!");
            }
            
        }
    }
  
    public enum EquipmentType
    {
        wuJin,
        kuangTu,
        daMao,
    }
    public class Equipment
    {
        public string name;
        public  int attack;
        public int blood;
        public int jiNengUP;
        public  EquipmentType EquipmentType;
        public int magic;
        public int money;

        public Equipment(string name, int attack, int blood, int jiNengUP, EquipmentType equipmentType, int magic, int money)
        {
            this.name = name;
            this.attack = attack;
            this.blood = blood;
            this.jiNengUP = jiNengUP;
            EquipmentType = equipmentType;
            this.magic = magic;
            this.money = money;
        }
    }
    public class JiNeng
    {
        public string name;
        public string xiaoGuo;
        public bool isStudy = false;
        public  void Description()
        {
            Console.WriteLine(name+":"+xiaoGuo);
        }
        public  void Using(Player player1,Player player2,int jiNeng )
        {
            if (player1.Hero.jiNengList[jiNeng].isStudy == false)
            {
                Console.WriteLine("你還沒有學習這個技能");
                Console.WriteLine("蠢啊,浪費了一個回合");
                Console.WriteLine("-------------------------------------------");
                return;
            }
Console.WriteLine($"{player2.Hero.name}受到到了{player1.Hero.name}的技能{player1.Hero.jiNengList[jiNeng].name}。");
            
            if (player1.Hero.name == "亞索")
            {
                if (jiNeng == 1)
                {
                    player2.Hero.blood -= player1.Hero.attack * 2;
                    if (player2.Hero.blood <= 0)
                    {
                        player2.Hero.blood = 0;
                        player2.Hero.isAlive = false;
                        Console.WriteLine($"{player2.Hero.name}死亡,遊戲結束");
                        return;
                    }
                }
                else if (jiNeng== 2)
                {
                    player2.Hero.blood -= player1.Hero.attack * 7;
                    if (player2.Hero.blood <= 0)
                    {
                        player2.Hero.blood = 0;
                        player2.Hero.isAlive = false;
                        Console.WriteLine($"{player2.Hero.name}死亡,遊戲結束");
                        return;
                    }
                }
            }
            if (player1.Hero.name == "蓋倫")
            {
                if (jiNeng == 1)
                {
                    player2.Hero.blood -= 150+player1.Hero.dengJi*10;
                    if (player2.Hero.blood <= 0)
                    {
                        player2.Hero.blood = 0;
                        player2.Hero.isAlive = false;
                        Console.WriteLine($"{player2.Hero.name}死亡,遊戲結束");
                        return;
                    }
                }
                else if (jiNeng == 2)
                {
                    player2.Hero.blood -= 400+player1.Hero.dengJi * 10;
                    if (player2.Hero.blood <= 0)
                    {
                        player2.Hero.blood = 0;
                        player2.Hero.isAlive = false;
                        Console.WriteLine($"{player2.Hero.name}死亡,遊戲結束");
                        return;
                    }
                }
            }
            if (player1.Hero.name == "安妮")
            {
                if (jiNeng == 1)
                {                    
                    player2.Hero.blood -= 120+player1.Hero.magic;
                    if (player2.Hero.blood <= 0)
                    {
                        player2.Hero.blood = 0;
                        player2.Hero.isAlive = false;
                        Console.WriteLine($"{player2.Hero.name}死亡,遊戲結束");
                        return;
                    }
                }
                else if (jiNeng == 2)
                {
                    player2.Hero.blood -= 400 + player1.Hero.magic;
                    if (player2.Hero.blood <= 0)
                    {
                        player2.Hero.blood = 0;
                        player2.Hero.isAlive = false;
                        Console.WriteLine($"{player2.Hero.name}死亡,遊戲結束");
                        return;
                    }
                }
            }
            Console.WriteLine($"當前信息:");
            player1.Hero.Description(player1);
            player2.Hero.Description(player2);

        }
        public JiNeng()
        { }
        public JiNeng(string name,string xiaoGuo)
        {
            this.name = name;
            this.xiaoGuo = xiaoGuo;

        }
    }
    
    public class Player
    {
        public string name;
        public Hero Hero;
        public bool isChuShou=false;
    }
    public class Attack
    {
        public int huiHe; 
        Player player1;
        Player player2;
        public void getPlayer(Player player1, Player player2)
        {
            this.player1 = player1;
            this.player2 = player2;
        }
        public void Attacking()
        {
            Console.WriteLine($"開始戰鬥!{player1.name}先出手");
            while (player1.Hero.isAlive && player2.Hero.isAlive)
            {                          
                zhanDouJieMian(player1,player2) ;
                zhanDouJieMian(player2,player1);
                
                huiHe++;
                if (player1.Hero.blood <= 0)
                {
                    Console.WriteLine($"{player1.Hero.name}陣亡!遊戲結束。");
                    player1.Hero.isAlive = false;
                    return;
                }
                if (player2.Hero.blood <= 0)
                {
                    player2.Hero.isAlive = false;
                    Console.WriteLine($"{player2.Hero.name}陣亡!遊戲結束。");
                    return;
                }
            }



        }

        public void zhanDouJieMian(Player player1, Player player2)
        {
            Console.WriteLine($"進入{player1.name}({player1.Hero.name})的回合:");
            while (player2.Hero.blood>0
                )
            {
                bool isSttudyJiNeng = false;
                bool isUpDengJi = false;
                bool isFangJiNeng = false;
                Console.WriteLine("1 - 普攻,2 - 學習技能,3 - 升等級 ,4-釋放技能,5-買裝備,6-跳過");
                Console.WriteLine("-----------------------------------------------------------------");
                switch (Console.ReadLine())
                {                  
                    case "1":
                        player2.Hero.blood -= player1.Hero.attack;
                        player1.Hero.money += 300;
                        if (player2.Hero.blood <= 0)
                        {
                            player2.Hero.blood = 0;
                            player2.Hero.isAlive = false;
                            Console.WriteLine($"{player2.Hero.name}受到到了{player1.Hero.name}的普攻,已經死亡");
                            Console.WriteLine("遊戲結束");
                            return;
                        }
                        Console.WriteLine($"{player2.Hero.name}受到到了{player1.Hero.name}的普攻,掉了{player1.Hero.attack}的血");
                        Console.WriteLine($"當前信息:");                      
                        player1.Hero.Description(player1);
                        player2.Hero.Description(player2);                       
                        return;
                    case "2":                                                   //學技能
                        if (isSttudyJiNeng == false)
                        {
                            Console.WriteLine("技能列表(學習)");                             
                            for (int i = 1; i <= player1.Hero.jiNengList.Count; i++)
                            {
                                Console.WriteLine($"{i}:{player1.Hero.jiNengList[i].name}");
                            }
                            Console.WriteLine("1-查看技能,2-學習技能");
                            switch (Console.ReadLine())
                            {
                                case "1":
                                    Console.WriteLine("查看哪個?");
                                    int b;
                                    b = int.Parse(Console.ReadLine());
                                    player1.Hero.jiNengList[b].Description();
                                    Console.WriteLine("------------------------");
                                    break;
                                case "2":
                                    while (isSttudyJiNeng == false)
                                    {

                                        Console.WriteLine("你要學習哪個?");
                                        Console.WriteLine("----------------------------------------------");
                                        int a = int.Parse(Console.ReadLine());
                                        player1.Hero.StudyJiNeng(a,player1,isSttudyJiNeng);
                                        break;
                                    }
                                    break;
                                default:
                                    Console.WriteLine("輸入信息錯誤");
                                    break;
                            }
                            
                        }
                        
                        break;
                    case "3":
                        if (isUpDengJi == false)
                        {
                            player1.Hero.UpDengJi();
                            Console.WriteLine($"{player1.Hero.name}的等級提升爲{player1.Hero.dengJi}");
                            Console.WriteLine($"獲得500金錢,血量加80,攻擊加5。你變禿了,也更強了");
                            Console.WriteLine("-----------------------------------------------------------");
                            isUpDengJi = true;
                            player1.Hero.Description(player1);
                        }           //升級
                        break;
                    case "4":
                        if (isFangJiNeng == false)          //放技能
                        {
                            Console.WriteLine("-------------------------------------------");
                            Console.WriteLine("技能列表(釋放)");
                            for (int i = 1; i <= player1.Hero.jiNengList.Count; i++)
                            {
                                Console.Write($"{i}:{player1.Hero.jiNengList[i].name}");
                            }
                            Console.WriteLine("輸錯了就沒機會了哦!(輸錯跳過本回合)");
                            Console.WriteLine("---------------------------------------------");
                            switch (Console.ReadLine())
                            {
                                case "1":
                                    player1.Hero.jiNengList[1].Using(player1,player2,1);
                                    break;
                                case "2":
                                    player1.Hero.jiNengList[1].Using(player1, player2, 2);
                                    break;
                                default:
                                    Console.WriteLine("輸入錯誤信息");
                                    Console.WriteLine("-----------------------------------------------------");
                                    return;
                            }
                        }

                        return;
                    case "5":
                        if (player1.Hero.equipmentList.Count >= 3)
                        {
                            return;
                        }
                        else 
                        {
                            Console.WriteLine("你要買什麼?1-無盡(攻擊加10),2-狂徒(血量加50)" +
                            ",3-大帽(技能加成30%)");
                            Console.WriteLine("-----------------------------------------");
                        }
                        switch (Console.ReadLine())
                        {
                            case "1":
                                Equipment wuJin = new Equipment("無盡",30,0,0,EquipmentType.wuJin,0,3400);                                
                                player1.Hero.BuyEquipment(wuJin,player1);
                                break;
                            case "2":
                                Equipment kuangTu = new Equipment("狂徒", 0,300, 0, EquipmentType.wuJin, 0, 3000);
                                player1.Hero.BuyEquipment(kuangTu, player1);
                                break;
                            case "3":
                                Equipment daMao = new Equipment("大帽", 0, 0, 30, EquipmentType.wuJin, 0, 3600);
                                player1.Hero.BuyEquipment(daMao, player1);
                                break;
                        }
                        break;
                    case "6":
                        return;
                    default:
                        Console.WriteLine("輸入信息有誤");
                        return;
                }
            }
        }
     
    }

class Program
    {
        static void Main(string[] args)
        {
          Dictionary<int, Hero> heroList=new Dictionary<int, Hero>();
            Hero yaSuo = new Hero("亞索", 600, 63,"死亡如風,哎呀別打臉。。。。");
            JiNeng zhanGangShan = new JiNeng("斬剛閃","向前方迅速拔劍,造成普攻2倍傷害");
            JiNeng KuangFengJueXiZhan = new JiNeng("狂風 絕息斬","擊飛對手,連續進行7次普攻");
            yaSuo.jiNengList.Add(1, zhanGangShan);
            yaSuo.jiNengList.Add(2, KuangFengJueXiZhan);


            Hero gaiLun = new Hero("蓋倫", 1000, 60,"哥有四多蘭,對面都是菜!");
            JiNeng BieTMShuoHua = new JiNeng("蛋蛋的憂傷", "(沉默)造成150點絕對傷害");
            JiNeng ZhengYiDeZhiCai = new JiNeng("正義制裁","造成400的絕對傷害");
            gaiLun.jiNengList.Add(1, BieTMShuoHua);
            gaiLun.jiNengList.Add(2, ZhengYiDeZhiCai);

            Hero anNi = new Hero("安妮", 630, 60,"火焰,是我最喜歡的玩具。");
            JiNeng HuoYan = new JiNeng("火焰","造成120點傷害");
            JiNeng XiaoXiong = new JiNeng("你看見我的小熊了嘛", "大熊屁股騎他臉,造成400點傷害");
            anNi.jiNengList.Add(1,HuoYan);
            anNi.jiNengList.Add(2,XiaoXiong);
            

            heroList.Add(1, yaSuo);
            heroList.Add(2, anNi);
            heroList.Add(3, gaiLun);



            Player player1 = new Player();
            Console.WriteLine("輸入玩家1姓名");
            player1.name = Console.ReadLine();
            Console.WriteLine("你要用哪個英雄?");
            for (int i = 1; i < heroList.Count+1; i++)
            {
                Console.WriteLine($"{i}:{heroList[i].name},血量:{heroList[i].blood},攻擊:{heroList[i].attack},打招呼:{heroList[i].saoHua}");
            }
            int a = int.Parse(Console.ReadLine());
            player1.Hero = heroList[a];
            Console.WriteLine($"{player1.name}使用了{player1.Hero.name}");

            Player player2 = new Player();
            Console.WriteLine("輸入玩家2姓名");
            player2.name = Console.ReadLine();
            Console.WriteLine("你要用哪個英雄?");
            for (int i = 1; i < heroList.Count + 1; i++)
            {
                Console.WriteLine($"{i}:{heroList[i].name},血量:{heroList[i].blood},攻擊:{heroList[i].attack},打招呼:{heroList[i].saoHua}");
            }
            int b = int.Parse(Console.ReadLine());
            player2.Hero = heroList[b];
            Console.WriteLine($"{player2.name}使用了{player2.Hero.name}");


            Attack attack = new Attack();
            attack.getPlayer(player1, player2);
            attack.Attacking();
        }
    }
}



 

 

具體功能就不一一調試了。偶爾輸入錯誤會炸裂233333.。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章