Разработка практических заданий к урокам по теме: Графика в Turbo Pascal





МБОУ СОШ № 30




Разработка практических заданий
к урокам по теме:





Графика в Turbo Pascal





Из опыта работы учителя информатики
Мартынюк С. А.







Кострома – 2015





Содержание:


1. Требования к результатам усвоения учебного материала.

2

2. Понятие графического адаптера.
3




3. Рассмотрение работы в графическом режиме.
3




4. Процедуры и функции модуля GRAPH.
4




5. Пример использования процедур модуля GRAPH.
7




6. Пример составления программы.
7




7. Разработка практических заданий к урокам по темам:


I. Основы работы с графикой
8

II. Дополнительные возможности графики.
9

III. Анимация в графике.
12

IV. Закрепление основ работы в графике.
15




8. Приложение – Диск.
18








Приложение - Диск

Содержание диска:

1. Примеры программ на паскале, по теме «Работа с графикой»:

HOUSE.PAS - программа «День, ночь»
SEA.PAS - игра «Морской бой»
PUSHKA.PAS – игра «Осада замка»
TANK.PAS - логическая игра «Танк»
TIR.PAS - работа с «мышью» в графике на примере игры «Тир».
HOCKEY.PAS – разработка игры «Хоккей».










Программы с пропусками фрагментов кода (нужное добавить):
Program Sea;
Uses CRT, GRAPH;
Var
P, P2 : Pointer;
Size : Word;
Ch : Char;
X, U : Integer;
-----------------------
BEGIN
{подключение графики}
{создание фона}
{нарисовать корабль}
SIZE := ImageSize(45,45,85,80);
GetMem(P, Size);
GetImage(45,45,85,80, P();
{нарисовать орудие}
SIZE := ImageSize(300,370,345,400);
GetMem(P, Size);
GetImage(300,370,345,400, P2();
X:=0;
U:=310;
REPEAT
X:=X+1;
if X>640 then
begin X:=0; SetFillStyle(1,11); Bar(0, 0, 640, 55); end;
PutImage(X,45, P(, 0);
if KeyPressed then
begin
Ch := ReadKey;
if Ch = a’ then U:=U - 10;
if Ch = s’ then U:=U +10;
if Ch = ’ then {имитация выстрела из орудия};
end;
PutImage(U, 370, P2(, 0);
UNTIL Ch = #27;
END.



Цели занятий:
дидактические: – закрепление пройденного материала; – обобщение и систематизация знаний о среде программирования Паскаль; – освоение приемов построения алгоритмов и их программирование на языке Turbo Pascal;
воспитательные: – формирование мировоззрения у учащихся; – формирование мотивации к изучению раздела информатики “Основы алгоритмизации и программирования”; – формирование чувства коллективизма, дружбы;
развивающие: – развитие логического мышления; – развитие навыков работы с системой программирования.
Межпредметные связи: связь с алгеброй и геометрией.
Внутрипредметные связи: связь с разделами геометрии, процедуры, функции.
Обеспечение занятий: компьютер + большой экран, карточки, раздаточный материал с заданиями на закрепление, интерфейс среды программирования Turbo Pascal.
Учащиеся должны знать: 
особенности среды Turbo Pascal;
особенности работы в графическом режиме GRAPH;
стандартные процедуры и функции модуля CRT;
стандартные процедуры и функции модуля GRAPH.
Учащиеся должны уметь:
производить необходимые действия с программой;
работать в графическом режиме;
правильно применять стандартные процедуры и функции модуля CRT;
правильно применять стандартные процедуры и функции модуля GRAPH.


Понятие графического адаптера
Аппаратная поддержка графики персонального компьютера обеспечивается двумя основными модулями: видеоадаптером и видеомонитором. Видеомонитор – это устройство, на котором появляется выводимый текст или графические изображения. Видеоадаптеры – это электронные устройства, управляемые собственным микропроцессором.
При работе с экраном в графическом режиме очень важным является то, что любая информация представляет собой совокупность пикселей. Каждый пиксель определяется своими координатами, т.е. положением относительно левого верхнего угла экрана. С помощью программ можно управлять светимостью и цветом любого пикселя, т.е. создавать любое изображение.
Рассмотрение работы в графическом режиме:
Для управления экраном в графическом режиме с помощью программ в Turbo Pascal существуют специальные графические процедуры и функции. Описание этих процедур и функций содержится в специальном библиотечном модуле GRAPH.
Запуск графической системы. Для запуска графической системы необходимо сделать следующее:
Подключить модуль GRAPH – библиотеку графических процедур: uses graph;
Установить графический режим с помощью двух переменных:
var DriverVar, ModeVar: integer; begin DriverVar:=Detect; InitGraph(DriverVar, ModeVar,’\TP\GRAPH’);
С этого момента все графические средства доступны пользователю.



2) Разработка компьютерной игры “морской бой”.

План разработки программы:
1. Создание интерфейса программы:
а). создание фона;
б). нарисовать корабль;
в). нарисовать орудие.
2. Копирование фрагментов (корабль, орудие).
3. Движение корабля.
4. Движение орудия.
5. Выстрел из орудия.



