// FILE: drawObjects.java

   import java.awt.*;
   import java.applet.*;
    
public class drawObjects 
{
  Applet drawTo; 
   
  Image[] tileimg = new Image[26];  
  Image regularTile;
  Image word2xTile;
  Image word3xTile;
  Image letter2xTile;
  Image letter3xTile;
  Image centerTile;
  Image rack;

  public drawObjects(Applet a)
   {drawTo = a;}

// Initialize pictures
  public void init()
    {
    int loop = 0; //add the increm & init of loop into for loop with "c"
    for(char c = 'a';c <= 'z';c++)
     {tileimg[loop] = drawTo.getImage(drawTo.getDocumentBase(),"tile"+c+".gif");
      loop++;}

    regularTile =  drawTo.getImage(drawTo.getDocumentBase(),"reg.gif");
    word2xTile =   drawTo.getImage(drawTo.getDocumentBase(),"word2x.gif");
    word3xTile =   drawTo.getImage(drawTo.getDocumentBase(),"word3x.gif");
    letter2xTile = drawTo.getImage(drawTo.getDocumentBase(),"letter2x.gif");
    letter3xTile = drawTo.getImage(drawTo.getDocumentBase(),"letter3x.gif");
    centerTile =   drawTo.getImage(drawTo.getDocumentBase(),"center.gif");   
    rack =         drawTo.getImage(drawTo.getDocumentBase(),"rack.gif");
    } //init

  public int char2Int(char c) 
    {return ((int)c)-((int)'a');}

  public void drawSingleTile(int x,int y,char c,Graphics g)
    {g.drawImage(tileimg[char2Int(c)], x*35,y*40,drawTo);}

  public void finishGame(Graphics g, int[] scores)
    {int best = 0;
     int playerBest = 0;
     g.setColor(Color.orange);
     g.fillRect(100,100,100,40*scores.length);
     g.setColor(Color.blue);
     for(int loop = 0;loop < scores.length;loop++)
      {if (scores[loop] > best) {best = scores[loop];
                                 playerBest = loop + 1;}
       g.drawString("Player "+(loop+1)+" has "+scores[loop],105,113+loop*30);}
     g.drawString("Player "+playerBest+" wins",105,113+scores.length*30);
    }

  public void paint(char[][] board, Graphics g) {
    for(int y = 0;y < 15;y++)
      for(int x = 0;x < 15;x++)
        {if (board[x][y] >= 'a') 
           {g.drawImage(tileimg[char2Int(board[x][y])], x*35,y*40,drawTo);}}
    }//paint 

  public void drawScore(Graphics g,int player,int score) 
    {g.setColor(Color.yellow);
     g.fillRect(530,player*30,100,20);
     g.setColor(Color.blue);
     g.drawString("Player "+player+" has "+score,535,13+player*30);}

  public void previousPlay(Graphics g,int player,int score,String word, int extrainfo) 
    {g.setColor(Color.yellow);
     g.fillRect(530,300,100,65);
     g.setColor(Color.blue);
     g.drawString("Player "+player,535,313);  
     if (score == 0) {g.drawString("didn't play.",535,333);  
                      g.setColor(Color.red);
                      g.drawString("Time #"+extrainfo,535,353);}
      else {g.drawString(""+word,535,333);
           g.drawString(""+score,535,353);}}

  public void drawBoard(Graphics g) 
   {g.setColor(Color.red);
    g.fillRect(0,0,525,600);

    for(int y = 0;y < 15;y++)
      for(int x = 0;x < 15;x++)
        {
        if (x == 7 & y == 7) {g.drawImage(centerTile,x*35-1,y*40-1,drawTo);}
        else if ((x==0 & y==0)|(x==7 & y==0)|(x==14 & y==0)|(x==0 & y==7)|(x==14 & y==7)|(x==0 & y==14)|(x==7 & y==14)|(x==14 & y==14)) {g.drawImage(word3xTile,x*35-1,y*40-1,drawTo);}
        else if ((x==5 & y==1)|(x==9 & y==1)|(x==1 & y==5)|(x==5 & y==5)|(x==9 & y==5)|(x==13 & y==5)|(x==1 & y==9)|(x==5 & y==9)
              |(x==9 & y==9)|(x==13 & y==9)|(x==5 & y==13)|(x==9 & y==13)) {g.drawImage(letter3xTile,x*35-1,y*40-1,drawTo);}
        else if ((x==3 & y==0)|(x==11 & y==0)|(x==6 & y==2)|(x==8 & y==2)|(x==0 & y==3)|(x==7 & y==3)|(x==14 & y==3)|(x==2 & y==6)
              |(x==6 & y==6)|(x==8 & y==6)|(x==12 & y==6)|(x==3 & y==7)|(x==11 & y==7)|(x==3 & y==14)|(x==11 & y==14)|(x==6 & y==12)
              |(x==8 & y==12)|(x==0 & y==11)|(x==7 & y==11)|(x==14 & y==11)|(x==2 & y==8)|(x==6 & y==8)|(x==8 & y==8)|(x==12 & y==8)) {g.drawImage(letter2xTile,x*35-1,y*40-1,drawTo);}
        else if ((x==1 & y==1)|(x==2 & y==2)|(x==3 & y==3)|(x==4 & y==4)|(x==13 & y==1)|(x==12 & y==2)|(x==11 & y==3)|(x==10 & y==4)
              |(x==1 & y==13)|(x==2 & y==12)|(x==3 & y==11)|(x==4 & y==10)|(x==10 & y==10)|(x==11 & y==11)|(x==12 & y==12)|(x==13 & y==13)) {g.drawImage(word2xTile,x*35-1,y*40-1,drawTo);}
        else {g.drawImage(regularTile,x*35-1,y*40-1,drawTo);}
        }
    } //drawBoard


  public void drawHand(char[] hand, Graphics g) {
    g.setColor(Color.black);
    g.fillRect(45,645,282,60);
    g.setColor(Color.white);
    g.drawRect(44,644,284,62);
    g.drawImage(rack,50,650,drawTo);

    for(int loop = 0;loop < 7;loop++)
      {int numLetter = char2Int(hand[loop]);
       if (numLetter >= 0 & numLetter <= 26) 
            {g.drawImage(tileimg[numLetter],50+loop*37,648,drawTo);}}}

} //end
