コード例 #1
0
        public void ConnectMountains(int targetX, int targetY)               // simulerar en formel för en graf utifrån två punkter, skapar sedan ett berg i alla posiitioner i arrayen som grafen överlappar
        {
            for (float t = 0; t <= 1; t += 0.01f)                            // formeln utgår från ett värde t som går ett oändligt antal steg mellan 0 och 1, här är det hundra steg viilkket innebär att den kollar hundra positioner mellan de två bergen vilket är mer än tillräckligt
            {
                int xPos = Convert.ToInt32(targetX - (targetX * t - x * t)); // fancy matte som ger positionen på grafen utifrån de två punkterna(bergen)
                int yPos = Convert.ToInt32(targetY - (targetY * t - y * t));

                if (tiles[xPos, yPos].GetBiomeType() != "Mountain")                      // ifall den positionen på grafen inte redan har ett berg skapas ett nytt
                {
                    tiles[xPos, yPos] = new Mountain(xPos, yPos, 0, 0, 0, false, false); // båda boolsen är false vilket gör att de här bergen inte gör något när de skapas
                }
            }
        }
コード例 #2
0
        public override void Spread(int x, int y, int startX, int startY, int size) // samma som för forest förutom att nospread är borta för att bergen skulle få en mer kompakt känsla
        {
            x = Math.Min(Math.Abs(x), tiles.GetLength(0) - 1);
            y = Math.Min(Math.Abs(y), tiles.GetLength(1) - 1);

            Tile newTile = tiles[x, y];

            if (newTile.GetBiomeType() != "mountain")
            {
                int xDif = startX - x;
                int yDif = startY - y;

                if (random.Next(size) > Math.Sqrt(xDif * xDif + yDif * yDif))
                {
                    newTile = new Mountain(x, y, startX, startY, size, false, true);
                }
            }
        }