IV. Закрепление основ работы в графике.

1) Создать по образцу «Узор»

а)














б)




Процедуры и функции модуля GRAPH

Процедуры
Arc (X,Y:Integer; U1, U2, R:Word)
Строит дугу окружности текущим цветом с текущими параметрами линии. X, Y – координаты центра дуги; U1 – угол до начальной точки дуги, отсчитываемый против часовой стрелки от горизонтальной оси, направленной с лева на право; U2 – угол до конечной точки дуги, отсчитываемый так же, как U1; R – радиус дуги.
Bar (X1, Y1, X2, Y2:Integer)
Строит прямоугольник, закрашенный текущим цветом с использованием текущего стиля (орнамента, штриховки). X1, Y1, X2, Y2 – координаты левого верхнего и правого нижнего углов прямоугольника.
Bar3D (X1, Y1, X2, Y2:Integer; Glubina: Word; Top:Boolean)
Строит параллелепипед, используя текущий стиль и цвет. X1, Y1, X2, Y2 – координаты левого верхнего и правого нижнего углов передней грани; Glubina – ширина боковой грани (отсчитывается по горизонтали); Top – признак включения верхней грани (если True – верхняя грань вычерчивается, False – не вычерчивается).
Circle (X, Y: Integer; R: word)
Рисует текущим цветом окружность радиуса R с центром в точке (X, Y).
ClearDevice
Очищает графический экран, закрашивает его в цвет фона.
ClearViewPort
Очищает выделенное графическое окно, закрашивает его в цвет фона.
CloseGraph
Закрывает графический режим, т. е. освобождает память, распределенную под драйверы графики и файлы шрифтов, и восстанавливает текстовый режим работы экрана.


Ellipse (X, Y: Integer; U1, U2, XR, YR: Word)
Рисует дугу эллипса текущим цветом. X, Y – координаты центра эллипса; U1, U2 – углы до начальной и конечной точек дуги эллипса (см. процедуру Arc); XR, XY – горизонтальная и вертикальная полуоси эллипса.
Fill Ellipse (X, Y: Integer; U1, U2, XR, YR: Word)
Рисунт заштрихованный эллипс, используя X, Y как центр и XR, YR как горизонтальную и вертикальную полуоси эллипса.
FillPoly (N: Word; Var PolyPoints)
Рисует и штрихует многоугольник, содержащий N вершин с координатами в поле PolyPoints.
FloodFill(X,Y:Integer; Color: Word)
Заливка цветом площадь от точки X,Y, ограниченную цветом Color.
InitGraph (Var Driver, Mode:Int
·eger; Path: String)
Организует переход в графический режим. Переменные Driver и Mode содержат тип графического драйвера и его режим работы. Третий параметр определяет маршрут поиска графического драйвера. Если строка пустая (т.е. равна ’’), считается, что драйвер находится в текущем каталоге.
Line (X1, Y1, X2, Y2:Integer)
Рисует линию от точки X1, Y1, до точки X2, Y2.
LineTo (X,Y:Integer)
Рисует линию от текущего указателя к точке X, Y.
MoveTo (X,Y:Integer)
Смещает текущий указатель к точке X, Y.
OutTextXY (X,Y:Integer; TextString: String)
Выводит текст в заданное место экрана.
PieSlice (X,Y:Integer; U1, U2, Radius: Word)
Строит сектор круга, закрашенный текущей штриховкой и цветом заполнения. X, Y – координаты центра сектора круга; U1 и U2 – начальный и конечный углы сектора, отсчитываемые против часовой стрелки от горизонтальной оси, направленной в право; Radius – радиус сектора.
PutPixel (X,Y:Integer; Color: Word)
Выводит точку цветом Color с координатами X, Y.



5) День, ночь. По небу движется круг (Солнце, Луна) и при достижении правого края экрана идет смена цветов графических объектов (времени суток).
День: Солнце – желтый, небо – голубое, земля – светло-зеленый, окно – черный.
Ночь: Луна – белый, небо – черный, земля – темно-зеленый, окно – желтый.

Подсказка: использовать код программы из задания III(2) движение круга от левой части экрана до правой.








4) Графическое меню. При нажатии на клавиатуре одной из цифр, появляется соответствующая фигура на экране.


















Фрагмент программы:
Uses Graph, CRT;
Var Ch: Char; {переменная для хранения кода нажатой клавиши}
- - - - - - - - - - - - -
Repeat
Ch:= ReadKey;
Until Ch in [1’..’3’];
If Ch = 1’ Then {Построение соответствующей фигуры}
- - - - - - - - - - - - - -

Дополнительное задание: добавить четвертую кнопку для обработки и назвать ее «Выход». Программу зациклить и добавить фрагмент кода для очистки экрана от старой фигуры.



Rectangle (X1, Y1, X2, Y2)
Рисует контур прямоугольника, используя текущий цвет и тип линий. X1, Y1 – координаты левого верхнего угла прямоугольника; X2, Y2 - координаты левого правого нижнего угла прямоугольника.
Sector (X, Y: Integer; U1, U2, XR, YR: Word)
Рисует и штрихует сектор эллипса радиусом XR, YR с центром в X, Y от начального угла U1 к конечному углу U2.
SetBkColor (Color: Word)
Устанавливает цвет фона.
SetColor (Color: Word)
Устанавливает основной цвет рисования.
SetFillStyle (Pattern, Color: Word)
Устанавливает образец штриховки и цвета.
SetLineStyle (LineStyle, Pattern, Thickness: Word)
Устанавливает толщину и цвет линии.
SetTextStyle (Font, Direction, CharSize: Word)
Устанавливает текущий шрифт, направление (горизонтальное или вертикальное) и размер текста.
SetViewPort (X1, Y1, X2, Y2:Integer; ClipOn: Boolean)
Устанавливает прямоугольное окно на графическом экране. Параметр ClipOn определяет “отсечку” элементов изображения, не умещающихся в окне.
Функции
GetMaxX и GetMaxY
Возвращает значения максимальных координат экрана в текущем режиме работы соответственно по горизонталь и вертикали.
GraphResult
Возвращает значение GrOk, соответствующее коду 0, если все графические операции программы выполнились без ошибок, или возвращает числовой код ошибки (от -1 до -14).


Пример использования процедур модуля GRAPH

