public abstract class PatternPrinter {
private int patternLength;
public PatternPrinter(int patternLength) {
this.patternLength = patternLength;
Random rnd = new Random();
int specialIndex = rnd.Next(patternLength);
for (int i=0;i<patternLength;i++) {
if (roll == 0) PrintNormal();
public abstract void PrintNormal();
public abstract void PrintVariant();
public abstract void PrintSpecial();
public class RiverPattern : PatternPrinter{
private int patternLength;
public RiverPattern(int patternLength):base(patternLength) {
this.patternLength = patternLength;
Random rnd = new Random();
int specialIndex = rnd.Next(patternLength);
for (int i=0;i<patternLength;i++) {
if (roll == 0) PrintNormal();
public override void PrintNormal(){
if ((i==4) || (i==5) || (i==6)){
}else if ((i==3) || (i== 7)){
public override void PrintVariant(){
Random rnd2 = new Random();
Console.Write(" ");Console.Write(" ");Console.Write(" ");
for(int x = y+5;x<11;x++){
public override void PrintSpecial(){
Random rnd3 = new Random();
Random rnd4 = new Random();
Random rnd5 = new Random();
if((y==1)&(x==6)&(z==1)){
Console.Write("*");Console.Write("0");
Console.Write(" ");Console.Write(" ");
Console.Write("0");Console.Write(" ");
Console.Write(" ");Console.Write(" ");
Console.Write(" ");Console.Write("0");
else if((y==1)&(x==5)&(z==2)){
Console.Write("*");Console.Write("0");
Console.Write(" ");Console.Write(" ");
Console.Write("0");Console.Write("0");
Console.Write(" ");Console.Write(" ");
Console.Write(" ");Console.Write("0");
Console.Write("*");Console.Write("*");
Console.Write("0");Console.Write(" ");
Console.Write(" ");Console.Write(" ");
Console.Write(" ");Console.Write("0");
Console.Write("*");Console.Write("*");
Console.Write("*");Console.Write("*");
Console.Write("0");Console.Write(" ");
Console.Write(" ");Console.Write(" ");
Console.Write(" ");Console.Write(" ");
Console.Write("0");Console.Write("*");
Console.Write("*");Console.Write("0");
Console.Write(" ");Console.Write(" ");
Console.Write(" ");Console.Write(" ");
Console.Write(" ");Console.Write(" ");
Console.Write("0");Console.Write("*");
public static void Main()
RiverPattern river = new RiverPattern(10);