コード例 #1
0
ファイル: NBlob.cs プロジェクト: fenixnix/Fractals
 static void FloodFillBlob(NMap map, NLocate loc, NLocateSet set, byte valid)
 {
     if (!map.WithIn(loc))
     {
         return;
     }
     if (map.GetBlock(loc.X, loc.Y) == valid)
     {
         map.SetBlock(loc.X, loc.Y, (byte)(255 - valid));
         set.Set.Add(loc);
         foreach (var l in loc.Direction4())
         {
             FloodFillBlob(map, l, set, valid);
         }
     }
 }
コード例 #2
0
ファイル: NMove.cs プロジェクト: fenixnix/Fractals
        public static void Line(NMap map, NLocate src, NLocate dst, byte digType)
        {
            if (src.Equals(dst))
            {
                return;
            }
            if (map.WithIn(src))
            {
                map.SetBlock(src.X, src.Y, digType);
            }

            List <NLocate> mos = new List <NLocate>();

            mos.AddRange(src.Direction4());
            mos.Sort((x, y) => x.DistanceTo(dst).CompareTo(y.DistanceTo(dst)));
            Line(map, mos[0], dst, digType);
        }
コード例 #3
0
ファイル: NMove.cs プロジェクト: fenixnix/Fractals
        public static void Noise(NMap map, NLocate src, NLocate dst, byte movType, byte digType)
        {
            if (src.Equals(dst))
            {
                return;
            }
            if (map.WithIn(src))
            {
                map.SetBlock(src.X, src.Y, digType);
            }

            List <NLocate> mos = new List <NLocate>();

            mos.AddRange(src.Direction4());
            mos.Sort((x, y) => x.DistanceTo(dst).CompareTo(y.DistanceTo(dst)));

            Dictionary <NLocate, double> rateDict = new Dictionary <NLocate, double>();

            if (map.WithIn(mos[0]))
            {
                rateDict.Add(mos[0], 0.6);
            }
            if (map.WithIn(mos[1]))
            {
                rateDict.Add(mos[1], 0.3);
            }
            if (map.WithIn(mos[2]))
            {
                rateDict.Add(mos[2], 0.1);
            }
            if (map.WithIn(mos[3]))
            {
                rateDict.Add(mos[3], 0.1);
            }

            NLocate mov = RandomSelectByRate <NLocate> .Select(rateDict);

            Noise(map, mov, dst, movType, digType);
        }