Игра
Листинг 10.7. Функция Flag рисует флажок.
// рисует флаг void _fastcall TForml::Flag(int x, int y) { TPoint p[4]; // координаты флажка и нижней точки древка // точки флажка р[0].х=х+4; р[0].у=у+4; р[1].х=х+30; р[1].у=у+12; р[2].х=х+4; р[2].у=у+20; // установим цвет кисти и карандаша Canvas › Brush › Color = clRed; Canvas › Pen › Color = clRed; // чтобы контур флажка был красный Canvas › Polygon(р, 2); // флажок // древко Canvas › Pen › Color = clBlack; Canvas › MoveTo(p[0].x, p[0].у); Canvas › LineTo(x+4,y+36); TPoint m[5]; // буква М m[0].x=x+8; m[0].y=y+14; m[l].x=x+8; m[l].y=y+8; m[2].x=x+10; m[2].y=y+10; m[3].x=x+12; m[3].y=y+8; m[4].x=x+12; m[4].y=y+14; Canvas › Pen › Color = clWhite; Canvas › Polyline(m,4}; Canvas › Pen › Color = clBlack; }
Функция Mina (листинг 10.8) рисует мину. Мина (рис. 10.14) состоит из восьми примитивов: два прямоугольника и сектор образуют корпус мины, остальные элементы рисунка – линии ("усы" и полоски на корпусе).
Рис. 10.14. Мина
Листинг 10.8. Функция Mina рисует мину.
// рисует мину void __faatcall TForml::Mina(int x, int y) { Canvas › Brush › Color = clGreen; Canvas › Pen › Color = clBlack; // корпус Canvas › Rectangle(x+16,y+26,x+24,y+30); Canvas › Rectangle(x+8,y+30,x+32,y+34); Canvas › Pie(x+б,y+28,x+34,y+44,x+34,y+36,x+6,y+36); // полоса на корпусе Canvas › MoveTo(x+12,y+32); Canvas › LineTo(x+28,y+32); // основание Canvas › MoveTo(x+8,y+36); Canvas › LineTo(x+32,y+36); // вертикальный "ус" Canvas › MoveTo(x+20,y+22); Canvas › LineTo(x+20,y+26); // боковые "усы" Canvas › MoveTo(x+8, y+30); Canvas › LineTo(x+6,y+28); Canvas › MoveTo(х+32,y+30); Canvas › LineTo(х+34, у+28); }
Обеим функциям в качестве параметров передаются координаты базовой точки рисунка и указатель на объект, на поверхности которого надо рисовать.