Программа


Program ChessMan;
{ Произвольное перемещение фигуры
  по шахматному полю
  (стрелками на соседнее поле) }
Uses Graph,Crt;                             { Подключение модулей Graph, Crt }
Const DriverPath='';                          { Путь к графическому драйверу }
Var CoordX,CoordY:0..7;                                  { Координаты фигуры }
    GraphDriver,GraphMode:integer;             { Графический драйвер и режим }
    ScaleX,ScaleY:integer;                             { Переводные масштабы }
    Exit:boolean;                                              { Флаг выхода }
Procedure DrawFigure;                                    { Прорисовка фигуры }
  var i:integer;                                                   { Счетчик }
  Begin
    SetColor(White);                                    { Выбор белого цвета }
    SetFillStyle(SolidFill,White);             { Однородное заполнение белым }

    { Прорисовка фигуры: }
    PieSlice(CoordX*ScaleX+ScaleX div 2,CoordY*ScaleY+ScaleY div 4,
             0,360,ScaleX div 7);
    for i:=CoordY*ScaleY+ScaleY div 4 to CoordY*ScaleY+ScaleY*5 div 6 do
      Line(CoordX*ScaleX+ScaleX div 2
           -(i-(CoordY*ScaleY+ScaleY div 4))*3 div 4,
           i,
           CoordX*ScaleX+ScaleX div 2
           +(i-(CoordY*ScaleY+ScaleY div 4))*3 div 4,
           i)
  End;
Procedure EraseFigure;                  { Затирание фигуры (прорисовка поля) }
  Begin
    if Odd(CoordX) xor Odd(CoordY)
                       { Определение заполнения фигуры по четности координат }
      then SetFillStyle(SolidFill,Black)      { Однородное заполнение черным }
      else SetFillStyle(InterleaveFill,White);    { Частая сетка, белый цвет }
    Bar(CoordX*ScaleX,CoordY*ScaleY,(CoordX+1)*ScaleX,(CoordY+1)*ScaleY);
                                                           { Прорисовка поля }
    SetColor(White);                                    { Выбор белого цвета }
    SetLineStyle(SolidLn,0,NormWidth);     { Выбор сплошной нормальной линии }
    Rectangle(CoordX*ScaleX,CoordY*ScaleY,(CoordX+1)*ScaleX,(CoordY+1)*ScaleY)
                                                 { Прорисовка окантовки поля }
  End;
BEGIN
  GraphDriver:=Detect;                 { Автоматическое определение драйвера }
  InitGraph(GraphDriver,GraphMode,DriverPath);  { Инициализация граф. режима }
  ScaleX:=GetMaxX div 8 div 4 *3;         { Определение переводных масштабов }
  ScaleY:=GetMaxY div 8;              { с учетом соотношения сторон монитора }
  for CoordY:=0 to 7 do                              { Цикл прорисовки линий }
    for CoordX:=0 to 7 do                            { Цикл прорисовки полей }
      EraseFigure;
  Exit:=FALSE;                                          { Сброс флага выхода }
  CoordX:=3;                        { Определение начальных координат фигуры }
  CoordY:=3;
  DrawFigure;                                            { Прорисовка фигуры }
  while not Exit do         { Цикл сканирования клавиатуры и выбора действия }
    case ReadKey of               { Сканирование клавиатуры и выбор действия }
      #71,#55:if (CoordX>0)and(CoordY>0)    { Если фигура не на крайнем поле,}
               then                                                     { то }
                begin
                  EraseFigure;                         { Закрашивание фигуры }
                  CoordX:=CoordX-1;                     { Пересчет координат }
                  CoordY:=CoordY-1;
                  DrawFigure                             { Прорисовка фигуры }
                end;
      #72,#56:if CoordY>0 then
                begin
                  EraseFigure;
                  CoordY:=CoordY-1;
                  DrawFigure
                end;
      #73,#57:if (CoordX<7)and(CoordY>0) then
                begin
                  EraseFigure;
                  CoordX:=CoordX+1;
                  CoordY:=CoordY-1;
                  DrawFigure
                end;
      #75,#52:if CoordX>0 then
                begin
                  EraseFigure;
                  CoordX:=CoordX-1;
                  DrawFigure
                end;
      #77,#54:if CoordX<7 then
                begin
                  EraseFigure;
                  CoordX:=CoordX+1;
                  DrawFigure
                end;
      #79,#49:if (CoordX>0)and(CoordY<7) then
                begin
                  EraseFigure;
                  CoordX:=CoordX-1;
                  CoordY:=CoordY+1;
                  DrawFigure
                end;
      #80,#50:if CoordY<7 then
                begin
                  EraseFigure;
                  CoordY:=CoordY+1;
                  DrawFigure
                end;
      #81,#51:if (CoordX<7)and(CoordY<7) then
                begin
                  EraseFigure;
                  CoordX:=CoordX+1;
                  CoordY:=CoordY+1;
                  DrawFigure
                end;
      #27:Exit:=TRUE                                   { Подъем флага выхода }
    end; { case }
  CloseGraph                                  { Закрытие графического режима }
END.


Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию