Элективный курс анимации в языке Pascal ABC
элективный курс по информатике и икт (8 класс)
В целях повышения интереса к изучению языков программирования в 8 классе, а также для закрепления материала из алгебры и геометрии (координаты на плоскости) учащимся предлагается попробовать свои силы в создании простейшей компьютерной игры на экране компьютера с управлением с клавиатуры
Скачать:
Вложение | Размер |
---|---|
elektivnye_zanyatiya_8_kl.docx | 28.11 КБ |
Предварительный просмотр:
Развитие познавательных интересов и творческих способностей учащихся 9-х классов посредством анимации в Pascal ABC
Федоров Максим Евгеньевич-
учитель информатики МБОУ СОШ № 35,
г. Улан-Удэ
Информатика имеет очень большое и всё возрастающее число междисциплинарных связей, причём как на уровне понятийного аппарата, так и на уровне инструментария. Многие положения, развиваемые информатикой, рассматриваются как основа создания и использования информационных и коммуникационных технологий (ИКТ) — одного из наиболее значимых технологических достижений современной цивилизации. Вместе с математикой, физикой, химией, биологией курс информатики закладывает основы естественно-научного мировоззрения. Цели, на достижение которых направлено изучение информатики в школе, определены исходя из целей общего образования, сформулированных в концепции Федерального государственного стандарта общего образования. Они учитывают необходимость всестороннего развития личности учащихся, освоения знаний, овладения необходимыми умениями, развития познавательных интересов и творческих способностей, воспитания черт личности, ценных для каждого человека и общества в целом.
Язык программирования Паскаль включен в программу 11-го класса и используется в основном для обучения конструкции языка, алгоритмов, методики написания программ. При программировании включается абстрактное мышление, что в силу возрастных особенностей школьника быстро утомляет. Ребенку хочется сразу видеть результаты своего труда. Решить эту проблему позволяет решить использование графических возможностей системы программирования PascalАВС, где можно создавать не только простые рисунки, но и анимацию. Графика является довольно интересной областью программирования и, несомненно, является вспомогательным средством для визуализации результатов, динамики выполнения алгоритмов.
Предлагается раздел элективного курса по информатике для учащихся 8-х классов по созданию анимации в среде программирования Pascal ABC.
Цель курса: освоение навыков создания движущихся графических изображений и самостоятельная разработка анимационного проекта в среде программирования PascalАВС. Курс рассчитан на 5 часов.
Урок №1.
Цель урока: познакомить учеников с организацией анимации в языке PascalABC.
Поскольку на уроках ученики уже знакомились с графикой, они знают основные функции модуля GraphABC :
setwindowsize, circle, setbrushcolor, setpencolor, clearwindow и т.п.
Задание 1: пишем программу, которая заставляет шарик двигаться по заданной таектории (квадрат):
uses graphabc;
var i:integer;
begin
setwindowsize(400,400);
setwindowtitle(‘Bubble’);
for i:=100 to 300 do
begin
setbrushcolor(clred);
circle(100,100,20);
circle(100,300,20);
circle(300,300,20);
circle(300,100,20);
setbrushcolor(clblue);
circle(i,100,20);
clearwindow;
end;
end.
Запускаем программу, шарик двигается но мерцает. Объясняем: мерцание происходит от того, что компьютер рисует шарики в режиме реального времени. Чтобы убрать мерцание используем функции: lockdrawing(которая рисует картинку в буфер) и redraw(которая выгружает уже нарисованную картинку из буфера на экран).
Вносим в программу изменения:
uses graphabc; var i:integer; begin setwindowsize(400,400); setwindowtitle(‘Bubble’); lockdrawing; for i:=100 to 300 do begin setbrushcolor(clred); circle(100,100,20); circle(100,300,20); | circle(300,300,20); circle(300,100,20); setbrushcolor(clblue); circle(i,100,20); redraw; clearwindow; end; end. |
Запускаем, смотрим: все работает нормально. Задание для самостоятельной работы:
Добавить три оставшихся траектории. (подсказка: скопировать полностью цикл for и вставить его трижды в программу, меняя данные для движущегося шарика).
uses graphabc; var i:integer; begin setwindowsize(400,400); setwindowtitle(‘Bubble’); lockdrawing; for i:=100 to 300 do begin setbrushcolor(clred); circle(100,100,20); circle(100,300,20); circle(300,300,20); circle(300,100,20); setbrushcolor(clblue); circle(i,100,20); redraw; clearwindow; end; for i:=100 to 300 do begin setbrushcolor(clred); circle(100,100,20); circle(100,300,20); circle(300,300,20); circle(300,100,20); setbrushcolor(clblue); circle(300,i,20); redraw; clearwindow; end; | for i:=100 to 300 do begin setbrushcolor(clred); circle(100,100,20); circle(100,300,20); circle(300,300,20); circle(300,100,20); setbrushcolor(clblue); circle(400-i,300,20); redraw; clearwindow; end; for i:=100 to 300 do begin setbrushcolor(clred); circle(100,100,20); circle(100,300,20); circle(300,300,20); circle(300,100,20); setbrushcolor(clblue); circle(100,400-i,20); redraw; clearwindow; end; end. |
Урок №2.
Цель занятия: ознакомить учеников с движением тела по свободной траектории с отбиванием от границ окна.
Пусть наш шарик двигается внутри окна размером 300*600
Введем координаты для центра шарика: (x0+i*n,y0+i*m) где x0,y0 – начальные координаты, i – параметр обеспечивающий движение, а m,n – принимаю значение -1 или 1 и отвечают за направление движения. (в целях упрощения принимаем траекторию движения шарика под углом 45 градусов к одной из осей координат).
Тогда программу будем писать по блокам:
1 блок: (начальные условия)
x0:=100; y0:=100; m:=1; n:=1; i:=0;
значит наш шарик начинает движение из точки (100,100) и двигается вправо вниз.
Рассматриваем движение в цикле while do :
while i<1000 do
begin
circle(x0+i*n,y0+i*m,30);
inc(i);
clearwindow;
end;
И тут же проговариваем последовательность действий словами: проверили условие, нарисовали, сдвинули, стерли, проверили условие и т.д.
Рассматриваем столкновение шарика с правой стенкой окна. Шарик, двигаясь вправо вниз отобъется от стенки и станет двигаться влево-вниз. То есть параметр m не изменится, а параметр n поменяет свой знак на противоположный и наш шарик начнет НОВОЕ движение от точки столкновения со стенкой. Тогда с помощью условного оператора описываем весь процесс удара и отскока:
if x0+i*n=270
then
begin x0:=270; y0:= y0+i*m; n:=-1*n; i:=0; end;
Задание для самостоятельной работы:
Добавить удары о три оставшиеся стенки. (подсказка: скопировать полностью оператор и вставить его трижды в программу, меняя точки столкновения и направление движения ).
Окончательно получаем:
uses graphabc; var i,x0,y0,n,m:integer; begin setwindowsize(300,600); setwindowtitle(‘Bubble’); lockdrawing; x0:=100; y0:=100; m:=1; n:=1; i:=0; while i<1000 do begin circle(x0+i*n,y0+i*m,30); inc(i); clearwindow; if x0+i*n=270 {для правой границы} then begin x0:=270; y0:= y0+i*m; n:=-1*n; i:=0; end; | if y0+i*m=30 {для верхней границы} then begin y0:=30; x0:=xy0+i*n; m:=-1*m; i:=0; end; if x0+i*n=30 {для левой границы} then begin x0:=30; y0:= y0+i*m; n:=-1*n; i:=0; end; if y0+i*m=570 {для нижней границы} then begin y0:=570; x0:= x0+i*n; m:=-1*m; i:=0; end; end; {для цикла while} end. |
Запускаем программу и смотрим – правильно ли она работает.
Урок №3.
Цель урока: создание подставки, которая будет отбивать шарик на высоте 500.
Внутри программы мы задаем ее рядом с оператором, который рисует шарик стандартной функцией рисования прямоугольника:
Rectangle (x,500,x+90,510);
Где переменная x – это левый край подставки, длина ее 90, а высота – 10 пикселей. Новую переменную сразу добавим в раздел VAR
Теперь зададим закон для движения подставки в виде процедуры:
procedure KeyDown(Key: integer);
begin
case Key of
VK_Left: x:=x-10;
VK_Right: x:=x+10;
end;
Здесь подставка управляется стрелками «->» и «<-» на клавиатуре. Каждое нажатие смещает подставку на 10 пикселей.
Подключим служебный модуль событий Events директивой Uses и получим теперь:
uses GraphABC,Events; var x,y,i,x0,y0,m,n,k: integer; procedure KeyDown(Key: integer); begin case Key of VK_Left: x:=x-10; VK_Right: x:=x+10; end; end; begin setwindowsize(300,600); setwindowtitle(‘Bubble’); lockdrawing; x0:=100; y0:=100; m:=1; n:=1; i:=0; while i<1000 do begin circle(x0+i*n,y0+i*m,30); inc(i); clearwindow; if x0+i*n=270 then begin x0:=270; y0:= y0+i*m; n:=-1*n; i:=0; end; | if y0+i*m=30 then begin y0:=30; x0:=xy0+i*n; m:=-1*m; i:=0; end; end; if x0+i*n=30 then begin x0:=30; y0:= y0+i*m; n:=-1*n; i:=0; end; end; if y0+i*m=570 then begin y0:=570; x0:= x0+i*n; m:=-1*m; i:=0; end; end; end; end. |
Задание для самостоятельной работы:
Теперь необходимо научить подставку отбивать шарик. Для этого внутри основного цикла программы размещаем еще один условный оператор if. Поскольку отбивание шарика от подставки аналогично отбиванию шарика от нижней границы окна, ученики пишут ее самостоятельно. Учитель пишет на доске только дополнительное условие – что шарик находится именно «внутри» границ подставки:
If (x
И, окончательно, получаем:
If (x
begin y0:=470; x0:= x0+i*n; m:=-1*m; i:=0; end;
Урок №4.
Цель урока: прописать условия выигрыша и проигрыша.
Для этой цели используем функцию textout:
Если шарик коснется нижней границы окна – это проигрыш. Тогда внутри оператора if y0+i*m=570 меняем содержимое:
if y0+i*m=570
then
begin
clearwindow(clwhite);
SetBrushColor(clWhite);
SetFontColor(clred);
textout(100,300,'You loose! Game over!');
redraw;
sleep (5000);
break;
end;
Напишем условие выигрыша. Допустим, что для этого нужно отбить шарик 5 раз, тогда вводим новую переменную “k” которая будет считать сколько раз мы отбили шарик:
If (x
Begin k:=k+1; y0:=470; x0:= x0+i*n; m:=-1*m; i:=0; end;
Задание для самостоятельной работы:
И внутри цикла еще один условный оператор аналогичный предыдущему:
If k=5 then
begin
clearwindow(clwhite);
SetBrushColor(clWhite);
SetFontColor(clred);
textout(100,300,'You win! Game over!');
redraw;
sleep (5000);
break;
end;
Урок №5.
Цель урока: раскрасить игру.
Весь урок ученики работают самостоятельно. Устраняют недоделки, если есть. Используя операторы setbrushcolor, setpencolor, clearwindow и т.п. раскрашивают поле игры, шарик и подставку в выбранные ими цвета.
Все! Проверяем, запускаем и играем!
Подобные занятия интересны учащимся, способствуют развитию пространственного воображения и логического мышления, закрепляют навыки программирования, конструирования и проектирования. Приобщают учащихся к творческому процессу, вырабатывают терпение и трудолюбие.
По теме: методические разработки, презентации и конспекты
Программа элективного курса по русскому языку «ГИА: курс подготовки к экзамену по русскому языку в новой форме. 9 класс»
Программа элективного курса по русскому языку позволяет эффективно подготовить учащихся 9 класса к экзамену по русскому языку в новой форме....
Элективный курс по русскому языку "ГИА: курс подготовки к написанию сжатого изложения и "
Итоговая аттестация в IX классе является важнейшим этапом в подготовке обучающихся к единому государственному экзамену в XI классе. Предлагаемый элективный курс предназначен для учащихся 9 классов и р...
Программа факультативного курса "Программирование на языке Pascal"
Курс рассчитан на 35 часов. Для учащихся 10 классов....
Элективный курс по русскому языку "Практическая стилистика в курсе русского языка"
Материал - Элективный курс по русскому в 9 классе "Практическая стилистика в курсе русского языка" содержит рабочую программу по курсу и календарно - тематическое планирование. Курс содержит 34 урока....
итоговая работа по курсу "Программирование на языке Pascal"
Программирование на языке Pascal. Итоговая работаВ конце обучения по курсу каждый ученик должен сдать на бумажном носителе решенные задачи по всем основным разделам курса, в каждом разделе по 5 задани...
Факультативный курс по русскому языку для 10 класса "Искусство устной и письменной речи" по пособию С.И. Львовой «Программы факультативных и элективных курсов по русскому языку. 5-11 классы»
Рабочая программа разработана в соответствии с современными требованиями....
Рабочая программа элективного курса "Программирование на языке Pascal"
Программа элективного курса «Программирование на языке Pascal» разработана на основе авторской программы элективного курса «Программирование на языке Pascal» ...