Нарисовать 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.
Объяснение кода листинга программы
- В начале кода подключается библиотека graph, которая используется для рисования графических элементов.
- Затем определяется процедура Kletka, которая принимает на вход координаты левого верхнего угла клетки и её ширину. Внутри процедуры происходит рисование клетки с помощью функций Setcolor, Setfillstyle и Bar.
- Далее объявляются переменные gd, gm, x1, y1, x2, y2, d1, i, j, r, x и y, которые используются для работы с графическим интерфейсом и отрисовки доски.
- Затем вызывается функция initgraph, которая инициализирует графический движок и устанавливает начальные значения для переменных.
- Далее вычисляются размеры доски: ширина клеток d1, левый край доски x, высота доски 8*d1+60.
- Затем рисуется контур доски с помощью функции Rectangle.
- Далее происходит закраска клеток с помощью функции Bar.
- Затем определяются координаты левого верхнего угла первой клетки (x1, y1) и первой строки клеток (i).
- Далее происходит цикл по всем клеткам доски. Если номер клетки нечетный, то вызывается процедура Kletka с соответствующими параметрами. Если номер клетки четный, то вызывается другая процедура Kletka.
- После окончания цикла происходит смена цвета кисти на 0, чтобы перейти к белому цвету.
- Затем выводятся подписи вертикалей и горизонталей доски с помощью функций outtextxy.
- В конце программы вызывается readln, чтобы приостановить выполнение программы и дать пользователю возможность закрыть программу.