Как закрасить шахматную доску - Free Pascal
Формулировка задачи:
Нарисовал шахматную доску,а как закрасить не знаю. Начал учиться,программированию,всего пару дней назад.Знаю что нужно пользоваться floodfill,но не могу сообразить как и где.
uses graph; var device,mode,i,x,x1,y,y2,i2:integer; begin device:=0; initgraph(device,mode,''); x:=1; x1:=171; y:=1; y2:=96; for i:=1 to 8 do begin for i2:=1 to 8 do begin rectangle(x,y,x1,y2); x:=x+170; x1:=x1+170; end; y:=y+95; y2:=y2+95; x:=1; x1:=171; end; readln; closegraph; end.
Решение задачи: «Как закрасить шахматную доску»
textual
Листинг программы
uses graph; var device,mode,i,x,x1,y,y2,i2:integer; begin device:=0; initgraph(device,mode,''); setfillstyle(1,white); x:=1; x1:=171; y:=1; y2:=96; for i:=1 to 8 do begin for i2:=1 to 8 do begin rectangle(x,y,x1,y2); if (i+i2) mod 2=0 Then FloodFill(x+1,y+1,white); x:=x+170; x1:=x1+170; end; y:=y+95; y2:=y2+95; x:=1; x1:=171; end; readln; closegraph; end.
Объяснение кода листинга программы
- Объявлены переменные: device, mode, i, x, x1, y, y2, i2.
- Установка переменных device и mode в начальные значения.
- Установка текущей графической настройки в режим заполнения (setfillstyle).
- Установка начальных координат (x,y) и размеров (x1,y2) прямоугольника.
- Цикл for для рисования 8 строк и столбцов шахматной доски.
- Внутри цикла for второй вложенный цикл for для рисования клеток.
- Рисование прямоугольника (rectangle).
- Если (i+i2) mod 2=0, то используется функция FloodFill для заливки клетки белым цветом.
- Увеличение координат (x,y) и размеров (x1,y2) на 170 для перехода к следующей строке/столбцу.
- После завершения внутреннего цикла for, увеличение координат (y,y2) на 95 для перехода к следующей строке.
- После завершения внешнего цикла for, считывание ввода (readln).
- Закрытие графического окна (closegraph).
- Конец программы (end).