コード例 #1
0
        public void Flammethrower(IBaseTroop target)
        {
            string log = String.Empty;

            log += "Jango_Fett brule " + target.GetType().Name + " en " + target.Position.Txtpos + " et lui inflige 12 points de dégats ! (PV " + target.GetType().Name + " restants : " + target.MaxHP + ")";
            target.Remaining_HP -= 12;
        }
コード例 #2
0
        /// <summary>
        /// Attaque DjemSo
        /// </summary>
        /// <param name="target">Cible de l'attaque</param>
        public void AttaqueDjemSo(IBaseTroop target)
        {
            string log = String.Empty;

            log += "Anakin bondit sur " + target.GetType().Name + " en " + target.Position.Txtpos + " et lui inflige 12 points de dégats ! (PV " + target.GetType().Name + " restants : " + target.MaxHP + ")";
            target.Remaining_HP -= 12;
        }
コード例 #3
0
        public void MakashiiStrike(IBaseTroop target)
        {
            string log = String.Empty;

            log += "Dooku tranche " + target.GetType().Name + " en " + target.Position.Txtpos + " et lui inflige 12 points de dégats ! (PV " + target.GetType().Name + " restants : " + target.MaxHP + ")";
            target.Remaining_HP -= 12;
        }
コード例 #4
0
        public void LightningStrike(IBaseTroop target)
        {
            string log = String.Empty;

            log += "Dark_Sidious lance des éclairs sur " + target.GetType().Name + " en " + target.Position.Txtpos + " et lui inflige 15 points de dégats ! (PV " + target.GetType().Name + " restants : " + target.MaxHP + ")";
            target.Remaining_HP -= 15;
        }
コード例 #5
0
        public void SoresuStrike(IBaseTroop target)
        {
            string log = String.Empty;

            log += "ObiWan attaque " + target.GetType().Name + " en " + target.Position.Txtpos + " et lui inflige 12 points de dégats ! (PV " + target.GetType().Name + " restants : " + target.MaxHP + ")";
            target.Remaining_HP -= 12;
        }
コード例 #6
0
        /// <summary>
        /// Attaque blaster
        /// </summary>
        /// <param name="target">Cible de l'attaque</param>
        public void ShootBlasterRifle(IBaseTroop target)
        {
            int    range = 20;
            string log   = String.Empty;

            log += "CloneTrooper en " + this.Position.Txtpos + " utilise son blaster sur " + target.GetType().Name + " en " + target.Position.Txtpos;
            target.Remaining_HP -= 5;

            if (target.Remaining_HP > 0)
            {
                log += "( PV " + target.GetType().Name + " restants: " + target.Remaining_HP + ") ";
            }
        }
        /// <summary>
        /// Attaque lance-roquettes
        /// </summary>
        /// <param name="target">Cible de l'attaque</param>
        public void ShootRocketLauncher(IBaseTroop target)
        {
            int    range = 20;
            string log   = String.Empty;

            log += "Serge nt Trooper en " + this.Position.Txtpos + " utilise son lance-roquette sur " + target.GetType().Name + " en " + target.Position.Txtpos + "Et lui inflige 10 points de dégats ! ";;
            target.Remaining_HP -= 10;

            if (target.Remaining_HP > 0)
            {
                log += "( PV " + target.GetType().Name + " restants: " + target.Remaining_HP + ") ";
            }
        }
コード例 #8
0
        /// <summary>
        /// Attaque fusil laser double
        /// </summary>
        /// <param name="target">Cible de l'attaque</param>
        public void ShootLaserRifle(IBaseTroop target)
        {
            int range = 20;

            string log = String.Empty;

            log += "Droide B2 en " + this.Position.Txtpos + " utilise son double fusil laser sur " + target.GetType().Name + " en " + target.Position.Txtpos + "Et lui inflige 8 points de dégats ! ";;
            target.Remaining_HP -= 8;

            if (target.Remaining_HP > 0)
            {
                log += "( PV " + target.GetType().Name + " restants: " + target.Remaining_HP + ") ";
            }
        }
