Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »ПРОГРАММИРОВАНИЕ

Разработка алгоритмов и программ

Тип: отчет по практике
Категория: ПРОГРАММИРОВАНИЕ
Скачать
Купить
Принципы разработки алгоритмов и программ на основе процедурного подхода и на основе объектно-ориентированного подхода. Реализация программы Borland Pascal 7.0, ее интерфейс. Разработка простой программы в среде визуального программирования Delphi.
Краткое сожержание материала:

Размещено на

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

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

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

ТАГАНРОГСКИЙ ГОСУДАРСТВЕННЫЙ РАДИОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра вычислительной техники

ОТЧЕТ

о выполнении практических занятий

по курсу

Технология программирования

1. Практическое задание 1. Разработка алгоритма и программы на

основе процедурного подхода

Цель работы: Ознакомиться с принципами разработки алгоритмов и программ на основе процедурного (функционального) подхода с использованием рекомендаций структурного программирования. Разработать программу на основе предлагаемого базового алгоритма в соответствии с заданным вариантом.

Содержание задания:

Разработать алгоритм и программу игры на основе процедурного (функционального) подхода с использованием рекомендаций структурного программирования. Алгоритм представить в виде блок-схем, построенных методом последовательной детализации. Реализация программы - Borland Pascal 7.0 для MS DOS, графический режим.

Все варианты имеют единое базовое содержание.

Правила игры. В игре предлагается поразить заданное количество мишеней из пушки (ружья, лука, вертолета и т.п). Мишени появляются последовательно по одной в разных точках заданной области на некоторый (одинаковый) интервал времени.

Стрельба ведется снарядами (пулями, стрелами, ракетами и т.д.), полет которых должен изображаться, но в полете может находиться только один (одна) из них.

Для управления пушкой (ружьем, …) используются клавиши наведения (“к1”и ”к2”) и выстрела “к3”, на каждую мишень можно истратить несколько снарядов (пуль, стрел, ракет и т.п.).

Если мишень сбита одним из первых выстрелов, то это приносит игроку больше очков, сэкономленные снаряды игнорируются или сохраняются (см. варианты).

Условие задания (Вариант 18-9=9):

Интерфейс

Пояснения

к1, к2, к3

9

Размещено на

Стрельба ведется из лука, который находится внизу, в центре экрана, и может поворачиваться влево-вправо. Мишени появляются в верхней части экрана у левой или правой его стороны, всего в игре мишеней - 20. Стрел на мишень - 1, время на наведение -5 сек. Сэкономленные стрелы -дополнительные очки.

*) При нажатой Ctrl - направление стрельбы меняется вдвое быстрее.

“” “”

“”

Интерфейс программы (рисунок):

Размещено на

Интерфейс программы:

Алгоритм задачи, разработанный на основе базового алгоритма (его блок-схемы) находится в файле Ris_1.vsd.

Текст программы (STRELA.PAS):

program Strela; {Вариант 18-9=9}

uses Crt,Graph,Dostimer;

const LukX=320; LukY=475; {Координаты центра дуги лука}

fi1=350; fi2=190; {Угол дуги лука: начало дуги - fi1, конец - fi2}

RadL=25; {Радиус дуги лука}

RadM=14; {Радиус мишени}

MishenNum=20; {Число мишеней}

Ctrl=$0004; {Для определения нажатия клавиши Ctrl (ускорение стрелы)}

label Play_again; {Метка возврата к началу по окончании игры}

var Score:integer; {Счётчик очков}

MishenX,MishenY:integer; {Координаты мишени}

Device,Mode:integer; {Для граф. режима}

i:integer; {Кол-во появившихся мишеней}

Left_Right:byte; {Определяет положение мишени - слева, или справа}

stX,stY,stX1,stY1:integer; {Координаты стрелы}

So:integer; {Счётчик отклонения стрелы}

Ugol:real; {Угол наклона стрелы}

Key:char; {Клавиша управления стрелой}

Time:integer; {Используется таймером - время наведения - 5 секунд}

Num:String; {Промежуточная переменная для вывода цифр в граф. режиме}

begin

Play_again:{Метка возврата к началу по окончанию игры}

Randomize; {Для генерир. случайных чисел}

Device:=Detect;

Mode:=Detect;

InitGraph (Device,Mode,'D:\tp\BGI'); {Инициализ. граф. режима}

Score:=0; {Очки}

Time:=5; {Время стрельбы на одну мишень}

i:=0; {Счётчик оставшихся мишеней}

