Практика программирования (Бейсик, Си, Паскаль)



         

Задачи, советы и ответы - часть 2


Программа 8_14.pas

program shach;

{ Построение шахматной доски } uses Graph;

const

x0=10;

y0=10;

w=50;

col:integer=8;

var

i,j,gd, gm,x,у:integer;

begin gd:=0;

initgraph(gd,gm,' ') ;

for i:=0 to 7 do begin

col:=15-col;

y:=y0+i*w;

for j:=0 to 7 do begin

x:=x0+j *w;

setfillstyle(1,col);

bar3d(x,y,x+w,y+w,0,true);

{ 0бводка и заливка клетки }

col:=15-col;

{ Цвет для смежной клетки }

end;

end;

readln;

closegraph;

end.

Задание 8.15. 0тображение семисегментныхцифр

В электронных часах с цифровым индикатором цифры формируются как комбинации из семи сегментов (рис 8.3). Составить функцию (процедуру) cifra, которая по заданным координатам (х,у) и числовому значению цифры k (о <= k <= 9) формирует на экране ее графическое изображение.

Совет 1 (общий)

Выберем в качестве точки привязки (х,у) вершину семисегментной комбинации, расположенную в левом верхнем углу. 0чевидно, что для плотного примыкания смежных горизонтальных и вертикальных сегментов их срезы должны быть направлены под углами 45 и 135 градусов.

Рис. 8.3. Горизонтальный и вертикальный сегменты цифр

Если пронумеровать точки контура одного сегмента от 0 до 6 по часовой стрелке от самой левой (для горизонтальных) или самой верхней (для вертикальных) и считать, что начальная точка имеет координаты (х0.у0), то координаты остальных точек можно рассчитать, используя относительные смещения, приведенные в табл. 8.4. Через а и ь здесь обозначены смещения по координатным осям для наклонных и горизонтальных (вертикальных) ребер контура. Задавая различные числовые значения этих параметров, можно строить сегменты нужного размера. Удобно выбирать b = 4*а, хотя не возбраняются и любые другие соотношения. В последующих расчетах нам понадобится и константа с = = 2*а. + b, представляющая максимальную длину (высоту) сегмента.

Таблица 8.4. Расчет координат точек с использованием

относительного смещения

Номер точки

Смещения по координатам относительно предыдущей точки

Для горизонтального сегмента

Для вертикального сегмента

По х

По у

Пох

По у

  0 0 0 0
  а а а

0 1 2

b

0

0

b

<


Содержание  Назад  Вперед