コード例 #9
0
        /// <summary>
        /// Method pour détecter un ennemi à proximité
        /// </summary>
        /// <param name="listOfTroops">Liste des troupes</param>
        /// <param name="baseTroop">Troupe qui cherche un ennemi</param>
        /// <param name="indexMatrice">Taille de la grille du jeu</param>
        /// <returns>Une troupe ennemie détectée ou null si rien n'est détecté</returns>
        public IBaseTroop CheckAroundForTroop(List <IBaseTroop> listOfTroops, IBaseTroop baseTroop, int indexMatrice)
        {
            int absciss  = Tools.Tools.ConvertFromStringBase26(baseTroop.Position.Absciss);
            int ordinate = baseTroop.Position.Ordinate;

            if (absciss - 1 >= 0)
            {
                for (int i = 0; i < listOfTroops.Count; i++)
                {
                    if (listOfTroops[i].Position.Absciss == Tools.Tools.ConvertToStringBase26(absciss - 1).Replace(" ", "") && listOfTroops[i].Position.Ordinate == ordinate && listOfTroops[i].Forceside != baseTroop.Forceside)
                    {
                        return(listOfTroops[i]);
                    }
                }
            }
            if (absciss + 1 < indexMatrice)
            {
                for (int i = 0; i < listOfTroops.Count; i++)
                {
                    if (listOfTroops[i].Position.Absciss == Tools.Tools.ConvertToStringBase26(absciss + 1).Replace(" ", "") && listOfTroops[i].Position.Ordinate == ordinate && listOfTroops[i].Forceside != baseTroop.Forceside)
                    {
                        return(listOfTroops[i]);
                    }
                }
            }
            if (ordinate - 1 >= 1)
            {
                for (int i = 0; i < listOfTroops.Count; i++)
                {
                    if (listOfTroops[i].Position.Absciss == baseTroop.Position.Absciss && listOfTroops[i].Position.Ordinate == ordinate - 1 && listOfTroops[i].Forceside != baseTroop.Forceside)
                    {
                        return(listOfTroops[i]);
                    }
                }
            }
            if (ordinate + 1 < indexMatrice + 1)
            {
                for (int i = 0; i < listOfTroops.Count; i++)
                {
                    if (listOfTroops[i].Position.Absciss == baseTroop.Position.Absciss && listOfTroops[i].Position.Ordinate == ordinate + 1 && listOfTroops[i].Forceside != baseTroop.Forceside)
                    {
                        return(listOfTroops[i]);
                    }
                }
            }

            return(null);
        }
コード例 #10
0
        /// <summary>
        /// Choix du personnage jouable
        /// </summary>
        /// <returns>Classe de PJ sélectionnée par l'utilisateur</returns>
        private IBaseTroop ChooseCharacter()
        {
            CustomConsole.RightOffsetWriteLine("Personnages jouables disponibles ...");

            int cpt = 1;

            foreach (Tuple <string, string> playable in EntitiesManager.Playablesstats)
            {
                CustomConsole.RightOffsetWriteLine(cpt + "-" + playable.Item1 + " : " + playable.Item2);
                cpt++;
            }

            CustomConsole.RightOffsetWriteLine("Veuillez saisir le numéro du personnage choisi ...");

            var input = Console.ReadLine();
            int rslt;

            int.TryParse(input, out rslt);
            if (rslt < EntitiesManager.Playablesstats.Count + 1 && rslt > 0)
            {
                string     name         = EntitiesManager.Playablesstats[rslt - 1].Item1;
                IBaseTroop selectedchar = (IBaseTroop)Activator.CreateInstance(EntitiesManager.Playables.Where((e) => e.Name.Equals(name)).FirstOrDefault());
                CustomConsole.RightOffsetWriteLine("Caractéristiques " + selectedchar.GetType().Name + " : PV:" + (selectedchar as IBaseTroop).MaxHP + ", Vitesse:" + (selectedchar as IBaseTroop).Speed + ", attaques spéciales:");

                if (selectedchar.GetType().GetTypeInfo().DeclaredMethods.Count() > 0)
                {
                    selectedchar.GetType().GetTypeInfo().DeclaredMethods.ToList().ForEach((e) => CustomConsole.RightOffsetWriteLine("-" + e.Name));
                }

                selectedchar.color = ConsoleColor.Green;
                return(selectedchar);
            }
            else
            {
                CustomConsole.RightOffsetWriteLine("La valeur saisie ne correspond pas...");
                return(null);
            }
        }