while i<MishenNum do begin {Общий цикл стрельбы по очередной мишени}

i:=i+1; {Увеличить счётчик оставшихся мишеней}

ClearDevice; {Очистить экран}

MishenY:=14+(Random(106)); {Верт. коорд. случайная}

Left_Right:=random(2); {Положение мишени: слева, или справа}

case Left_Right of

0: MishenX:=15;

1: MishenX:=625;

end;

{Рисование мишени}

SetColor (Yellow);

Circle (MishenX,MishenY,RadM);

Circle (MishenX,MishenY,RadM-4);

SetFillStyle (1,Green);

FloodFill (MishenX+9,MishenY+9,Yellow);

{Рисование лука}

SetColor (Green);

Arc (LukX,LukY,fi1,fi2,RadL);

Arc (LukX,LukY,fi1,fi2,RadL-7);

Line (296,479,301,479);

Line (338,479,345,479);

So:=0; {Счётчик отклонения стрелы}

Ugol:=1.55; {Угол наклона стрелы}

stX:=320; stY:=450; stX1:=320; stY1:=410; {Начальные координаты стрелы}

SetColor (White);

Line (stX,stY,stX1,stY1); {Рисование стрелы}

StartTimer (Time); {5 секунд}

while keypressed do key:=readkey; {Очистка буфера клавиатуры}

while isTimer0=false do begin {Цикл стрельбы по мишени}

{Оставшееся время}

SetColor (White);

OutTextXY (5,450,'Time:');

Str (tim_tic/meml[0:$46c],Num); {Расчёт оставшегося времени}

SetFillStyle (1,Black);

Bar (45,448,56,457); {Закрасить предыдущее значение времени}

SetColor (LightRed);

OutTextXY (48,450,Num[8]); {Отобразить оставшееся время}

{Оставшиеся мишени}

SetColor (White);

OutTextXY (5,460,'Remained:');

Str (MishenNum-i,Num);

SetColor (LightGreen);

OutTextXY (79,460,Num);

{Очки}

SetColor (White);

OutTextXY (5,470,'Score:');

Str (Score,Num);

SetColor (LightCyan);

OutTextXY (56,470,Num);

{Выход из цикла, если координаты стрелы вышли за пределы экрана}

if (stX>640) or (stX<0) or (stY<0) then Break;

if keypressed then begin

if readkey=#0 then key:=readkey; {Нажатие клавиши только}

case key of {с расширенным кодом}

#75: begin {Поворот влево}

if So>-48 then begin

SetColor (Black); {Стереть}

Line (stX,stY,stX1,stY1); {стрелу с предыдущими координатами}

Dec (So);

Ugol:=1.55-So*0.033;

stX1:=stX+Trunc(40*cos(Ugol));

stY1:=stY-Trunc(40*sin(Ugol));

SetColor (White); {Рисование}

Line (stX,stY,stX1,stY1); {стрелы с новыми координатами}

{Рисование заново лука}

SetColor (Green);

Arc (LukX,LukY,fi1,fi2,RadL);

Arc (LukX,LukY,fi1,fi2,RadL-7);

Line (296,479,301,479);

Line (338,479,345,479);

end;

end;

#77: begin {Поворот вправо}

if So<47 then begin

SetColor(Black); {Стереть}

Line (stX,stY,stX1,stY1); {стрелу с предыдущими координатами}

Inc (So);

Ugol:=1.55-So*0.033;

stX1:=stX+Trunc(40*cos(Ugol));

stY1:=stY-Trunc(40*sin(Ugol));

SetColor(White); {Рисование}

Line (stX,stY,stX1,stY1); {линии с новыми координатами}

{Рисование заново лука}

SetColor (Green);

Другие файлы:

Разработка алгоритмов и программ решения алгебраических задач численными методами
Создание схем алгоритмов и составление программы на языке Pascal для вычисления значений заданных функций. Сущность и порядок нахождения значения опре...

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

Разработка и отладка линейных алгоритмов и программ. Разработка программ по вычислению значения функций согласно вариантам
Приемы работы с инструментальной средой программирования С++. Кодирование арифметических и логических выражений с использованием стандартных библиотеч...

Разработка справочно-информационной системы "Справочник по оборудованию"
Использование бинарных деревьев для поиска данных. Схемы алгоритмов работы с бинарным деревом. Проектирование алгоритмов и программ. Структура програм...

Основы программирования и алгоритмизации
Разработка простейших линейных алгоритмов (составление логических выражений), программ с ветвлениями, циклических программ и составление их блок-схем....