private Color getColor(int x, int y)
{
int[] map = this.pass ? this.nowmap : this.basemap;
int block = (map == null) ? 0 : map[y * 32 + x];
if (block == 0)
return Color.White;
if (block == 1)
return Color.Gainsboro;
double r, g, b;
Random rand = new Random(block);
int h = rand.Next(360 + 1);
int s = 65 - rand.Next(20 + 1);
int l = 75 - rand.Next(20 + 1);
double tmp = ((l < 50) ? l : (100 - l)) * (s * 0.01);
double max = 2.55 * (l + tmp);
double min = 2.55 * (l - tmp);
tmp = (max - min) / 60.0;
if (h < 60)
{
r = max;
g = h * tmp + min;
b = min;
}
else if (h < 120)
{
r = (120 - h) * tmp + min;
g = max;
b = min;
}
else if (h < 180)
{
r = min;
g = max;
b = (h - 120) * tmp + min;
}
else if (h < 240)
{
r = min;
g = (240 - h) * tmp + min;
b = max;
}
else if (h < 300)
{
r = (h - 240) * tmp + min;
g = min;
b = max;
}
else
{
r = max;
g = min;
b = (360 - h) * tmp + min;
}
return Color.FromArgb((int)r, (int)g, (int)b);
}