コード例 #11
0
        private void PJAttack()
        {
            CustomConsole.ClearLastConsoleLine();
            IBaseTroop targetabletroop = GridManager.Instance.CheckAroundForTroop(game.Getalltroops(), game.PJ, game.Size);

            if (targetabletroop != null)
            {
                MethodInfo attackmethod = game.PJ.GetType().GetTypeInfo().DeclaredMethods.FirstOrDefault();
                object[]   parameters   = new object[1];
                parameters[0] = targetabletroop;
                attackmethod.Invoke(game.PJ, parameters);
                if (targetabletroop.Remaining_HP <= 0)
                {
                    this.game.PNJKilledByPlayer++;
                }
            }
            else
            {
                CustomConsole.ClearLastConsoleLine();
                Console.WriteLine("Aucune cible à portée !");
                DoPJTurn();
            }
        }
コード例 #12
0
        /// <summary>
        /// Method pour afficher la grille générée
        /// </summary>
        public Grid DisplayGrid(List <IBaseTroop> listOfTroops, IBaseTroop player, int index)
        {
            Console.Clear();

            List <string> lines = new List <string>();

            if (player != null)
            {
                CustomConsole.RightOffsetWriteLine("			PERSONNAGE : "+ player.GetType().Name + "		||		PV : "+ player.Remaining_HP + "/" + player.MaxHP + "\r\n");
                listOfTroops.Add(player);
            }

            Grid grid = GenerateGrid(listOfTroops, index, lines);

            string testPlayer  = "ASDJWY";
            string testTrooper = "8O";
            string testDroid   = "#§";

            for (int x = 0; x < lines.Count; x++)
            {
                for (int y = 0; y < lines[x].Length; y++)
                {
                    if (x == 0 || y == 0 || y == 1)
                    {
                        Console.ForegroundColor = ConsoleColor.Blue;
                    }
                    else if (testPlayer.Contains(lines[x][y]))
                    {
                        IBaseTroop PJ = listOfTroops.Where(s => s.Icon == lines[x][y]).First();

                        if (PJ.Remaining_HP == PJ.MaxHP)
                        {
                            PJ.color = ConsoleColor.Green;
                        }
                        else
                        {
                            PJ.color = ConsoleColor.Red;
                        }

                        Console.ForegroundColor = PJ.color;
                    }
                    else if (testTrooper.Contains(lines[x][y]))
                    {
                        IBaseTroop trooper = listOfTroops.Where(s => s.Icon == lines[x][y]).First();
                        Console.ForegroundColor = trooper.color;
                    }
                    else if (testDroid.Contains(lines[x][y]))
                    {
                        IBaseTroop droid = listOfTroops.Where(s => s.Icon == lines[x][y]).First();
                        Console.ForegroundColor = droid.color;
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.White;
                    }

                    Console.Write(lines[x][y]);
                }
                Console.Write("\r\n");
            }

            string legend = "légende : ";

            listOfTroops.DistinctBy((i) => i.Icon).ToList().ForEach((e) => legend += e.Icon + " = " + e.GetType().Name + " | ");
            legend = legend.Remove(legend.Length - 2);
            Console.WriteLine(legend);

            Console.WriteLine("\r\n");
            listOfTroops.Remove(player);
            return(grid);
        }
