public void paint( Graphics g ){
      showStatus( status );
      // Copy the background image
      offscreen.drawImage( background, 0, 0, 300, 300, this );

      // If the computer moved previously show this move.
      // Doing this here so that when we draw the pieces, it overwrites part of
      // line.
      if ( lastmove != null ) {
        offscreen.setColor(Color.yellow);
        offscreen.drawLine(lastmove.x1 * 35 + 25, (7 - lastmove.y1) * 35 + 25,
                           lastmove.x2 * 35 + 25, (7 - lastmove.y2) * 35 + 25);
      }

      // Place each piece in the correct location.
      for ( int x = 0; x < 8; x++ )
        for ( int y = 0; y < 8; y++ ) {
          if ( onscreen.checker_of( Board.BLACK_CHECKER, x, y ) )
            offscreen.drawImage( black_piece, (x)*35+11, (7-y)*35+11, 30, 30, this );
          if ( onscreen.checker_of( Board.WHITE_CHECKER, x, y ) )
            offscreen.drawImage( white_piece, (x)*35+11, (7-y)*35+11, 30, 30, this );
        }
      // If the player is moving, show him his possible moves.
      if ( user_move == CustomCanvas.PICK_MOVE ) {
        Vector<Move> v = board.genMoves2(x1,y1);
        Move m;
        offscreen.setColor( Color.red );
        for (int i = 0; i < v.size();i++) {
          m = (Move)v.elementAt( i );
          offscreen.drawLine( x1*35+25, (7-y1)*35+25, m.x2*35+25, (7-m.y2)*35+25);
        }
      }

      canvas.repaint();
    }