示例#1
0
文件: Program.cs 项目: nrkn/LosvRL
        static void Main( string[] args )
        {
            const int size = 1000;
              var blocks = new Grid<bool>( new Size( size, size ) );
              blocks.SetEach( () => RandomHelper.Random.NextDouble() < 0.4  );
              var line = new Line( new Point( 0, 0 ), new Point( size - 1, size - 1 ) );
              var points = line.DrunkenWalk( 0.25, blocks.Bounds ).Distinct();
              var pointsHash = new HashSet<IPoint>( points );
              blocks.SetEach( ( value, point ) => pointsHash.Contains( point ) ? false : value );

              var flood = blocks.FloodFill( new Point( 0, 0 ) );

              var fill = new Grid<bool>( new Size( size, size ) );
              foreach( var point in flood ) {
            fill[ point ] = true;
              }

              File.WriteAllText( "blocks.pbm", blocks.ToPbm() );
              File.WriteAllText( "fill.pbm", fill.ToPbm() );
        }