Нарисовать 64х клетную шахматную доску - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Привет всем. вот столкнулся с проблемой, как нарисовать 64х клетную доску. есть код, но он рисует не настолько большую доску. как его сделать чтоб нормально рисовало?

Решение задачи: «Нарисовать 64х клетную шахматную доску»

textual
Листинг программы
uses graph;
procedure Kletka(x1,y1,c:integer;d:integer);
begin
Setcolor(c);
Setfillstyle(1,c);
Bar(x1,y1,x1+d,y1+d);
end;
var gd,gm,x1,y1,x2,y2,d1,i,j,r,x:integer;
begin
initgraph(gd,gm,'');
d1:=round((getmaxY-60)/8);{ширина клеток}
r:=d1 div 2;
x:=(getmaxX-8*d1-50)div 2;{левый край доски}
Setcolor(4);
Rectangle(x,1,x+8*d1+50,8*d1+60);{контур доски}
Setfillstyle(1,4);
Bar(x,1,x+8*d1+50,8*d1+60);{закрасим}
x1:=x+30;y1:=20;{левый верхний угол клетки а-8}
for i:=1 to 8 do
  begin
    for j:=1 to 8 do
    if odd(i+j) then Kletka(x1+d1*(i-1),y1+d1*(j-1),15,d1)
    else Kletka(x1+d1*(i-1),y1+d1*(j-1),6,d1);
  end;
Setcolor(0);
for i:=0 to 7 do{подписи вертикалей a..h}
outtextxy(x+30+d1*i+d1 div 2,450,chr(ord(i+97)));
for i:=7 downto 0 do{подписи горизонталей 1..8}
outtextxy(x+20,440-d1*i-d1 div 2,chr(ord(i+49)));
readln
end.

Объяснение кода листинга программы

  1. В начале кода подключается библиотека graph, которая используется для рисования графических элементов.
  2. Затем определяется процедура Kletka, которая принимает на вход координаты левого верхнего угла клетки и её ширину. Внутри процедуры происходит рисование клетки с помощью функций Setcolor, Setfillstyle и Bar.
  3. Далее объявляются переменные gd, gm, x1, y1, x2, y2, d1, i, j, r, x и y, которые используются для работы с графическим интерфейсом и отрисовки доски.
  4. Затем вызывается функция initgraph, которая инициализирует графический движок и устанавливает начальные значения для переменных.
  5. Далее вычисляются размеры доски: ширина клеток d1, левый край доски x, высота доски 8*d1+60.
  6. Затем рисуется контур доски с помощью функции Rectangle.
  7. Далее происходит закраска клеток с помощью функции Bar.
  8. Затем определяются координаты левого верхнего угла первой клетки (x1, y1) и первой строки клеток (i).
  9. Далее происходит цикл по всем клеткам доски. Если номер клетки нечетный, то вызывается процедура Kletka с соответствующими параметрами. Если номер клетки четный, то вызывается другая процедура Kletka.
  10. После окончания цикла происходит смена цвета кисти на 0, чтобы перейти к белому цвету.
  11. Затем выводятся подписи вертикалей и горизонталей доски с помощью функций outtextxy.
  12. В конце программы вызывается readln, чтобы приостановить выполнение программы и дать пользователю возможность закрыть программу.

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы