예제 #1
0
        public void Draw(SpriteBatch g)
        {
            //Argent
            g.Draw(Ressources.Argent, new Rectangle((int)Position.X - 340, (int)Position.Y - 220, Ressources.Argent.Width / 3, Ressources.Argent.Height / 3), Color.LightGreen);
            g.DrawString(Ressources.TexteItalic, Argent.ToString(), new Vector2(Position.X - 300, Position.Y - 220), Color.LightGreen);

            //Balle
            if (!PersoSpeciaux)
            {
                if (Arme == 0)
                {
                    Chargeur.Draw(g);
                    g.DrawString(Ressources.TexteItalic, Balle.ToString(), new Vector2(Position.X - 300, Position.Y - 190), Color.OrangeRed);
                }
                else if (Arme == 1)
                {
                    Chargeur.Draw(g);
                    g.DrawString(Ressources.TexteItalic, Fleche.ToString(), new Vector2(Position.X - 300, Position.Y - 190), Color.OrangeRed);
                }

                else if (Arme == 2)
                {
                    Chargeur.Draw(g);
                    g.DrawString(Ressources.TexteItalic, BalleShotgun.ToString(), new Vector2(Position.X - 300, Position.Y - 190), Color.OrangeRed);
                }

                else if (Arme == 4)
                {
                    Chargeur.Draw(g);
                    g.DrawString(Ressources.TexteItalic, Convert.ToInt32(Laser).ToString(), new Vector2(Position.X - 300, Position.Y - 190), Color.OrangeRed);
                }
            }
        }
예제 #2
0
        //Méthode pour ajouter un chemin
        public void addChemin(Vector2 posInTab, Unit perso, World world)
        {
            bool inMove = false;//par défaut faux, si le curseur est dans la zone de déplacement ce sera true

            //parcourt la map pour savoir si le curseur est sur un obstacle en cas d'obstacle on sort de la fonction
            foreach (Map curr2 in world.getMap())
            {
                if (curr2.ifPositionEgal(posInTab) == true)
                {
                    if (curr2.ifPass() == false)
                    {
                        Console.WriteLine("interdit!");
                        return;
                    }
                }
            }

            //parcourt la zone de déplacement dans le cas où il s'agit d'une case infranchissable en sort de la fonction
            foreach (Map curr2 in perso.getMove())
            {
                if (curr2.ifPositionEgal(posInTab) == true)
                {
                    inMove = true;//le curseur est dans la zone
                    if (curr2.ifPass() == false)
                    {
                        Console.WriteLine("passe pas");
                        return;
                    }
                }
            }

            if (_vide == true)//si le joueur commence à définir le trajet de son personnage
            {
                Console.WriteLine("_vide=true");
                _posPerso.X = perso.getPosInTab().X;
                _posPerso.Y = perso.getPosInTab().Y;

                Fleche curr = new Fleche();

                curr.setPosition(posInTab);

                if (inMove)                        //le curseur est dans la zone
                {
                    _trajet = new List <Fleche>(); //on initialise une nouvelle liste

                    Console.WriteLine("cursor.x:" + posInTab.X + "player.X:" + _posPerso.X);
                    Console.WriteLine("cursor.y:" + posInTab.Y + "player.y:" + _posPerso.Y);
                    if (posInTab.X > _posPerso.X)//droite
                    {
                        curr.setSource(6);
                    }
                    else if (posInTab.X < _posPerso.X)//gauche
                    {
                        curr.setSource(4);
                    }
                    else if (posInTab.Y > _posPerso.Y)//bas
                    {
                        curr.setSource(2);
                    }
                    else if (posInTab.Y < _posPerso.Y)//haut
                    {
                        curr.setSource(8);
                    }
                    else
                    {
                        Console.WriteLine("Wut");
                        return;
                    }
                    _trajet.Add(curr); //on ajoute la fleche à la liste
                    _vide = false;     //le trajet n'est plus vide
                    _prec = posInTab;
                    _taille++;         //incremente la taille du trajet
                    Console.WriteLine("Add");
                }
            }
            else
            {
                Fleche curr = new Fleche();

                curr.setPosition(posInTab);

                if (inMove)
                {
                    if (posInTab.X > _prec.X)//droite
                    {
                        if (_trajet.Last().getSens() != 6)
                        {
                            //on modifie le bout de fleche précédent pour quel forme un virage
                            _trajet.Last().setSource(_trajet.Last().getSens() * 10 + 6);
                        }
                        curr.setSource(6);
                    }
                    else if (posInTab.X < _prec.X)//gauche
                    {
                        if (_trajet.Last().getSens() != 4)
                        {
                            //on modifie le bout de fleche précédent pour quel forme un virage
                            _trajet.Last().setSource(_trajet.Last().getSens() * 10 + 4);
                        }
                        curr.setSource(4);
                    }
                    else if (posInTab.Y > _prec.Y)//bas
                    {
                        if (_trajet.Last().getSens() != 2)
                        {
                            //on modifie le bout de fleche précédent pour quel forme un virage
                            _trajet.Last().setSource(_trajet.Last().getSens() * 10 + 2);
                        }
                        curr.setSource(2);
                    }
                    else if (posInTab.Y < _prec.Y)//haut
                    {
                        if (_trajet.Last().getSens() != 8)
                        {
                            //on modifie le bout de fleche précédent pour quel forme un virage
                            _trajet.Last().setSource(_trajet.Last().getSens() * 10 + 8);
                        }
                        curr.setSource(8);
                    }
                    else
                    {
                        Console.WriteLine("Wut");
                        return;
                    }

                    _trajet.Add(curr);//on ajoute le bout de fleche
                    _prec = posInTab;
                    _taille++;
                }
            }
        }