50191



ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
РОССИЙСКОЙ ФЕДЕРАЦИИ

Белгородский государственный технологический университет
имени В.Г. Шухова

ИИТУС
Кафедра Информационных технологий




Курсовая работа
по технологии программирования на тему:

«Модель солнечной системы»





Выполнил студент группы ИТ- 12
Сухареев Антон Игоревич
Проверила старший преподаватель
Стативко Роза Александровна




Белгород 2009

Оглавление
13 TOC \o "1-3" \h \z \u 1413 LINK \l "_Toc232451452" 141. Постановка задачи и определение основных требований к разрабатываемому программному обеспечению 13 PAGEREF _Toc232451452 \h 1431515
13 LINK \l "_Toc232451453" 141.1. Введение 13 PAGEREF _Toc232451453 \h 1431515
13 LINK \l "_Toc232451454" 141.2. Основание для разработки 13 PAGEREF _Toc232451454 \h 1431515
13 LINK \l "_Toc232451455" 141.3.1 Назначение программного средства 13 PAGEREF _Toc232451455 \h 1431515
13 LINK \l "_Toc232451456" 141.3.2 Требования к программному средству 13 PAGEREF _Toc232451456 \h 1431515
13 LINK \l "_Toc232451457" 141.4.1. Требования к функциональным характеристикам 13 PAGEREF _Toc232451457 \h 1431515
13 LINK \l "_Toc232451458" 141.4.3. Требования к условиям эксплуатации 13 PAGEREF _Toc232451458 \h 1431515
13 LINK \l "_Toc232451459" 141.4.4. Требования к составу и параметрам технических средств 13 PAGEREF _Toc232451459 \h 1431515
13 LINK \l "_Toc232451460" 141.4.5. Требования к информационно-программной совместимости 13 PAGEREF _Toc232451460 \h 1431515
13 LINK \l "_Toc232451461" 142. Проектирование программного средства и программная реализация 13 PAGEREF _Toc232451461 \h 1441515
13 LINK \l "_Toc232451462" 142.1. Разработка модульной структуры программы 13 PAGEREF _Toc232451462 \h 1441515
13 LINK \l "_Toc232451463" 142.2. Разработка алгоритмов программы 13 PAGEREF _Toc232451463 \h 1451515
13 LINK \l "_Toc232451464" 142.2.1 Блок-схема 13 PAGEREF _Toc232451464 \h 1451515
13 LINK \l "_Toc232451465" 142.3. Описание глобальных переменных и структур 13 PAGEREF _Toc232451465 \h 1491515
13 LINK \l "_Toc232451466" 143. Заключение 13 PAGEREF _Toc232451466 \h 14101515
13 LINK \l "_Toc232451467" 144. Список литературы 13 PAGEREF _Toc232451467 \h 14111515
13 LINK \l "_Toc232451468" 14Приложение 13 PAGEREF _Toc232451468 \h 14121515
13 LINK \l "_Toc232451469" 14Текст программы 13 PAGEREF _Toc232451469 \h 14121515
15


1. Постановка задачи и определение основных требований к разрабатываемому программному обеспечению
1.1. Введение
Данное программное средство было разработано на основе следующего технического задания:

1.2. Основание для разработки
Программа разрабатывается на основе учебного плана института ИТУС, специальности Информационные Технологии.

1.3.1 Назначение программного средства
Данная программа предназначена для эмуляции модели солнечной системы.

1.3.2 Требования к программному средству
Для нормальной работы программы требуется наличие следующих файлов:
Game.exe: основная программа.
EGAVGA.BGI: драйвер для работы с графикой.

1.4.1. Требования к функциональным характеристикам
Управление по пунктам меню осуществляется с помощью клавиатуры.

1.4.3. Требования к условиям эксплуатации
Носитель, на который записана программа, не должен подвергать грубому внешнему воздействию. Хранить при влажности воздуха не более 70% и температуре 50С – 500С.

1.4.4. Требования к составу и параметрам технических средств
Необходимо наличие IBM PC – совместимого ПК с графическим адаптером EGA (VGA). Необходимое дисковое пространство – не менее 32 Кб, объем свободной оперативной памяти – не менее 50 Кб.

1.4.5. Требования к информационно-программной совместимости
Программа должна работать автономно под управлением MS DOS версии не ниже 3.3. Базовый язык программирования – Turbo Pascal 7.0.

2. Проектирование программного средства и программная реализация
2.1. Разработка модульной структуры программы


Рисунок 13 SEQ Рисунок \* ARABIC 14115. Модульная структура программного средства






2.2. Разработка алгоритмов программы
2.2.1 Блок-схема

