コード例 #1
0
ファイル: Logic.cs プロジェクト: rickSanches/game
 // второй этам определения доступных позиций для юнитов ближнего боя
 private void AttackPosition(List<int> List, Model mod)
 {
     var list = new List<int>();
     foreach (var item in List) // перебор листа с несколькими юнитами в ряду, возврат их доступности для атаки
     {
         switch (item)
         {
             case 0:
             case 5:
                 list = new List<int> { 5, 4, 1, 0 };
                 mod.CanAttack.Add(item, list);//кей в словаре - позиция атакуемого юнита, лист - кто его может атаковать
                 break;
             case 1:
             case 4:
                 list = new List<int> { 5, 4, 3, 2, 1, 0 };
                 mod.CanAttack.Add(item, list);//кей в словаре - позиция атакуемого юнита, лист - кто его может атаковать
                 break;
             case 2:
             case 3:
                 list = new List<int> { 1, 4, 3, 2 };
                 mod.CanAttack.Add(item, list);//кей в словаре - позиция атакуемого юнита, лист - кто его может атаковать
                 break;
             default: break;
         }
     }
 }
コード例 #2
0
ファイル: Logic.cs プロジェクト: rickSanches/game
 // по окончанию раунда проверка на количество убитых, и победу команды
 public void EndRound(Model mod, Dictionary<int, Units> team)
 {
     int j = 0;
     foreach (int i in team.Keys)
     {
         if (!team[i].Live)
         { j++; }
     }
     if (j == 6) { mod.Die = true; }
 }
コード例 #3
0
ファイル: Logic.cs プロジェクト: rickSanches/game
 // получение юнита, который должен походить, сейчас
 public void GetCurrentUnit(Model mod, Dictionary<int, Units> red, Dictionary<int, Units> green)
 {
     RoundTurn(mod, red, green);
     mod.CurrentTeam = mod.TurnList.FirstOrDefault().team;
     var NameUnit = mod.TurnList.FirstOrDefault().name;
     if (mod.CurrentTeam == "Red")
     {
         var xxx = red.FirstOrDefault(x => x.Value.Name == NameUnit && x.Value.Live == true && x.Value.OnAction == true);
         mod.CurrentUnitAttak = xxx.Key;
     }
     else { mod.CurrentUnitAttak = green.Where(x => x.Value.Name == NameUnit && x.Value.Live == true && x.Value.OnAction == true).FirstOrDefault().Key; }
 }
コード例 #4
0
ファイル: Logic.cs プロジェクト: rickSanches/game
 // метод возврата пользователю конечного результата доступности юнитов для атаки
 public void FindPosition(Model mod, Dictionary<int, Units> red, Dictionary<int, Units> green)
 {
     CanUnitsOFAttack(mod, green);
 }
コード例 #5
0
ファイル: Logic.cs プロジェクト: rickSanches/game
        // обработка ходов после ожидания
        private void WaitSortTurn(Model mod, Dictionary<int, Units> reds, Dictionary<int, Units> greens)
        {
            mod.TurnList = new List<Turn>();
            var redTurn = reds.Values.Where(x => x.Live == true && x.OnAction == false && x.Wait == true)
                .OrderBy(z => z.GetStat(Stats.Initiative)).ToList();
            var greenTurn = greens.Values.Where(x => x.Live == true && x.OnAction == false && x.Wait == true)
                .OrderBy(z => z.GetStat(Stats.Initiative)).ToList();
            if (redTurn.Count() == 0)
            {
                foreach (var item in greenTurn)
                {
                    Turn t = new Turn();
                    t.name = item.Name;
                    t.team = "Green";
                    mod.TurnList.Add(t);
                }
            }
            else if (greenTurn.Count() == 0)
            {
                foreach (var item in redTurn)
                {
                    Turn t = new Turn();
                    t.name = item.Name;
                    t.team = "Red";
                    mod.TurnList.Add(t);
                }
            }
            else if (redTurn.Count() == 0 && greenTurn.Count() == 0)
            {

            }
            else
                while ((redTurn.Last().Sorting == true) || (greenTurn.Last().Sorting == true))
                {
                    Turn t = new Turn();
                    if ((redTurn.Count(x => x.Sorting == true)) != 0 && (greenTurn.Count(x => x.Sorting == true)) != 0)
                    {
                        if (redTurn.FirstOrDefault(x => x.Sorting == true).GetStat(Stats.Initiative) >= greenTurn.FirstOrDefault(x => x.Sorting == true).GetStat(Stats.Initiative))
                        {
                            t.team = "Red";
                            t.name = redTurn.FirstOrDefault(x => x.Sorting == true).Name;
                            redTurn.FirstOrDefault(x => x.Sorting == true).Sorting = false;
                        }
                        else
                        {
                            t.team = "Green";
                            t.name = greenTurn.FirstOrDefault(x => x.Sorting == true).Name;
                            greenTurn.FirstOrDefault(x => x.Sorting == true).Sorting = false;
                        }
                    }
                    else if ((redTurn.Count(x => x.Sorting == true)) != 0)
                    {
                        t.team = "Red";
                        t.name = redTurn.FirstOrDefault(x => x.Sorting == true).Name;
                        redTurn.FirstOrDefault(x => x.Sorting == true).Sorting = false;
                    }
                    else
                    {
                        t.team = "Green";
                        t.name = greenTurn.FirstOrDefault(x => x.Sorting == true).Name;
                        greenTurn.FirstOrDefault(x => x.Sorting == true).Sorting = false;
                    }
                    mod.TurnList.Add(t);
                }
            ResetSorting(reds);
            ResetSorting(greens);
        }