Вывод красной точки: PutPixel(10,10,LightRed);
Вывод желтой точки: PutPixel(60,10,Yellow);
Зеленая линия: SetColor(Green); Line(10,40,50,40);
Очистка экрана: ClearDevice;
Вывод текста красным цветом:
SetColor(LightRed); OutTextXY(20,20,’Текст на экране’);
Вывод точек “звездное небо”:
FOR I:=1 to 30000 DO PutPixel(Random(600), Random(300), Random(16));
Построение фиолетовой рамки:
SetColor(LightMagenta); Rectangle(330, 70, 100, 160);
Вывод закрашенного прямоугольника:
SetFillStyle(1, LightRed); Bar(420, 70, 490, 150);
Вывод трехмерного прямоугольника:
Bar3D(510, 70, 580, 150, 10, true);
Построение окружности: Circle(400, 120, 30);
Построение эллипса: Ellipse(540, 200, 0, 360, 40, 30);
Закраска области экрана:
SetFillStyle(1, LightMagenta); FloodFill(520, 200, White);

Пример составления программы
Program Primer;
uses graph;
var DriverVar, ModeVar: integer; begin DriverVar:=Detect; InitGraph(DriverVar, ModeVar,’\TP\GRAPH’);
SetColor (Yellow); Rectangle(200, 100, 400, 300);
Circle(300, 200, 100);
SetFillStyle(1, LightMagenta);
FloodFill(300, 200, Yellow);
Readln;
CloseGraph; End.


III. Анимация в графике. Задания на движение (изменение), какого либо графического предмета на экране монитора.

1) Поворот линии с оставлением следа.











2) Движение круга от левой части экрана до правой.









3) Движение прямоугольника по экрану. При столкновении со стеной смена направления движения на противоположное.



7) Всю область экрана заполнить кружками, радиуса R=10. Потребуется использование цикла и функции выдающей случайное число (Random).
(за основу можно взять вывод точек «звездное небо» из примера использования процедур модуля GRAPH).















8) Построить пирамиду (вид сверху). Для решения используется цикл и построение закрашенного прямоугольника:
SetFillStyle(1, Random(6)+10);
Bar(I*10, I*10, 640 - I*10, 480 - I*10);



I. Основы работы с графикой. Задания на построения основных графических элементов и ориентирование в системе координат.

1) Разбить экран на 4 части и в каждой вывести свою фигуру.











2) Создать составную фигуру «Узор».








3) Создать сложную фигуру «Цветок».





II. Дополнительные возможности графики. Дальнейшее изучение возможностей графики в Турбо Паскале.

1) Создать овал и закрасить область экрана внутри фигуры и с наружи, использовать разные цвета закраски.







2) Построить «бублик» и закрасить внутреннюю область желтым цветом.








3) Разбить экран на 3 части и в каждой вывести соответствующий текст.





4) Создать столбчатую диаграмму и разместить внизу года.










5) Схематически изобразить график функции.













6) Построить фрагмент шахматной доски.


1

18

17

2

3

16

Цвета:
1 - синий
2 - зеленый
11 - голубой

корабль

орудие

y

x

390

55

15

4

5

14

1 -



2 -



3 -

3

2

1

13

6

7

Подсказка:
FOR I:=1 TO 210 DO
LINE(640 - I*3, 0, I*3, 480);

Подсказка:
FOR I:=1 TO 640 DO BEGIN
SETCOLOR(15); CIRCLE(I, 200, 20);
SETCOLOR(0); CIRCLE(I, 200, 20);
END;

12

Подсказка:
BAR(600,0,640,480);
REPEAT
SETFILLSTYLE(1,0); BAR(X, 210, X+10, 200);
C:=GETPIXEL(X+12, 200);
IF C=15 THEN P:=1;
IF P=0 THEN X:=X+1 ELSE X:=X-1;
SETFILLSTYLE(1,15); BAR(X, 210, X+10, 200);
UNTIL X< -1;

11

. . .

8

закрасить

закрасить

закрасить



Рабочая область

Заголовок

Подсказка

9

2005

2004

2002

2003

Y

X

10



Заголовок 1 Заголовок 315