Procedure InitGr;
Назначение: инициализация графического режима;
Входные параметры: нет;
Выходные параметры: нет;










Procedure MainMenu;
Назначение: игровое меню ;
Входные параметры: нет;
Выходные параметры: нет;


Рисунок 13 SEQ Рисунок \* ARABIC 14615. Процедура MainMenu

Procedure game;
Назначение: игровая процедура;
Входные параметры: нет;
Выходные параметры: нет;

Рисунок 13 SEQ Рисунок \* ARABIC 14715. Процедура game



Основная программа








Рисунок 13 SEQ Рисунок \* ARABIC 14915. Основная программа


2.3. Описание глобальных переменных и структур

const x=320; y=240 – центр мировых координат

ZemX, MercX,MarsX, VenerX, UpiterX, SatX,– координаты движения планет по оси X

ZemY,MercY, MarsY, VenerY, SatY,UpiterY– координаты движения планет по оси Y
VisualPage – видео страница

menu – массив строк для хранения пунктов главного меню.




3. Заключение
В данной курсовой работе были освоены навыки работы с графическим инструментарием языка Паскаль, закреплены навыки в разработке алгоритмов и работы анимацией, улучшены навыки построения блок-схем и освоено структурное программирование.

4. Список литературы
Фаронов В. В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. – М.: «Нолидж», 1998г.
Турбо Паскаль 7.0 Начальный курс. Учебное пособие. – М.: Издательство “ОМД Групп”, 2003. – 616с. : ил.

Приложение
Текст программы

Program Space;
Uses Graph, Crt,Dos;
const centrx=300;
centry=160;

procedure vretrace;
begin
repeat until port[$3da] and 8=0;
repeat until port[$3da] and 8>0;
end;

procedure game;
var ZemX, ZemY,MercX,MercY,MarsX,MarsY,VenerX,V
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
· centry+Round(83*sin((i+visualpage/7)*Pi/50-Pi/500)),2);

For i := 1 to 100 do
PutPixel(centrx+Round(110*cos((i+VisualPage/7)*Pi/50+0.65)),
centry+Round(100*sin((i+VisualPage/7)*Pi/50-Pi/500)),3);

For i := 1 to 100 do
PutPixel(centrx+Round(131*cos((i+VisualPage/7)*Pi/50+0.65)),
centry+Round(120*sin((i+VisualPage/7)*Pi/50-Pi/500)),4);

For i := 1 to 100 do
PutPixel(centrx+Round(173*cos((i+VisualPage/5)*Pi/50+0.70)),
centry+Round(155*sin((i+VisualPage/5)*Pi/50-Pi/500)),5);

