Отправляет email-рассылки с помощью сервиса Sendsay

Дистанционное обучение

  Все выпуски  

Уроки и методика преподавания информатики для учителей движение объектов в паскале способ №1 www.thl.narod.ru


Создание иллюзии движения Создать видимость движения изображения на экране можно несколькими способами. Рассмотрим два из них. I способ. Имитация движения объекта на экране за счет многократного выполнения программой набора действий: нарисовать – пауза – стереть (нарисовать в том же месте цветом фона) – изменить координаты положения рисунка. Перед началом составления программы надо продумать описание «двигающегося» объекта, характер изменения координат, определяющих текущее положение объекта, диапазон изменения и шаг. Упражнение 1. Изучить текст программы, которая рисует модель атома. Проверить ее действие. program Model_At; uses Crt, Graph; const Ra=100; {радиус атома} Rc=10; {радиус ядра} Re=4; {радиус электрона} k=0.5; {коэффициент сжатия орбит электронов} Dr=30; {параметр изменения координат электрона} Step1=0.2; {шаг изменения положения электрона} Step=100; {время задержки – скорость движения электронов} var cx, cy, y, y1, y2, x, x1, x2, x3,y3:integer; I, I1, I2, I3: real; gd, gm: integer; begin clrscr; gd:=detect; initgraph(gd, gm, ‘путь к драйверу’); SetTextStyle(0, 0, 2); OutTextXY(200, 30, ‘Модель атома’); cx:=GetMaxX div 2; {определить центр экрана- положение ядра} cy:=GetMaxY div 2; PieSlice(cx, cy, 0, 360, Rc);{нарисовать ядро атома} SetColor(Red); SetLineStyle(0, 0, 3); Line(cx-7, cy, cx+7, cy); Line(cx, cy-5, cx, cy+5); SetLineStyle(0,0,1); SetFillStyle(1,1); I:=Pi/4; {задать начальное положение 4 электронов} I1:= - Pi/4; I2:= - Pi/2; I3:= Pi/2; SetTextStyle(0, 0, 1); SetColor(yellow); OutTextXY (180, 420,’Для отмены нажмите любую клавишу’); While not KeyPressed do {повторять, пока не нажата любая клавиша } begin {определить координаты электронов} x:=Round (Ra*cos(I)) +cx; Y:= Round(k+Ra*sin(I)) +cy; x1:= Round((Ra+Dr)*cos(I1)) +cx; y1:= Round (k*(Ra+Dr)*sin(I1)) +cy; x2:= Round((Ra-Dr)*cos(I2)) +cx; y2:= Round (k*(Ra-Dr)*sin(I2)) +cy; x3:= Round((Ra-Dr)*cos(I3)*2.3) +cx; y3:= Round (k*(Ra-Dr)*sin(I3)*2.3) +cy;{установить синий цвет и нарисовать электроны} SetColor(1); Circle(x, y, Re); PutPixel(x, y, 2); Circle(x1, y1, Re); PutPixel(x1, y1, 2); Circle(x2, y2, Re); PutPixel(x2, y2, 2); Circle(x3, y3, Re); PutPixel(x3, y3, 2); Delay(Step); {нарисовать электроны цветом фона} SetColor(0); Circle(x, y, Re); PutPixel(x, y, 2); Circle(x1, y1, Re); PutPixel(x1, y1, 2); Circle(x2, y2, Re); PutPixel(x2, y2, 2); Circle(x3, y3, Re); PutPixel(x3, y3, 2); {задать изменение положения электронов} I:=I + Step1; I1:=I1 – Step1; I2:=I2 + Step1; I3:=I3 + Step1; end; {конец цикла} CloseGraph; end.

В избранное