public void draw(System.Drawing.Graphics g, int scale, bool drawTeleArrows)
            {
                if (b == null)
                {
                    return;
                }

                lock (drawLock)
                {
                    b.draw(g, scale, drawTeleArrows);

                    HashSet <Board.Position> pps = new HashSet <Board.Position>();

                    foreach (Specimen s in specimens)
                    {
                        Board.Position p = s.pos;
                        if (pps.Contains(p))
                        {
                            continue;
                        }
                        pps.Add(p);

                        System.Drawing.Brush brsh = consts.specimenBrush;

                        // too much fun
                        //brsh = new System.Drawing.SolidBrush(System.Drawing.Color.FromArgb(255, 0, 255 - (int)(255.0 / (1.0 + (double)s.fitness / 50.0)), 100));

                        g.FillRectangle(brsh, p.x * scale + 1, p.y * scale + 1, scale - 2, scale - 2);
                    }
                }
            }
 public void see(Board.Position pos, Board brd)
 {
     for (int i = -xd; i <= xd; i++)
     {
         for (int j = -yd; j <= yd; j++)
         {
             colors[i + xd, j + yd] = brd.getColor(i + pos.x, j + pos.y).n;
         }
     }
 }