Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Результаты тестового запуска

Оглавление

Введение...................................................................................................... 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...