コード例 #6
0
ファイル: Logic.cs プロジェクト: rickSanches/game
 // первая часть определения доступных для аттаки позиций, для юнитов ближнего боя
 private void MealeCanAttack(Model mod)
 {
     var list = new List<int>();
     var mealepositions = mod.CanUnitsOfAttack.Where(x => x > 2).ToList(); //находим все живие позиции первого ряда, создание листа юнитов первого ряда
     if (mealepositions.Count() != 0) //есди есть хоть один из первого ряда
     {
         if (mealepositions.Count() == 1) // один юнит в ряду, его может атаковать каждый
         {
             list = new List<int> { 5, 4, 3, 2, 1, 0 };
             mod.CanAttack.Add(mealepositions.FirstOrDefault(), list); //кей в словаре - позиция атакуемого юнита, лист - кто его может атаковать
         }
         else
         {
             AttackPosition(mealepositions, mod); //вызов метода отбора с большим количеством доступных для атаки юнитов в ряду
         }
     }
     else
     {
         mealepositions = mod.CanUnitsOfAttack.Where(x => x < 3).ToList(); // создание листа юнитов второго ряда
         if (mealepositions.Count() == 1) // один юнит в ряду
         {
             list = new List<int> { 5, 4, 3, 2, 1, 0 };
             mod.CanAttack.Add(mealepositions.FirstOrDefault(), list);//кей в словаре - позиция атакуемого юнита, лист - кто его может атаковать
         }
         else
         {
             AttackPosition(mealepositions, mod);//вызов метода отбора с большим количеством доступных для атаки юнитов в ряду
         }
     }
 }
コード例 #7
0
ファイル: Logic.cs プロジェクト: rickSanches/game
        // выполнение баф-дебаф сценария на юните, во время его хода
        public void BuffActivations(Model mod)
        {
            //DebuffActivation

            //BuffActivation
        }
コード例 #8
0
ファイル: Logic.cs プロジェクト: rickSanches/game
 //отбираем всех живых на поле
 private void CanUnitsOFAttack(Model mod, Dictionary<int, Units> team)
 {
     int i = 0;
     foreach (var item in team)
     {
         if (item.Value.Live == true)
         {
             mod.CanUnitsOfAttack[i] = item.Key;
             i++;
         }
     }
 }
コード例 #9
0
ファイル: Program.cs プロジェクト: rickSanches/game
        static void Main(string[] args)
        {
            Model Mod = new Model();
            Action A = new Action();
            Units u = new Units();
            Magic m = new Magic();
            double d = 12;
            Logic Log = new Logic();

            var Unit1 = A.GetTest1();
            Unit1.GhangeStat(Stats.Initiative, 10);
            Unit1.Name = "Unit1";
            var Unit2 = A.GetTest1();
            Unit2.GhangeStat(Stats.Initiative, 9);
            Unit2.Name = "Unit2";
            var Unit3 = A.GetTest1();
            Unit3.GhangeStat(Stats.Initiative, 2);
            Unit3.Name = "Unit3";
            var Unit4 = A.GetTest1();
            Unit4.GhangeStat(Stats.Initiative, 1);
            Unit4.Name = "Unit4";
            var Unit5 = A.GetTest1();
            Unit5.GhangeStat(Stats.Initiative, 3);
            Unit5.Name = "Unit5";
            var Unit6 = A.GetTest1();
            Unit6.GhangeStat(Stats.Initiative, 14);
            Unit6.Name = "Unit6";
            var Unit7 = A.GetTest1();
            Unit7.GhangeStat(Stats.Initiative, 5);
            Unit7.Name = "Unit7";
            var Unit8 = A.GetTest1();
            Unit8.GhangeStat(Stats.Initiative, 6);
            Unit8.Name = "Unit8";
            var Unit9 = A.GetTest1();
            Unit9.GhangeStat(Stats.Initiative, 7);
            Unit9.Name = "Unit9";
            var Unit10 = A.GetTest1();
            Unit10.GhangeStat(Stats.Initiative, 8);
            Unit10.Name = "Unit10";
            var Unit11 = A.GetTest1();
            Unit11.GhangeStat(Stats.Initiative, 11);
            Unit11.Name = "Unit11";
            var Unit12 = A.GetTest2();
            Unit12.GhangeStat(Stats.Initiative, 12);
            Unit12.Name = "Unit12";
            Dictionary<int, Units> Red = new Dictionary<int, Units>();
            Dictionary<int, Units> Green = new Dictionary<int, Units>();
            Red.Add(0, Unit1);
            Red.Add(1, Unit2);
            Red.Add(2, Unit3);
            Red.Add(3, Unit4);
            Red.Add(4, Unit5);
            Red.Add(5, Unit6);
            Green.Add(0, Unit7);
            Green.Add(1, Unit8);
            Green.Add(2, Unit9);
            Green.Add(3, Unit10);
            Green.Add(4, Unit11);
            Green.Add(5, Unit12);

            m.Atribute = "OnAction";
            Green[2].BuffsDebuffs.Add(m);
            Green[1].BuffsDebuffs.Add(m);
            Green[3].BuffsDebuffs.Add(m);
            Green[4].BuffsDebuffs.Add(m);
            Green[5].BuffsDebuffs.Add(m);
            Red[1].Wait = true;
            Red[2].Wait = true;
            Green[1].Wait = true;
            int i = 0;
            while (i<10)
            {
                i++;
                Log.GetCurrentUnit(Mod, Red, Green);
                if (Mod.CurrentTeam == "red")
                {
                    Red.FirstOrDefault(x => x.Key == Mod.CurrentUnitAttak).Value.OnAction = false;
                }
                else
                { Green.FirstOrDefault(x => x.Key == Mod.CurrentUnitAttak).Value.OnAction = false; }
                var olol = Mod.TurnList;
            }
            Log.GetCurrentUnit(Mod, Red, Green);
            var z = Mod.TurnList;
        }