package bandera;

public class EUflag implements Flag
{

  public boolean rand( int column, int row )
  {
    return ( (column<3) || (column>38) || (row>-3) || (row<-38) );
  } 
  
  public boolean diagonal( int column, int row )
  {
    return (column -row) == 41;
  }
  
  public boolean in_rect( int column, int row )
  {
    return ( column<18 ) && ( row>-18 ) ;
  }
  
  public char rect_char( int column, int row )
  {
     if ( column == 17 ) { return '|'; }
     else if ( row == -17 ) { return '-'; }
          else if ( ((column-row) % 3) == 0 ) { return '/'; }
               else if( ((column-row-1) % 3) == 0 ) { return '='; }
                    else { return ' '; }
  }
   
  public char determineCharacter ( int column, int row )
  {
     if ( rand( column, row ) )
        { return '?'; }
     else if ( diagonal( column, row ) )
             { return '+'; }
          else if (( column-row ) > 41) 
                  { 
                     if (( (row+2) % 4 ) == 0 ) return ')';
                     else return ' ';
                  }
               else if ( !in_rect( column, row ) )
                       { 
                         if ( (column % 5) == 0 )  return '(';
                         else return ' ';
                       }
                     else return rect_char( column, row );
                     
  } // end of determineCharacter

  public int numColumns()
  { return width ;}

  public int numRows()
  { return height; }

}