コード例 #13
0
        /// <summary>
        /// Method pour détecter un personnage à proximité avant de tenter de se déplacer
        /// </summary>
        /// <param name="listOfTroops">Liste des troupes</param>
        /// <param name="baseTroop">Troupe qui cherche un ennemi</param>
        /// <param name="indexMatrice">Taille de la grille du jeu</param>
        /// <returns>Une troupe ennemie détectée ou null si rien n'est détecté</returns>
        public Tools.Position CheckAroundForTroopMove(List <IBaseTroop> listOfTroops, IBaseTroop baseTroop, int indexMatrice)
        {
            List <Tools.Position> listOfValidPos = new List <Tools.Position>();

            Tools.Position newPosLeft  = Tools.Tools.IsPositionValid(listOfTroops, baseTroop.Position, ConsoleKey.LeftArrow, indexMatrice);
            Tools.Position newPosRight = Tools.Tools.IsPositionValid(listOfTroops, baseTroop.Position, ConsoleKey.RightArrow, indexMatrice);
            Tools.Position newPosUp    = Tools.Tools.IsPositionValid(listOfTroops, baseTroop.Position, ConsoleKey.UpArrow, indexMatrice);
            Tools.Position newPosDown  = Tools.Tools.IsPositionValid(listOfTroops, baseTroop.Position, ConsoleKey.DownArrow, indexMatrice);

            if (newPosLeft != null)
            {
                listOfValidPos.Add(newPosLeft);
            }
            if (newPosRight != null)
            {
                listOfValidPos.Add(newPosRight);
            }
            if (newPosUp != null)
            {
                listOfValidPos.Add(newPosUp);
            }
            if (newPosDown != null)
            {
                listOfValidPos.Add(newPosDown);
            }

            if (listOfValidPos.Count == 0)
            {
                return(null);
            }

            Random random = new Random();

            Tools.Position newPosition = listOfValidPos[random.Next(0, listOfValidPos.Count)];

            return(newPosition);
        }
コード例 #14
0
        private void DoPNJTurn(List <IBaseTroop> troops)
        {
            foreach (IBaseTroop troop in troops)
            {
                if (troop.Remaining_HP > 0)
                {
                    string logtroop = troop.GetType().Name + " en " + troop.Position.Txtpos;

                    //Check attaques : si autre PNJ autour > attaquer
                    logtroop += " cherche une cible...";

                    IBaseTroop targetabletroop = GridManager.Instance.CheckAroundForTroop(game.Getalltroops(), troop, game.Size);
                    if (targetabletroop != null)
                    {
                        if (game.PJ == targetabletroop)
                        {
                            game.PJ.color = ConsoleColor.Red;
                        }

                        MethodInfo attackmethod = troop.GetType().GetTypeInfo().DeclaredMethods.FirstOrDefault();
                        object[]   parameters   = new object[1];
                        parameters[0] = targetabletroop;
                        attackmethod.Invoke(troop, parameters);
                        continue;
                    }
                    else
                    {
                        logtroop += " mais n'en trouve aucune ...";
                    }

                    //Check blessures : si blessé > se soigne / répare
                    logtroop += " vérifie s'il est blessé... ";
                    if (troop.Remaining_HP < troop.MaxHP)
                    {
                        if (troop.GetType().BaseType == typeof(Synthetic))
                        {
                            (troop as Synthetic).AutoRepair();
                        }
                        else
                        {
                            (troop as Organic).Heal();
                        }
                        continue;
                    }
                    else
                    {
                        logtroop += "mais n'est pas blessé ... ";
                    }

                    //Check déplacement : Si ni attaque ni soin > déplacer
                    logtroop += " regarde autour de lui ...";
                    Position potentialPosition = GridManager.Instance.CheckAroundForTroopMove(game.Getalltroops(), troop, game.Size);
                    if (potentialPosition != null)
                    {
                        logtroop      += " et se déplace en " + potentialPosition.Txtpos;
                        troop.Position = potentialPosition;
                    }
                    else
                    {
                        logtroop += " il est encerclé ! ";
                    }

                    continue;
                }
                else
                {
                    continue;
                }
            }
        }