русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Движение картинок по экрану


Дата добавления: 2014-11-27; просмотров: 1912; Нарушение авторских прав


Идею создания иллюзии движения картинок по экрану я объяснил в 2.8. Попробуем заставить двигаться по экрану слева направо окружность. Для этого мы должны сначала нарисовать слева окружность и тут же стереть ее, для чего нарисовать ее на том же месте, но черным цветом. Несмотря на то, что мы окружность тут же стерли, она успеет мелькнуть на экране, и глаз это заметит. Затем нужно нарисовать и стереть такую же окружность чуть правее, затем еще правее и т.д. Вот программа:

USES Graph;

VAR x, Device, Mode : Integer;

BEGIN

Device:=0;

InitGraph(Device, Mode, ’<путь к графическим драйверам>’);

ReadLn; {Переключение в графический режим иногда занимает одну-две секунды, поэтому, если вы хотите увидеть движение с самого начала, щелкните по клавише ввода через пару секунд}

x:=40;

repeat

SetColor(White);

Circle(x,100,10); {Рисуем белую окружность}

SetColor(Black);

Circle(x,100,10); {Рисуем черную окружность}

x:=x+1 {Перемещаемся немного направо}

until x>600;

CloseGraph

END.

Когда вы попробуете выполнить эту программу на компьютере, изображение движущейся окружности может получиться некачественным - окружность в процессе движения может мерцать и пульсировать. Это связано с разверткой электронно-лучевой трубки вашего монитора. Попробуйте изменить радиус окружности или шаг движения по горизонтали или введите между рисованием и стиранием окружности небольшую паузу процедурой Delay - ситуация почти наверняка улучшится.

Задание 88:. Измените скорость движения. Если окружность движется небыстро, увеличьте скорость (x:=x+2), если слишком быстро – уменьшите процедурой Delay.

Задание 89:. Пусть одновременно движутся две окружности.

Задание 90:. Одна вниз, другая направо.

Задание 91:. Заставьте окружность отскочить от правого края экрана.

Задание 92:. Заставьте окружность бесконечно двигаться, отскакивая от правого и левого краев экрана.



Если вы будете рисовать окружности толстой линией, то увидите, что движение сильно замедлилось, так как толстая линия рисуется гораздо дольше тонкой. То же относится и к закрашенной окружности.

Задание 93:. “Биллиардный шар”. Нарисуйте «биллиардный стол» – большой прямоугольник. Окружность под углом летает по столу, отскакивая от его краев по закону отражения. Попав “в лузу” (любой из четырех углов стола), останавливается.

Задание 94: Изобразите полет камня, брошенного с башни, для задания из 6.3. Напоминаю условие задания. Камень бросили горизонтально со 100-метровой башни со скоростью v=20м/с. Его расстояние от башни по горизонтали (s) выражается формулой s=v*t, где t – время полета камня в секундах. Высота над землей h выражается формулой h=100 – 9.81*t2/2. Нарисуйте башню, землю, камень (маленькая окружность). Затем камень летит. Добейтесь, чтобы время полета камня на экране примерно соответствовало реальному времени, полученному в 6.3. Нарисуйте траекторию полета камня. Для этого достаточно, чтобы камень оставлял за собой следы в виде точек.

Указание: В задаче говорится о метрах, а на экране расстояние измеряется в пикселах. Поэтому вам придется задать масштаб, то есть вообразить, что один пиксел равен, скажем, одному метру. Тогда высота башни будет равна 100 пикселам, а скорость камня – 20 пикселов в секунду Правда, картинка на экране в этом случае может показаться вам маловатой. Тогда можете задать другой масштаб – один метр, скажем, - четыре пиксела. Тогда высота башни будет равна 400 пикселам, скорость камня – 80 пикселов в секунду, а формула изменится - h=4*(100 – 9.81*t2/2).

Задание 95 (сложное): Сделайте игру: Пушка на экране стреляет в цель ядрами. С какого выстрела она поразит противника? Между пушкой и целью расположена небольшая гора. Перед началом игры случайно задается горизонтальная координата цели. Затем рисуется картинка.

 

Перед каждым выстрелом компьютер отображает на экране номер выстрела и запрашивает у человека стартовую скорость ядра v и угол a наклона ствола пушки к земле. Затем летит ядро. Полет ядра подчиняется двум уравнениям: s=v*t*cosa и h=v*t*sina – 9.81*t2/2 (см. предыдущее задание). Считается, что цель поражена, если ядро «отгрызло» от нее хоть маленький кусочек.

Я рассмотрел основные простые возможности модуля Graph. Некоторые другие средства модуля будут рассмотрены в Глава 15.

 



<== предыдущая лекция | следующая лекция ==>
Использование случайных величин при рисовании | Постановка задачи


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.268 сек.