TabView[{
"Black and white"->
Panel[
DynamicModule[{horizontalqty=3, verticalqty=3, positiveslopeqty=3,negativeslopeqty=3, lines1={{0, 0}, {1, 1}}, lines1a={{0, 0}, {1, 1}}, lines1b={{0, 0}, {1, 1}},lines1c={{0, 0}, {1, 1}}, lines2={{0, 0}, {1, 1}}, lines2a={{0, 0}, {1, 1}}, lines2b={{0, 0}, {1, 1}}, lines2c={{0, 0}, {1, 1}}, lines3={{0, 0}, {1, 1}},lines3a={{0, 0}, {1, 1}},lines3b={{0, 0}, {1, 1}},lines3c={{0, 0}, {1, 1}},lines4={{0, 0}, {1, 1}},lines4a={{0, 0}, {1, 1}},lines4b={{0, 0}, {1, 1}},lines4c={{0, 0}, {1, 1}}, bwgraph="graph here....", imagesize1=3,tess=1,filename=enterDifferentName, angle1=1, angle2=1},
Column[{
Row[{
"Quantity of random vertical lines:             ",
InputField[Dynamic[horizontalqty], FieldSize->2],
Button["Randomize", 
lines1 =RandomChoice[Partition[Partition[Flatten[Table[{{i,j}, {i, j+1}},{i,0,2},{j,0,2}]], 2], 2], horizontalqty];
lines1a=Partition[Partition[Flatten[Map[{{-#[[1,1]], #[[1,2]]}, {-#[[2,1]], #[[2,2]]}}&, lines1]], 2], 2];
lines1b=Partition[Partition[Flatten[Map[{{-#[[1,1]], -#[[1,2]]}, {-#[[2,1]], -#[[2,2]]}}&, lines1]], 2], 2];
lines1c=
Partition[Partition[Flatten[Map[{{#[[1,1]], -#[[1,2]]}, {#[[2,1]], -#[[2,2]]}}&, lines1]], 2], 2]
]
}],
Row[{
"Quantity of random horizontal lines:         ",
InputField[Dynamic[verticalqty], FieldSize->2],
Button["Randomize", 
lines2=RandomChoice[Partition[Partition[Flatten[Table[{{i,j}, {i+1, j}},{i,0,2},{j,0,2}]], 2], 2], verticalqty];lines2a=Partition[Partition[Flatten[Map[{{-#[[1,1]], #[[1,2]]}, {-#[[2,1]], #[[2,2]]}}&, lines2]], 2], 2];
lines2b=Partition[Partition[Flatten[Map[{{-#[[1,1]], -#[[1,2]]}, {-#[[2,1]], -#[[2,2]]}}&, lines2]], 2], 2];
lines2c=Partition[Partition[Flatten[Map[{{#[[1,1]], -#[[1,2]]}, {#[[2,1]], -#[[2,2]]}}&, lines2]], 2], 2]
]
}],
Row[{
"Quantity of random negative slope lines:  ",
InputField[Dynamic[positiveslopeqty], FieldSize->2],
Button["Randomize", 
lines3=RandomChoice[Partition[Partition[Flatten[Table[{{i,j}, {i+RandomInteger[{1,angle1}], j+RandomInteger[{1,angle1}]}},{i,0,2},{j,0,2}]], 2], 2], positiveslopeqty];
lines3a=Partition[Partition[Flatten[Map[{{-#[[1,1]], #[[1,2]]}, {-#[[2,1]], #[[2,2]]}}&, lines3]], 2], 2];
lines3b=Partition[Partition[Flatten[Map[{{-#[[1,1]], -#[[1,2]]}, {-#[[2,1]], -#[[2,2]]}}&, lines3]], 2], 2];
lines3c=Partition[Partition[Flatten[Map[{{#[[1,1]], -#[[1,2]]}, {#[[2,1]], -#[[2,2]]}}&, lines3]], 2], 2], Method->"Queued"
],
" Angle Steepness:",
Slider[Dynamic[angle1],{1,3,1}, ImageSize->{55,25}]
}],
Row[{
"Quantity of random positive slope lines:   ",
InputField[Dynamic[negativeslopeqty], FieldSize->2],
Button["Randomize", 
lines4=RandomChoice[Partition[Partition[Flatten[Table[{{i,j}, {i-RandomInteger[{1,angle2}], j+RandomInteger[{1,angle2}]}},{i,1,3},{j,0,2}]], 2], 2], negativeslopeqty];
lines4a=Partition[Partition[Flatten[Map[{{-#[[1,1]], #[[1,2]]}, {-#[[2,1]], #[[2,2]]}}&, lines4]], 2], 2];
lines4b=Partition[Partition[Flatten[Map[{{-#[[1,1]], -#[[1,2]]}, {-#[[2,1]], -#[[2,2]]}}&, lines4]], 2], 2];
lines4c=Partition[Partition[Flatten[Map[{{#[[1,1]], -#[[1,2]]}, {#[[2,1]], -#[[2,2]]}}&, lines4]], 2], 2], Method->"Queued"],
" Angle Steepness:",
Slider[Dynamic[angle2],{1,3,1}, ImageSize->{55,25}]
}],
 Dynamic[Grid[Table[bwgraph, {i, 1, tess, 1}, {j, 1, tess, 1}], Spacings->{0,0}]],
Row[{
"Repeat Block: ",
Slider[Dynamic[tess],{1,3,1}, ImageSize->{65,25}],
Button["Single View", 
bwgraph=Dynamic[Graphics[{
Map[Point[#]&, points],
Map[Line[#]&, {lines1, lines2, lines3, lines4, lines1a, lines1b, lines1c, lines2a, lines2b, lines2c, lines3a, lines3b, lines3c, lines4a, lines4b, lines4c}],
Line[{{-2.99,-2.99},{-2.99,2.99}}],
Line[{{0,-2.99},{0,2.99}}],
Line[{{2.99,-2.99},{2.99,2.99}}],
Line[{{-2.99,2.99},{2.99,2.99}}],
Line[{{-2.99,0},{2.99,0}}],
Line[{{-2.99,-2.99},{2.99,-2.99}}],
{EdgeForm[Thick], White,Rectangle[{-0.25, -0.25}, {0, 3.25}]},
{EdgeForm[Thick], White,Rectangle[{-0.25, 3.25}, {3.25, 3}]},
{EdgeForm[Thick], White,Rectangle[{3, 3.25}, {3.25, 0}]},
{EdgeForm[Thick], White,Rectangle[{-0.25, -0.25}, {3.25, 0}]}}, 
PlotRange->{{-0.25, 3.25}, {-0.25, 3.25}},ImageSize->111*imagesize1]]
],
Button["Single Mirror", 
bwgraph=Dynamic[Graphics[{
Map[Point[#]&, points],
Map[Line[#]&, {lines1, lines2, lines3, lines4, lines1a, lines1b, lines1c, lines2a, lines2b, lines2c, lines3a, lines3b, lines3c, lines4a, lines4b, lines4c}],
Line[{{-2.99,-2.99},{-2.99,2.99}}],
Line[{{0,-2.99},{0,2.99}}],
Line[{{2.99,-2.99},{2.99,2.99}}],
Line[{{-2.99,2.99},{2.99,2.99}}],
Line[{{-2.99,0},{2.99,0}}],
Line[{{-2.99,-2.99},{2.99,-2.99}}],
{EdgeForm[Thick], White,Rectangle[{-3.25, -0.25}, {-3, 3.25}]},
{EdgeForm[Thick], White,Rectangle[{-3.25, 3.25}, {0, 3}]},
{EdgeForm[Thick], White,Rectangle[{0, 3.25}, {0.25, 0}]},
{EdgeForm[Thick], White,Rectangle[{-3.25, -0.25}, {0.25, 0}]}}, 
PlotRange->{{-3.25, 0.25}, {-0.25, 3.25}},ImageSize->111*imagesize1]]
],
Button["Pattern View",
bwgraph=Dynamic[Graphics[{
Map[Point[#]&, points],
Map[Line[#]&, {lines1, lines2, lines3, lines4, lines1a, lines1b, lines1c, lines2a, lines2b, lines2c, lines3a, lines3b, lines3c, lines4a, lines4b, lines4c}],
Line[{{-2.99,-2.99},{-2.99,2.99}}],
Line[{{0,-2.99},{0,2.99}}],
Line[{{2.99,-2.99},{2.99,2.99}}],
Line[{{-2.99,2.99},{2.99,2.99}}],
Line[{{-2.99,0},{2.99,0}}],
Line[{{-2.99,-2.99},{2.99,-2.99}}]
}, PlotRange->3,ImageSize->111*imagesize1]]
]
}],
Row[{
"Enter image file name: ",
InputField[Dynamic[filename], FieldSize->30]
}],
Row[{
"Enter image size (inches): ",
InputField[Dynamic[imagesize1], FieldSize->4],
Button["Export as graphic", Export[ToString[filename]<>".jpg", bwgraph]]
}]
}],
Initialization:>(points=Partition[Flatten[Table[{i,j},{i,-3,3},{j,-3,3}]], 2];)
]
],
"Assorted Colors"->Panel[
DynamicModule[{color1=Red,color2=Blue,color3=Green,color4=Yellow,color5=Orange,color6=Purple,color7=Pink,color8=Gray,color9=Blue, colorgraph="graph here....",filename2=enterAnotherName,imagesize=3,tess1=1,trinum=5, sqnum=5, angle1=1, angle2=1, trilist1={Red, Polygon[{{1,1},{2,2},{3,1}}]}, sqlist={Blue, Polygon[{{1,0},{0,0},{3,1}}]}},
Column[{
"Color wheel (click to change any color): ",
Row[{ColorSetter[Dynamic[color1]],
ColorSetter[Dynamic[color2]],
ColorSetter[Dynamic[color3]],
ColorSetter[Dynamic[color4]],
ColorSetter[Dynamic[color5]],
ColorSetter[Dynamic[color6]],
ColorSetter[Dynamic[color7]],
ColorSetter[Dynamic[color8]],
ColorSetter[Dynamic[color9]]
}],
Row[{
"Quantity of overlapping triangles: ",
InputField[Dynamic[trinum], FieldSize->4],
Button["Randomize", trilist1=Map[{RandomChoice[{Dynamic[color1], Dynamic[color2], Dynamic[color3],Dynamic[color4],Dynamic[color5],Dynamic[color6],Dynamic[color7],Dynamic[color8],Dynamic[color9]}],triangle[#]}&, RandomChoice[points, trinum]]]
}],
Row[{
"Quantity of overlapping squares: ",
InputField[Dynamic[sqnum], FieldSize->4],
Button["Randomize",
sqlist=
Map[{RandomChoice[{Dynamic[color1], Dynamic[color2], Dynamic[color3],Dynamic[color4],Dynamic[color5],Dynamic[color6],Dynamic[color7],Dynamic[color8],Dynamic[color9]}],square[#]}&, RandomChoice[points, sqnum]]]
}],
 Dynamic[Grid[Table[colorgraph, {i, 1, tess1, 1}, {j, 1, tess1, 1}], Spacings->{0,0}]],
Row[{
"Repeat Block: ",
Slider[Dynamic[tess1],{1,3,1},  ImageSize->{65,25}],
Button["Single View", 
colorgraph=Dynamic[
Graphics[{
Riffle[trilist1,sqlist],
Map[Point[#]&, points],
Line[{{-2.99,-2.99},{-2.99,2.99}}],
Line[{{0,-2.99},{0,2.99}}],
Line[{{2.99,-2.99},{2.99,2.99}}],
Line[{{-2.99,2.99},{2.99,2.99}}],
Line[{{-2.99,0},{2.99,0}}],
Line[{{-2.99,-2.99},{2.99,-2.99}}],
{EdgeForm[Thick], White,Rectangle[{-0.25, -0.25}, {0, 3.25}]},
{EdgeForm[Thick], White,Rectangle[{-0.25, 3.25}, {3.25, 3}]},
{EdgeForm[Thick], White,Rectangle[{3, 3.25}, {3.25, 0}]},
{EdgeForm[Thick], White,Rectangle[{-0.25, -0.25}, {3.25, 0}]}},
PlotRange->{{-0.25,3.25},{-0.25,3.25}}, ImageSize->111*imagesize]
]],
Button["Single Mirror",
colorgraph=Dynamic[
Graphics[{
Riffle[trilist1,sqlist],
Map[Point[#]&, points],
Line[{{-2.99,-2.99},{-2.99,2.99}}],
Line[{{0,-2.99},{0,2.99}}],
Line[{{2.99,-2.99},{2.99,2.99}}],
Line[{{-2.99,2.99},{2.99,2.99}}],
Line[{{-2.99,0},{2.99,0}}],
Line[{{-2.99,-2.99},{2.99,-2.99}}],
{EdgeForm[Thick], White,Rectangle[{-3.25, -0.25}, {-3, 3.25}]},
{EdgeForm[Thick], White,Rectangle[{-3.25, 3.25}, {0, 3}]},
{EdgeForm[Thick], White,Rectangle[{0, 3.25}, {0.25, 0}]},
{EdgeForm[Thick], White,Rectangle[{-3.25, -0.25}, {0.25, 0}]}},
PlotRange->{{-3.25,0.25},{-0.25,3.25}}, ImageSize->111*imagesize]
]],
Button["Pattern View", 
colorgraph=Dynamic[
Graphics[{
Riffle[trilist1,sqlist],
Map[Point[#]&, points],
Line[{{-3,-3},{-3,3}}],
Line[{{0,-3},{0,3}}],
Line[{{3,-3},{3,3}}],
Line[{{-3,3},{3,3}}],
Line[{{-3,0},{3,0}}],
Line[{{-3,-3},{3,-3}}]},
PlotRange->3, ImageSize->111*imagesize]
]]
}],
Row[{
"Enter image file name: ",
InputField[Dynamic[filename2], FieldSize->30]
}],
Row[{
"Enter image size (inches): ",
InputField[Dynamic[imagesize], FieldSize->4],
Button["Export as graphic", Export[ToString[filename2]<>".jpg", colorgraph]]
}]
}],
Initialization:>(points=Partition[Flatten[Table[{i,j},{i,-3,3},{j,-3,3}]], 2];triangle[point_]:=
Last[{
size=RandomChoice[Range[1,3]];,
{Polygon[{
point, 
{point[[1]]+size, point[[2]]}, 
{point[[1]]+size, point[[2]]+size}
}],
Polygon[{
{-point[[1]], point[[2]]}, 
{-(point[[1]]+size), point[[2]]}, 
{-(point[[1]]+size), point[[2]]+size}
}],
Polygon[{
{-point[[1]], -point[[2]]}, 
{-(point[[1]]+size),- point[[2]]}, 
{-(point[[1]]+size), -(point[[2]]+size)}
}],
Polygon[{
{point[[1]], -point[[2]]}, 
{(point[[1]]+size),- point[[2]]}, 
{(point[[1]]+size), -(point[[2]]+size)}
}]
}
}];
square[point_]:=
Last[{
size=RandomChoice[Range[1,2]];,
{Polygon[{
point, 
{point[[1]]+size, point[[2]]}, 
{point[[1]]+size, point[[2]]+size},
{point[[1]], point[[2]]+size}
}],
Polygon[{
{-point[[1]], point[[2]]}, 
{-(point[[1]]+size), point[[2]]}, 
{-(point[[1]]+size), point[[2]]+size},
{-point[[1]], point[[2]]+size}
}],
Polygon[{
{-point[[1]], -point[[2]]}, 
{-(point[[1]]+size), -(point[[2]])}, 
{-(point[[1]]+size), -(point[[2]]+size)},
{-point[[1]], -(point[[2]]+size)}
}],
Polygon[{
{point[[1]], -point[[2]]}, 
{point[[1]]+size, -point[[2]]}, 
{point[[1]]+size, -(point[[2]]+size)},
{point[[1]], -(point[[2]]+size)}
}]}
}])
]
]
}]