Пример #1
0
        private ETerrain[,] ReadTerrainFile()
        {
            string TerrainFilePath = @"C:\Users\thalesaguiar\Documents\Dev\C#\ROM\terrains.txt";

            ETerrain[,] auxTerrains = new ETerrain[BoardConsts.MAX_LIN, BoardConsts.MAX_COL];
            int          lin = 0;
            int          col = 0;
            string       line;
            Array        terrains = Enum.GetValues(typeof(ETerrain));
            FileStream   fStream  = new FileStream(TerrainFilePath, FileMode.Open, FileAccess.Read);
            StreamReader file     = new StreamReader(fStream);

            while ((line = file.ReadLine()) != null)
            {
                string[] cells = line.Split(' ');
                foreach (string cell in cells)
                {
                    cell.Trim();
                    int type = int.Parse(cell);
                    auxTerrains[lin, col] = (ETerrain)terrains.GetValue(type);
                    col++;
                }
                lin++;
                col = 0;
            }
            file.Close();
            return(auxTerrains);
        }
Пример #2
0
        public override void UnAdapt(ETerrain terrain)
        {
            switch (terrain)
            {
            case ETerrain.MOUNTAIN:
                MovePoints += 1;
                break;

            case ETerrain.PLAIN:
                break;

            case ETerrain.RIVER:
                Atk -= 1;
                break;

            case ETerrain.FIELD:
                Def -= 1;
                break;

            case ETerrain.MARSH:
                Def -= 1;
                break;

            case ETerrain.FOREST:
                MovePoints -= 1;
                break;

            case ETerrain.DESERT:
                MovePoints += 2;
                break;

            default:
                throw new InvalidOperationException("Could not unadapat for " + terrain);
            }
        }
Пример #3
0
 public void SetTerrainAt(Coord pos, ETerrain value)
 {
     if (Coord.IsValid(pos))
     {
         Terrains[pos.X, pos.Y] = value;
     }
 }
Пример #4
0
 public void IncreasePawnsAt(ETerrain terrain)
 {
     if (PPTs.ContainsKey(terrain))
     {
         PPTs[terrain] += 1;
     }
 }
Пример #5
0
        public static string Convert(this ETerrain terrain)
        {
            switch (terrain)
            {
            case ETerrain.MOUNTAIN:
                return("MOUNTAIN");

            case ETerrain.PLAIN:
                return("PLAIN");

            case ETerrain.RIVER:
                return("RIVER");

            case ETerrain.FIELD:
                return("FIELD");

            case ETerrain.MARSH:
                return("MARSH");

            case ETerrain.FOREST:
                return("FOREST");

            case ETerrain.DESERT:
                return("DESERT");
            }
            return("ERROR");
        }
Пример #6
0
        public override double Value()
        {
            double total = 1;

            if (Coord.Distance(Target, Oponent.GetCultCenter().Position) <
                Coord.Distance(AllyPos, Oponent.GetCultCenter().Position))
            {
                total += 2 * (1 + 1.0 / Coord.Distance(AllyPos, Oponent.GetCultCenter().Position));
            }

            ETerrain terrainAtTarget = Boards.TerrainAt(Target);

            foreach (ETerrain terrain in CurPlayer.GetPawnAt(AllyPos).PositiveTerrains)
            {
                if (terrainAtTarget == terrain)
                {
                    total += 1;
                    break;
                }
            }

            foreach (ABasicPawn enemy in Oponent.GetAttackers())
            {
                if (Coord.Distance(enemy.Position, CurPlayer.GetCultCenter().Position) < BoardConsts.MAX_COL / 2 &&
                    Coord.Distance(Target, enemy.Position) < Coord.Distance(AllyPos, enemy.Position))
                {
                    total += 3.0 * (1 + 1.0 / Coord.Distance(AllyPos, enemy.Position));
                }
            }

            return(total);
        }
Пример #7
0
 public DalrionPawn()
 {
     PositiveTerrains = new ETerrain[] { ETerrain.MOUNTAIN, ETerrain.MARSH, ETerrain.DESERT };
     BOARD_CHAR       = BoardConsts.DALRION_PAWN;
     CurrLife         = 23;
     TotalLife        = 23;
     Culture          = ECultures.DALRIONS;
     Def        = 5;
     Position   = new Coord(0, 0);
     Size       = 1;
     Atk        = 9;
     AtkRange   = 5;
     MovePoints = 5;
 }
Пример #8
0
 public void SetNumOfPawnsAt(ETerrain terrain, int numOfPawns)
 {
     if (numOfPawns > 0)
     {
         if (PPTs.ContainsKey(terrain))
         {
             PPTs[terrain] = numOfPawns;
         }
         else
         {
             PPTs.Add(terrain, numOfPawns);
         }
     }
 }
Пример #9
0
 public RahkarPawn()
 {
     PositiveTerrains = new ETerrain[] { ETerrain.MOUNTAIN, ETerrain.RIVER, ETerrain.MARSH };
     BOARD_CHAR       = BoardConsts.RAHKAR_PAWN;
     TotalLife        = 14;
     CurrLife         = 14;
     Culture          = ECultures.RAHKARS;
     Def        = 7;
     Position   = new Coord(0, 0);
     Size       = 1;
     Atk        = 8;
     AtkRange   = 7;
     MovePoints = 5;
 }
Пример #10
0
 public void Adapt(ETerrain prev, ETerrain actual)
 {
     UnAdapt(prev);
     ReAdapt(actual);
 }
Пример #11
0
 public abstract void ReAdapt(ETerrain terrain);