コード例 #1
0
 public ZoneAbstraite(string nom, Position p, int i)
 {
     this.nom = nom;
        this.point = p;
        this.id = i;
        this.Walkable = true;
 }
コード例 #2
0
 public ZoneAbstraite GetZone(Position p)
 {
     foreach (ZoneAbstraite z in zones)
     {
         if (z.point.X == p.X && z.point.Y == p.Y)
             return z;
     }
     return null;
 }
コード例 #3
0
        public override PlateauDeJeu CreerPlateau()
        {
            PlateauDeJeu plateau = new PlateauDeJeu(MapType.labyrinthe);
            //creer adjacent et case
            Zone actuelle = null;
            Zone ancienne = null;
            Acces lien = null;
            Position p = null;
            int h = 0;
            int j = 0;
            for (int i = 0; i < Parametres.nbCases; i++)
            {
                if (h >= Parametres.nbColonne)
                {
                    h = 0;
                    j++;
                }
                p = new Position(h, j);
                actuelle = (Zone)CreerZone("Zone " + i, p, i);
                plateau.AjoutZone((ZoneAbstraite)actuelle);
                if (ancienne != null)
                {
                    lien = (Acces)CreerAcces((ZoneAbstraite)actuelle, (ZoneAbstraite)ancienne);
                    plateau.AjoutAcces((AccesAbstrait)lien);
                }
                ancienne = actuelle;
                h++;
            }

            List<ZoneAbstraite> liste = plateau.zones;
            ZoneAbstraite za;
            foreach (Zone z in liste)
            {
                if (z.point.Y != 0)
                {
                    za = (ZoneAbstraite)plateau.GetZone(new Position(z.point.X, z.point.Y - 1));
                    if (za != null)
                    {
                        lien = (Acces)CreerAcces((ZoneAbstraite)z, za);
                        plateau.AjoutAcces((AccesAbstrait)lien);
                    }
                    za = null;
                }
                if (z.point.Y != Parametres.nbColonne - 1)
                {
                    za =(ZoneAbstraite)plateau.GetZone(new Position(z.point.X, z.point.Y + 1));
                    if (za != null)
                    {
                        lien = (Acces)CreerAcces((ZoneAbstraite)z, za);
                        plateau.AjoutAcces((AccesAbstrait)lien);
                    }
                    za = null;
                }
            }

            return plateau;
        }
コード例 #4
0
        public override bool AreNeighbour(Position z)
        {
            if (z == null)
                return false;

            /* if ((this.z1.point.X == z.X && this.z1.point.Y == z.Y)
                 && (this.z2.point.X == z.X && this.z2.point.Y == z.Y) && CanBeUse)
                 return true;
             */
            if (((z.X == z1.point.X) && (z.Y == z1.point.Y) || (z.X == z2.point.X) && (z.Y == z2.point.Y)) && canBeUse)
                return true;
            return false;
        }
コード例 #5
0
 public List<ZoneAbstraite> GetNeighbourZones(Position p)
 {
     List<ZoneAbstraite> liste = new List<ZoneAbstraite>();
     foreach (AccesAbstrait a in acces)
     {
         if(a.AreNeighbour(p))
         {
             if (a.z1.point.X == p.X && a.z1.point.Y == p.Y)
                 liste.Add(a.z2);
             if (a.z2.point.X == p.X && a.z2.point.Y == p.Y)
                 liste.Add(a.z1);
         }
     }
     return liste;
 }
コード例 #6
0
 public Position GetStartZone(int i)
 {
     Position p = null;
     bool found = false;
     while (!found)
     {
         int x, y;
         Random rdm = new Random(DateTime.Now.Millisecond + i);
         x = rdm.Next(0, Parametres.nbColonne);
         y = rdm.Next(0, Parametres.nbLigne);
         p = new Position(x, y);
         if (game.Plateau.GetZone(p).Walkable)
             found = true;
     }
     return p;
 }
コード例 #7
0
 public override ZoneAbstraite CreerZone(string nom, Position p, int i)
 {
     return new Zone(nom, p, i);
 }
コード例 #8
0
ファイル: Quete.cs プロジェクト: kendrix/MaraudersAdventure
 public QueteZone(string nom, Position p)
 {
     Libelle = nom;
     zoneATrouver = p;
     Type = TypeQuete.TrouverCase;
 }
コード例 #9
0
ファイル: Case.cs プロジェクト: kendrix/MaraudersAdventure
 public Case(string nom, Position p, int i)
     : base(nom, p, i)
 {
 }
コード例 #10
0
        public override PlateauDeJeu CreerPlateau()
        {
            PlateauDeJeu plateau = new PlateauDeJeu(MapType.labyrinthe);
            //creer adjacent et case
            Case actuelle = null;
            Case ancienne = null;
            Adjacent lien = null;
            Position p = null;
            int h = 0;
            int j = 0;
            for (int i = 0; i < Parametres.nbCases; i++)
            {
                if (h >= Parametres.nbColonne)
                {
                    h = 0;
                    j++;
                }
                p = new Position(h, j);
                actuelle = (Case)CreerZone("Zone " + i, p, i);
                plateau.AjoutZone((ZoneAbstraite)actuelle);
                if (ancienne != null)
                {
                    lien = (Adjacent)CreerAcces((ZoneAbstraite)actuelle, (ZoneAbstraite)ancienne);
                    plateau.AjoutAcces((AccesAbstrait)lien);
                }
                ancienne = actuelle;
                h++;
            }

            List<ZoneAbstraite> liste = plateau.zones;
            ZoneAbstraite za;
            foreach (Case z in liste)
            {
                if (z.point.Y != 0)
                {
                    za = (ZoneAbstraite)plateau.GetZone(new Position(z.point.X, z.point.Y - 1));
                    if (za != null)
                    {
                        lien = (Adjacent)CreerAcces((ZoneAbstraite)z, za);
                        plateau.AjoutAcces((AccesAbstrait)lien);
                    }
                    za = null;
                }
                if (z.point.Y != Parametres.nbColonne - 1)
                {
                    za = (ZoneAbstraite)plateau.GetZone(new Position(z.point.X, z.point.Y + 1));
                    if (za != null)
                    {
                        lien = (Adjacent)CreerAcces((ZoneAbstraite)z, za);
                        plateau.AjoutAcces((AccesAbstrait)lien);
                    }
                    za = null;
                }
            }
            Random rdm = new Random(DateTime.Now.Millisecond);
            for (int i = 0; i < 10; i++)
            {
                plateau.zones[rdm.Next(0, Parametres.nbCases)].Walkable = false;
            }
            return plateau;
        }
コード例 #11
0
 public abstract ZoneAbstraite CreerZone(string nom, Position p, int i);
コード例 #12
0
 public abstract bool AreNeighbour(Position z);