Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
listing_2003_7.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
233.98 Кб
Скачать

2.2. Создание рисунков с использованием процедур для работы с прямоугольниками и процедур для работы с текстом

Задание 2.2.1. Нарисовать шахматную доску. Для создания шахматного поля по результатам проверки четности суммы индексов клеток по горизонтали и по вертикали закрашиваем клетки так, чтобы верхняя левая клетка была светлой, а остальные размещались с чередованием светлых с более темными. Затем для каждой клетки рисуем с помощью процедуры Rectangle контур контрастного цвета, что на всей доске создаст разграничительные вертикальные и горизонтальные линии. Сверху клетки подписываются восьмью латинскими буквами. Так как буквы имеют последовательные кодовые номера в таблице, то для получения букв по этим кодам можно использовать в цикле функцию chr(64 + i), где i принимает значения от 1 до 8. Для получения вертикального ряда чисел используем другой прием: параметр цикла преобразуется из числового значения в строковое с помощью функции str(i, sd).

uses

graph, crt;

const

k=50; {Размер клетки}

x=12;

y=12;

var

err, gd, gm, i, j: integer;

sd: string;

begin

gd:=vga;

gm:=vgahi;

initgraph(gd, gm, 'd:\bp\bgi');

err:=graphresult;

if err<>grok then

begin

writeln('Ошибка открытия графики');

halt(1)

end;

setcolor(11);

for i:=1 to 8 do

begin

for j:=1 to 8 do

begin

if (i+j) mod 2=0

then

setfillstyle(1, 13)

else

setfillstyle(1, 12);

bar(x+k*(i-1), y+k*j, x+k*i, y+k*(j+1));

setcolor(3);

rectangle(x+k*(i-1), y+k*j, x+k*i, y+k*(j+1))

end;

end;

for i:=1 to 8 do

begin

outtextxy(x+k-20, y+35, chr(64+i)); {Буквы}

k:=k+50

end;

x:=12;

y:=12;

k:=0;

for i:=1 to 8 do

begin

str(i, sd);

outtextxy(x-10, y+k+70, sd); {Цифры}

k:=k+50

end;

readln;

closegraph;

end.

3. Создание рисунков с использованием окружностей, эллипсов, дуг, секторов

3.1. Использование процедуры Circle

Задание 3.1.1. Нарисовать в цикле семейство окружностей, расположенных как на олимпийской эмблеме. Раскрасим окружности в разные цвета, так как в цикле подобрать цвета в определенной последовательности сложно.

uses

graph, crt;

var

x, y, err, gd, gm, i, k: integer;

begin

gd:=vga;

gm:=vgahi;

initgraph(gd, gm, 'd:\bp\bgi');

err:=graphresult;

if err<>grok then

begin

writeln('Ошибка открытия графики');

halt(1)

end;

randomize;

for i:=1 to 3 do

begin

setcolor(random(15)+1); {Чтобы исключить появление}

circle(135+(i-1)*180, 180, 100) {черного цвета, прибавляем 1}

end;

for i:=1 to 2 do

begin

setcolor(random(15)+1);

circle(225+(i-1)*180, 290, 100)

end;

readln;

closegraph;

end.

Задание 3.1.2. Нарисовать гроздь винограда. С клавиатуры задается число рядов ягод и их радиус.

uses

graph, crt;

const

y=50; {Начальные координаты по оси у}

x=50; {и по оси х}

var

n, m, r, err, gd, gm, i, j: integer;

begin

writeln('Введите число рядов с ягодами и радиус ягоды:');

readln(n, r);

gd:=vga;

gm:=vgahi;

initgraph(gd, gm, 'd:\bp\bgi');

err:=graphresult;

if err<>grok then

begin

writeln('Ошибка открытия графики');

halt(1)

end;

m:=n; {m - количество ягод в ряду}

for j:=1 to n do

begin

y:= y+2*r; {переход к следующему ряду ягод}

for i:=1 to m do

circle(x+i*2*r+2, y, r); {"+2" - чтобы ягоды в ряду}

{не соприкасались}

x:=x+r+1; {смещение ягоды в новом ряду вправо}

m:= m-1

end;

readln;

closegraph;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]