For i := 1 to 100 do
PutPixel(centrx+Round(212*cos((i+VisualPage/5)*Pi/50+0.65)),
centry+Round(195*sin((i+VisualPage/5)*Pi/50-Pi/500)),6);
{--------------------------------------------------------------}
{mercury}
MercX :=centrx-Round(70*cos((i-VisualPage/5)*Pi/50+0.7));
MercY:=centry-Round(60*sin((i-VisualPage/5)*Pi/50-Pi/500));
setcolor(lightgray);
circle(MercX,MercY,4);
SetFillStyle(1,LightGray);
floodfill(MercX,MercY,lightgray);
outtextxy(MercX-13,MercY-8,'1');
{---------------------------------------------------------------}
{venera}
VenerX :=centrx-Round(90*cos((i-VisualPage/4)*Pi/50+0.7));
VenerY:=centry-Round(83*sin((i-VisualPage/4)*Pi/50-Pi/500));
setcolor(lightred);
circle(VenerX,VenerY,7);
SetFillStyle(1,Lightred);
floodfill(VenerX,VenerY,lightred);
outtextxy(VenerX-13,VenerY-10,'2');
{-----------------------------------------------------------------}
{zemlia}
ZemX:=centrX+Round(110*cos((i-VisualPage/3)*Pi/50+0.65));
ZemY:=centrY+Round(100*sin((i-1-VisualPage/3)*Pi/50-Pi/500));
setcolor(lightblue);
circle(ZemX,ZemY,7);
SetFillStyle(1,Lightblue);
setcolor(2);
circle(ZemX,ZemY,7);
SetFillStyle(1,2);
floodfill(ZemX,ZemY,2);
setcolor(blue);
circle(zemx+1,zemy+1,3);
SetFillStyle(1,blue);
floodfill(ZemX,ZemY,blue);
circle(zemx+3,zemy-3,2);
SetFillStyle(1,blue);
floodfill(ZemX+3,ZemY-3,blue);
circle(zemx-4,zemy-4,2);
SetFillStyle(1,blue);
floodfill(ZemX-4,ZemY-4,blue);
setcolor(2);
outtextxy(ZemX-13,ZemY-10,'3');
{-----------------------------------------------------------------}
MarsX:=Centrx+Round(131*cos((i-VisualPage/2)*Pi/50+0.65));
MarsY:=Centry+Round(120*sin((i-VisualPage/2)*Pi/50-Pi/500));
setcolor(6);
circle(MarsX,MarsY,4);
SetFillStyle(1, 6);
floodfill(MarsX,MarsY,6);
outtextxy(Marsx-11,MarsY-1,'4');
{---------------------------------------------------------------------}
{Upiter}
UpiterX:=Centrx+Round(173*cos((i-VisualPage/1)*Pi/50+0.7));
UpiterY:=Centry+Round(155*sin((i-VisualPage/1)*Pi/50-Pi/500));
setcolor(6);
circle(UpiterX,UpiterY,12);
SetFillStyle(1, 6);
floodfill(UpiterX,UpiterY,6);
outtextxy(Upiterx-15,UpiterY+10,'5');
{---------------------------------------------------------------------}
{Saturn}
SatX:=Centrx+Round(212*cos((i-VisualPage/5)*Pi/50+0.65));
SatY:=Centry+Round(195*sin((i-VisualPage/5)*Pi/50-Pi/500));
setcolor(9);
circle(SatX,SatY,12);
setfillstyle(1,9);
floodfill(SatX,SatY,9);
setcolor(13);
ellipse(Satx,Saty-1,29,20,28,5);
outtextxy(Satx-22,SatY+10,'6');
setcolor(9);
line(satx-10,saty-6,satx+10,saty-6);
{---------------------------------------------------------------------}
{solnce}
setcolor(yellow);
circle(300,160,30);
SetFillStyle(1, yellow);
floodfill(300,160,yellow);
For i := 1 to 100 do
line(300,160,centrx+Round(31*cos((i+VisualPage/2)*Pi/50)),centry+Round(25*sin((i+VisualPage/2)*Pi/50-Pi/500)));
{----------------------------------------------------------------}
OutTextXY(centrx+215,centry+20,'Planets');
OutTextXY(centrx+200,centry+35,'1 - Mercury');
OutTextXY(centrx+200,centry+50,'2 - Venera');
OutTextXY(centrx+200,centry+65,'3 - Earth');
OutTextXY(centrx+200,centry+80,'4 - Mars');
OutTextXY(centrx+200,centry+95,'5 - Upiter');
OutTextXY(centrx+200,centry+110,'6 - Saturn');


until keyPressed

end;
Procedure MainMenu;
Const menu:array[1..2] of string[20]=('New game!','Exit');
Var i,y1: integer;
pos:byte;
kb:char;
Begin
kb:=#1;
SetTextStyle(4,0,2);
pos:=1; y1:=centry-30;
for i:=1 to 2 do
begin
if i=pos then
begin
setcolor(1);
OutTextXY(230,y1,'New game!');
end
else begin
setcolor(15);
OutTextXY(230,y1,'Exit');
end;

y1:=y1+30;
end;
repeat
y1:=centry-30;
kb:=readkey;
case kb of
#72:if pos>1 then
Dec(pos)
else pos:=3;

#80:if pos<2 then
Inc(pos)
else pos:=1;
end;

for i:=1 to 2 do
begin
if i=pos then
begin
setcolor(1);
OutTextXY(230,y1,menu[i]);
end
else begin
setcolor(15);
OutTextXY(230,y1,menu[i]);
end;
y1:=y1+30;
end;
until kb=#13;
begin
if pos=1 then begin game;
cleardevice;
end;

if pos=2 then
halt;
end;

end;

procedure grinit;
var GrMode, GrError,GrDriver:Integer;

begin
GrDriver := EGA; GrMode := EGAHi;
InitGraph(GrDriver, GrMode, 'C:\TP\BGI');
GrError := GraphResult;
end;
Var
ch:char;
{ k:integer;}

BEGIN
Grinit;
MainMenu;


END.








13PAGE 15


13PAGE 14215




конец

начало

MainMenu

GrDriver := EGA;
GrMode := EGAHi;
InitGraph(GrDriver, GrMode, 'C:\TP\BGI');
GrError := GraphResult;


InitGr

возврат

InitGr



Заголовок 1 Заголовок 2 Заголовок 3 Заголовок 8 Заголовок 915

Приложенные файлы

  • doc 10987388
    Размер файла: 207 kB Загрузок: 0

Добавить комментарий