Результаты тестового запуска
Оглавление Введение...................................................................................................... 3 Постановка задачи....................................................................................... 3 Технологии.................................................................................................. 3 Описание модулей....................................................................................... 4 Текст программы.......................................................................................... 5 Результаты тестового запуска...................................................................... 7 Заключение.................................................................................................. 8 Литература.................................................................................................. 9
Введение
Постановка задачи В данной курсовой работе основной задачей являлось создание модели эстафеты по плаванию в бассейне. В бассейне 4 дорожки по 4 человека в команде. Участники одной команды - одного цвета. Сами команды – разного цвета. Каждый плывет “туда” и “назад”. Первые участники стартуют одновременно, а следующий член команды – в момент финиша предыдущего члена своей команды. Каждый участник плывет с постоянной скоростью V=V1+(V2-V1)*Random, где V1 и V2 -заданные константы. В конце фиксируется общее время всей команды, и высвечиваются результаты всех 4-х команд.
Технологии Данный проект был выполнен на объектно-ориентированном языке высокого уровня Pascal в составе PascalABC.
Описание модулей
Модуль GraphABC Функции этого модуля представляют собой простую графическую библиотеку и предназначен для создания несобытийных графических и анимационных программ в процедурном и частично в объектном стиле.
Модуль ABCObjects В задачи этого модуля входит реализация векторных графических объектов с возможностью масштабирования, наложения друг на друга, создания составных графических объектов и многократного их вложения друг в друга. Каждый векторный графический объект корректно себя перерисовывает при перемещении, изменении размеров и частичном перекрытии другими объектами.
Модуль Timers Этот модуль содержит класс Timer, позволяющий выполнять определенные действия через равные промежутки времени. В конструкторе класса Timer указывается промежуток времени и имя процедуры без параметров - обработчика события таймера, вызываемой через указанный промежуток времени. Текст программы
uses ABCObjects,GraphABC,Timers; {Подключение необходимых модулей}
Var i1,i2,i3,i4:integer; {Переменная для процедуры Second} c1,c2,c3,c4:CircleABC; {Объекты - круги, условные обозначения пловцов} y1,y2,y3,y4:integer; {Координаты пловцов по у} x1,x2,x3,x4:integer; {Координаты пловцов по х} z1,z2,z3,z4:integer; {Случайная скорость пловцов} v1,v2:integer; {Величина, необходимая для задания случайной скорости пловцов} k1,k2,k3,k4:integer; {Переменные, необходимые для определения положения пловцов} t1,t2,t3,t4:integer; {Таймеры команд}
procedure second; {Таймер} Begin inc(i1); inc(i2); inc(i3); inc(i4); end;
Begin writeln('Enter v1 and v2:'); {Величина заданная по условию} readln(v1,v2); i1:=0; {Инициализация счетчика} i2:=0; i3:=0; i4:=0; setwindowsize(300,500); {Размер экрана} clearwindow(clBlue); {Заливка окна синим} x1:=40; {Координаты дорожек для команд пловцов} x2:=100; x3:=160; x4:=220; y1:=1; {Начальные координаты пловцов} y2:=1; y3:=1; y4:=1; k1:=0; {Инициализация переменных событий} k2:=0; k3:=0; k4:=0; randomize; {Задание случайных скоростей} z1:=v1+(v2-v1)*random(7); z2:=v1+(v2-v1)*random(7); z3:=v1+(v2-v1)*random(7); z4:=v1+(v2-v1)*random(7); c1:= new CircleABC(x1,y1,20,clYellow); {Прорисовка спортсменов} c2:= new CircleABC(x2,y2,20,clCyan); c3:= new CircleABC(x3,y3,20,clGreen); c4:= new CircleABC(x4,y4,20,clRed);
Repeat t1:=CreateTimer(1000,Second); {Ежесекундный запуск таймера} t2:=CreateTimer(1000,Second); t3:=CreateTimer(1000,Second); t4:=CreateTimer(1000,Second); c1.MoveTo(x1,y1); {Движение пловцов} c2.MoveTo(x2,y2); c3.MoveTo(x3,y3);
c4.MoveTo(x4,y4); sleep(10); {Ожидание} if ((k1=0) or (k1=2) or (k1=4) or (k1=6)) then y1:=y1+z1; {Изменение координат} if ((k2=0) or (k2=2) or (k2=4) or (k2=6)) then y2:=y2+z2; if ((k3=0) or (k3=2) or (k3=4) or (k3=6)) then y3:=y3+z3; if ((k4=0) or (k4=2) or (k4=4) or (k4=6)) then y4:=y4+z4; if ((k1=1) or (k1=3) or (k1=5) or (k1=7)) then y1:=y1-z1; if ((k2=1) or (k2=3) or (k2=5) or (k2=7)) then y2:=y2-z2; if ((k3=1) or (k3=3) or (k3=5) or (k3=7)) then y3:=y3-z3; if ((k4=1) or (k4=3) or (k4=5) or (k4=7)) then y4:=y4-z4; {Пловец достиг финиша, задание скорости для следующего из его команды} if y1<0 then begin randomize; z1:=v1+(v2-v1)*random(7); inc(k1); y1:=0; end; if y2<0 then begin randomize; z2:=v1+(v2-v1)*random(7); inc(k2); y2:=0; end; if y3<0 then begin randomize; z3:=v1+(v2-v1)*random(7); inc(k3); y3:=0; end; if y4<0 then begin randomize; z4:=v1+(v2-v1)*random(7); inc(k4); y4:=0; end; {Пловец достиг другой стороны бассейна, поворот назад} if y1>480 then begin y1:=480; inc(k1); end; if y2>480 then begin y2:=480; inc(k2); end; if y3>480 then begin y3:=480; inc(k3); end; if y4>480 then begin y4:=480; inc(k4); end; {Проверка победы желтого} if (k1=12) and (k2<>12) and (k4<>12) and (k3<>12) then begin clearwindow(clYellow); setbrushcolor(clyellow); textout(100, 100,'Yellow win! ',t1); End Else {Проверка победы бирюзового} if (k1<>8) and (k2=8) and (k4<>8) and (k3<>8) then begin clearwindow(clCyan); setbrushcolor(clcyan); textout(100, 100,'Cyan win! ',t2); End Else {Проверка победы зеленого} if (k1<>8) and (k2<>8) and (k4<>8) and (k3=8) then begin clearwindow(clGreen); setbrushcolor(clGreen); textout(100, 100,'Green win! ',t3); End Else {Проверка победы красного} if (k1<>8) and (k2<>8) a nd (k3<>8) and (k4=8) then begin clearwindow(clRed); setbrushcolor(clRed); textout(100, 100,'Red win! ',t4); End {Иначе-нет победителя} Else if (k1=8) or (k2=8) or (k3=8) or (k4=8) then begin clearwindow(clWhite); setbrushcolor(clwhite); textout(100, 100,'No Winner'); textout(100, 200,'Yellow ',t1); textout(100, 250,'Cyan ',t2); textout(100, 300,'Green ',t3); textout(100, 350,'Red ',t4); end; {Повтор, пока одна из команд не проплыла 4 раза} until (k1=8) or (k2=8) or (k3=8) or (k4=8); end. Результаты тестового запуска
Программа начинается с ввода v1 и v2, необходимых для расчета случайной скорости пловцов. Далее следует анимация спортсменов в бассейне. После того, как одна из команд достигла финиша – выводится либо общие результаты, в случае, когда победителя нет, либо результат команды победителя в секундах.
Заключение Объектно-ориентированное программирование является в настоящее время основой всей индустрии прикладного программирования благодаря выигрышу в конкурентной борьбе с альтернативными технологиями программирования. В промышленном программировании только в системном программировании позиции объектно-ориентированного программирования еще не очень сильны. Поэтому, с одной стороны, теоретические рассуждения о непригодности объектно-ориентированного программирования не соответствуют наблюдаемой на практике ситуации. С другой стороны, нельзя считать, что объектно-ориентированное программирование во всех случаях является наилучшей из методик программирования.
Процедурное программирование лучше подходит для случаев, когда важны быстродействие и потребляемые ресурсы, объектное - когда важна управляемость проекта и его модифицируемость, а также безопасность программ. Процедурное программирование обычно лучше подходит для небольших проектов, объектное - для больших.
Литература 1.Курс лекций по объектно-ориентированному программированию, электронная версия, Веренинов И.А., 2012 2.Методические указания к курсовому проектированию по курсам “ООП”, “Структуры и алгоритмы обработки данных”, “Технология программирования”, “Основы программирования” для студентов кафедры “ИУС”, ФТК, Веренинов И.А., 2012
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|