Работа с графическими объектами
Средства для описания графических образов содержатся в стандартном графическом модуле языка Turbo pascal или они могут быть инициированы в визуальной среде Delphi обращением к соответствующим графическим компонентам типа Pen, Brush, Canvas. Все предлагаемые формулировки графических задач абсолютно инвариантны к среде программирования. 2.1.1. Дана доска с 7 лунками. В лунках лежат 3 белых и 3 красных шара. Передвинуть все красные шары на место белых шаров. Каждый шар можно переместить либо в соседнюю с ним лунку, либо в пустую, находящуюся непосредственно за ближайшим шаром. Графический объект - это доска. 2.1.2. Игра в “прыгающие шарики”. Имеется 8 лунок. В лунках подряд установлены 4 черных шара и через пустое место 3 белых шара. Поменять местами черные и белые шары. Черные шары можно передвигать только вправо, а белые - только влево. Графический объект - это доска. 2.1.3. Перед играющим 4 закрытых двери. Имеется набор из 10 ключей. Каждый ключ может открыть только одну из дверей. Есть в наборе и лишние ключи. Открыть все двери. На экране должен быть отражен момент открытия двери. Количество попыток открыть двери не должно превышать 14. Объект, с которым выполняются все действия - это дверь. За каждую открытую дверь игроку начисляется 2 очка. Подсчитать количество набранных очков за каждую попытку открывания дверей и сумму очков за все попытки. 2.1.4. По экрану летит самолет. Пусковая установка находится в нижней правой части экрана. Пусковую установку можно перемещать по строке вправо или влево. Сбить летящий самолет. Графический объект - это самолет. Все остальное - это методы объекта-самолет. Самолет может иметь произвольные траектории полета.
2.1.5. Создать объект из множества точек на экране в форме звезд. Разработать метод вывода последовательности точек с их номерами и в произвольные места экрана в определенном порядке, допустим 1,4,2,9. В следующий раз последовательность номеров, сформированная случайным образом, будет другой. Работающий с программой должен назвать порядок вывода последовательности точек на экран. За каждый правильный ответ выставляется оценка в 1 балл. Количество точек -10, и количество наборов тоже равно 10. 2.1.6. Создать объект типа шахматной доски. Расстановку фигур можно отобразить соответствующими буквами, например, Слон --С, Король --К, а Королеву можно назвать строчной буквой --к и т.д. Случайным образом игроки садятся за доску: справа, слева или сверху, снизу. Обеспечить поворот доски к игрокам, с учетом цвета фигур для каждого из игроков. 2.1.7. Путешественник во время своего путешествия записывал информацию о маршруте в форме — пункт отправления, пункт назначения, расстояние, время в пути и комментарий (например, погода в пути). Каждая запись занимала один листочек. Все листочки перемешались. Для отчета путешественнику требуется упорядочить все сведения в форме таблицы в соответствии с направлением движения. Написать комплекс программ, позволяющий напечатать отчет о путешествии в виде упорядоченной траектории движения с изображением информации по всем пунктам движения: Откуда Куда Расстояние Время Ср. скорость Комментарий Методы объекта - траектории должны обеспечить: Ø Ввод, контроль и первичная обработка данных. Ø Формирование упорядоченного маршрута в виде списка. Ø Вывод на печать маршрута с изменением масштаба изображения. Ø Запись упорядоченного маршрута в файл. Ø Графическая иллюстрация маршрута. 2.1.8. Из файла считываются данные некоторой зависимости, например, табличные значения некоторой функции. Самый простой вариант -- это зависимость температур от месяца года. Разработать объект, который позволит вывести заданную зависимость в виде гистограммы. Методы объекта должны формировать файл исходных данных, определять количество значений, устанавливать цвет для каждого значения таким образом, чтобы рядом стоящие значения выводились разным цветом. Необходимо выводить оси, значения по осям X и Y, и изменять масштабы изображения. Исходные значения необходимо изменять и сохранять в файле.
2.1.9. Задана некоторая схема микропроцессора для которой задается N входов и M выходов. Создать объект, обеспечивающий создание временных диаграмм для каждого из входов. Временная диаграмма определяется именем входа, временем изменения значения сигнала на входе (1 изменяется на 0 или наоборот). Считается, что никаких других значений сигналов на входы не подается. Методы объекта для заданного количества входов должны обеспечить формирование входных сигналов в виде временной диаграммы, редактирование диаграммы, сохранение введенных зависимостей и вывод из файла созданных ранее последовательностей. Изображение каждой временной диаграммы должно обеспечиваться рисованием линий горизонтальных и вертикальных при изменении значения сигнала. На временной диаграмме должны отмечаться времена изменения значений сигналов. Диапазон времен может ограничиваться пределами одного экрана. 2.1.10. Нарисовать на экране клавиатуру, обеспечивающую ввод текста и чисел с клавишами переключения регистров, табуляции и всех дополнительных символов. Разработать объект, обеспечивающий работу с клавиатурой. Методы объекта должны обеспечивать вывод некоторого текста или числа, пользователь же должен правильно набрать на клавиатуре выведенное на экран изображение. При правильном наборе все нажатые клавиши в каждом сеансе набора должны изменить свой цвет, а при новом сеансе цвет восстанавливается. Количество предлагаемых наборов за каждый сеанс не более 10. За каждый правильно набранный текст выставляется 1 балл. После окончания сеанса метод объекта должен вывести результирующую оценку за работу с клавиатурой. 2.1.11. Разработать графический объект, который позволит обеспечить вывод на экран изображения некоторой схемы из произвольного количества прямоугольников, некоторого размера, который зависит от их количества и размеров экрана. Описание каждого элемента, который на экране будет нарисован прямоугольником, выполняется при вводе в следующем формате: имя блока, количество входов, количество выходов. Это описание запоминается в файле для всей представляемой схемы. Методы объекта должны обеспечить ручное соединение отдельных элементов схемы, исправление соединений.
2.1.12. Разработать программу для определения некоторой последовательности случайных чисел заданного диапазона изменения значений. Генератор случайных чисел визуально представляется геометрическим объектом типа барабана. По директиве меню барабан запускается и вращение его отображается на экране. После остановки барабана на его передней панели высвечивается очередное случайное число. Объект - это барабан с его специфическими свойствами высвечивать на его поверхности случайное число. Вся сформированная последовательность случайных чисел должна выводиться в специальное окно. Диапазон изменения случайных чисел, их количество, скорость вращения барабана устанавливаются по умолчанию и могут изменяться пользователем по запросу. 2.1.13. Разработать геометрический объект- окно произвольного размера. Количество одновременно выводимых окон - произвольное. Все множество окон можно представить в виде иерархического меню. В каждом из окон произвольная, различная информация. Кроме того размеры очередного окна в иерархии должны быть меньше предыдущего окна. Цвет фона в окнах также должен различаться. Обеспечить перемещение последовательности окон по экрану. Закрытие окна N уровня приводит к закрытию всех окон уровня большего N. 2.1.14. Работает система резервирования мест в гостинице. Для каждого корпуса имеется поэтажный план размещения номеров с указанием в этом плане гостиничного номера и количества мест в этом номере. Составить списки занятых номеров и мест в номерах и записать эти сведения в файл в произвольном порядке. По запросу пользователя обеспечить вывод в графической форме результатов обработки содержимого файлов, чтобы на экране можно было увидеть все свободные номера, занятые частично с указанием количества свободных мест и занятые номера. Каждый тип номера должен выводиться своим цветом. Методы объекта должны обеспечивать исправление сведений и отображение всех исправлений на плане.
2.1.15. Путешествие по лабиринту. Создать лабиринт. Отобразить на экране траекторию движения по лабиринту для нахожления выхода из него. Предусмотреть: а) Генерацию нового лабиринта; б) Изменение траектории движения- стирание ненужной траектории; в) Изображение путешественника по лабиринту; г) Меню для определения последовательности работы пользователя и сообщения сведений о правилах движения по лабиринту. 2.1.16. Разработать графическое изображение игры”Ханойская башня”. Вывести на экран окно с правилами игры. Обеспечить формирование прямоугольников произвольных размеров и цвета. Перемещение прямоугольников выполнять клавишами- стрелки перемещения курсора влево и вправо. Обеспечить вычисление и вывод для каждого играющего количества набранных очков. Создать список играющих с количеством набранных очков. 2.1.17. Разработать объект прямоугольник для отображения блок-схем на экране. Сздать меню для отображения заданного числа прямоугольников на экране. Обеспечить: а) перемещение прямоугольника по экрану; б) изменение размеров прямоугольника; в) Изменение цвета контура любого выбранного прямоугольника. г) ввод надписи в прямоугольник. Описать способ соединения прямоугольников в единую схему. Сохранять созданный рисунок под своим именем и выводить список созданных рисунков в специальное окно. 2.1.18. Разработать объект, обеспечивающий изображение на экране вычисления интеграла произвольной функции. Вычисление интеграла выполнять методом прямоугольников. Количество прямоугольников на заданном отрезке интегрирования должно задаваться в процессе решения задачи в соответсвующем окне диалога. Методы объекта должны обеспечивать построение графика функции, для которой считаетсч интеграл, осей координат с указанием отрезка интегрирования, вписанных прямоугольников, причем соседние прямоугольники должны изображаться разным цветом. Все получаемые значения интеграла должны выводиться в окно результатов.
ПРИМЕР 2.1 { Разработать графический объект, позволяющий вычислить значения некоторой функции, Построить график функции, вычислить среднее значение функции на отрезке. Данный пример можно рассматривать как попытку создания объекта-функции.}
Program Number_2_1; uses Graph,CRT; type Fun=object x,y: real; cx,cy: integer; Constructor Init; Destructor Done; Function Fun_sf(xx:real):real; Function Fun_sr(x1,x2:real):real; Procedure Graph_Fun; Procedure Fun_id; end; Constructor Fun.Init; Begin clrscr; Writeln('Установка начальных значений '); x:=20;{задаем начальный шаг для вычисления } y:=20; {функции и начальные координаты для графика} cx:=320;{координата оси х} cy:=400; {координата осо у} end; Function Fun.Fun_sf(xx:real):real; Begin Fun_sf:=sqr(xx)+6*xx+9; end; Function Fun.Fun_sr(x1,x2:real):real; var f1,f2:real; Begin f1:=Fun_sf(x1); f2:=Fun_sf(x2); Fun_sr:=(f2-f1)/(x2-x1); end; Procedure Fun.Graph_fun; var gd,gm:integer; xb,xe,i,j:integer; c:char; st:string; Begin gd:=detect; initgraph(gd,gm,'c:\tpp\bgi'); setcolor(yellow); line(0,cy,639,cy); {ось х} line(cx,0,cx,479); {ось у} fun_id; {установка начальных значений} for xb:=1 to 31 do Begin str(xb-17,st); outtextxy(20*(xb-1),415,st); end; xb:=0;xe:=279; for j:=1 to 2 do Begin for i:= xb to xe do Begin x:=-19+i/20; y:=Fun_sf(x); putpixel(i,-round(y*20)+300,yellow); end; xb:=281; xe:=639; end; end; Procedure fun.fun_id; Begin outtextxy(10,20,'x**2+6*x+9'); end; Destructor fun.done; Begin writeln('завершение работы'); end; { текст основной программы, которая позволит, построить график функции и найти требуемые значения} Var f:fun; Begin f.init; writeln('Значение функции в точке x= ',f.fun_sf(3.5):5:3); writeln('Среднее значение функции на отрезке[2,7]:=', f.fun_sr(2,7):5:3); readln; f.Graph_fun; readln; closegraph; f.done; readln; End.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|