Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книги / ПРОЕКТИРОВАНИЕ ПОВС (последнее).doc
Скачиваний:
77
Добавлен:
01.06.2015
Размер:
36.23 Mб
Скачать

Практические задания

1. В игре сверху падают N шариков, которые желательно поймать (условной) корзинкой. Шарик возникает в верхней точке одной из 12 вертикальных линий и падает по ней 20 шагов с постоянной скоростью. Поймать шарик можно корзинкой, которая перемещается влево-вправо клавишами " " и " " и в момент достижения шариком уровня корзинки уже должна находиться в соответствующей позиции. В процессе игры непрерывно отображается число пойманных шариков .

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

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

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

3. В игре падает 100 разноцветных (9 цветов) кубиков. Они появляется вверху в центре стакана (размер 9 х 12) и падают вниз, подчиняясь указаниям "сдвиг влево" (клавиша "") или "сдвиг вправо" (клавиша ""). Внизу расположено 9 площадок разного цвета, на которые и падают шарики. Если их цвета совпадают, игрок получает положительные очки (+3), иначе - отрицательные (-1). Площадки для каждого нового кубика располагаются по-новому.

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

4. Игровое поле представляет прямоугольник 10 х 15 клеток, на котором появляются на определенный интервал мишени. Игра развивается в дискретном времени, каждая мишень занимает одну клетку и появляется на интервал 3-7 тактов. Пушка всегда расположена внизу экрана (с широкой стороны), может перемещаться влево-вправо (клавиши "", "") и стрелять (клавиша "Space") по мишеням. Сбитая мишень дает 5 очков, за пропущенную снимается 2. Непрерывно должны отображаться прошедшее время (тактов), общее количество выставленных и количество сбитых мишеней. В игре выставляется 100 мишеней, при нажатии клавиши Esc игра должна прекращаться.

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

5. Игровое поле представляет прямоугольник 20 х 20 клеток, в центре которого расположена "черепаха". Ее первоначальный запас энергии 50 единиц, расход 1 единица при перемещении на одну клетку. Игра развивается в дискретном времени, длительность игры - 1000 шагов. На поле появляется "пища" с энергетической ценностью 25 - 50 единиц, черепаха должна добраться до неё и подзарядиться, иначе она погибнет. Непрерывно должны отображаться прошедшее время и энергия черепахи.

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

6. Игрок располагается в ленточном лабиринте, набегающем на него с постоянной скоростью. Длина лабиринта - 1000 шагов, ширина 3-10 клеток,, и он извивается в полосе - 10(-) +10 относительно вертикальной линии в центре экрана. Если ширина лабиринта на некотором участке больше 5, то там может располагаться камень. Игрок всегда расположен внизу и может смещаться влево-вправо (клавиши "", ""), его цель - продержаться до конца лабиринта, не столкнувшись со стенками или камнями в лабиринте.

Разработать алгоритм, представление основных данных, и примерную программу для блока "Движение в лабиринте" на языке PASCAL или С.

7. В верхней части экрана находятся М ракетных установок, а внизу - танк игрока, который находится в одной из М позиций и может перемещаться влево-вправо (клавиши "", ""). Залп ракетами выполняется одновременно и их полет изображается в дискретном времени, но летят они с разными скоростями (от 1 до 10 единиц). Достигнув нижнего края, ракеты взрываются - танк гибнет, если ракета попадает в него или взорвётся рядом. Непрерывно должно отображаться прошедшее время (в условных единицах) и количество оставшихся ракет.

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

8. На поле размером (N x N) располагаются случайным образом по N синих и красных микробов - врагов. Процесс их жизни проходит в дискретном времени, на каждом шаге которого один из микробов перемещается в одну из соседних клеток (выбор микроба и клетки случайный). Если в соседней клетке находится другой микроб, то, если это друг, - они сливаются и масса такого микроба равна общей массе. Если же это враг - то масса нападающего микроба удваивается и сравнивается с массой противника - как результат, в клетке остается микроб, который оказался тяжелей, но его масса уменьшается до разности масс противников. Процесс продолжается до тех пор, пока останутся микробы лишь одного цвета или будет нажата клавиша Esc.

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

9. На игровом поле (М х N) расставлено К фонариков, освещающих квадрат (3 х 3) клетки, вокруг себя. При этом освещенные области не могут соприкасаться и, тем более, пересекаться. Все клетки первоначально считаются закрытыми (как в игре Сапер) и могут быть открыты щелчком кнопкой мышки на клетке. При этом, если клетка содержит фонарик, открываются все освещенные клетки, для темных и освещенных клеток открываются только они. Цель игры - обнаружить и открыть все фонарики на поле за минимальное число ходов. Непрерывно должны отражаться количество ходов и число еще не открытых фонариков.

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

10. В игре "Угадай слово по буквам" в середине экрана расположены 6-12 закрытых букв некоторого слова. Над ним расположен текст-подсказка к загаданному слову. Внизу экрана расположено Поле букв (русские буквы в несколько рядов), где мышкой выбираются угадываемые буквы. В игре участвуют два игрока, которые ходят по очереди. Собственно ход заключается в выборе очередной буквы в Поле букв (с подсветкой) и поиске такой буквы в слове. Если в слове есть такая буква, то она открывается и игрок продолжает угадывание, если же буквы нет, то ход передаётся следующему игроку.

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

11. Игровое поле (N x N) заполнено карточками с парными рисунками, карточки повернуты обратной стороной. Каждый ход заключается в выборе мышкой последовательно двух карточек, которые при этом поворачиваются картинкой. Если на них одинаковые картинки, то карточки удаляются с игрового поля, а если разные - то возвращаются в исходное положение (ход нерезультативный). Цель игры - за минимальное число ходов удалить с поля все карточки.

Непрерывно должны отражаться количество ходов и число еще не открытых карточек.

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

12 Игра "Питон, поедающий кроликов" протекает в дискретном времени на прямо­угольном Поле (М х N), где расположены камни (km) и кролики (kr). Питон и Поле представлены в общей системе координат, отдельные точки питона и поля задаются значениями типа tPoint = record x,y : integer end. Питон перемещается по полю в установ­ленном направлении, которое можно менять клавишами "", "", "" и "". Если его голова перемещается на клетку с пищей, он удлиняется на 1 клетку, если же она попадает на смертельную клетку, Питон погибает (звуковой сигнал и изменение цвета).

Разработать алгоритм игры на основе двух объектов Поле и Питон. Данные объектов должны обеспечивать их рисование и независимое существование, а методы представлять характерные действия объектов, в том числе и необходимые для их взаимодействия.

Дать описание объектного алгоритма задачи на псевдокоде, описание объекта Поле и реализацию его методов Нарисовать, Выдать_Состояние_Точки (аР) и Удалить_Кролика_ в Точке (аР).

Рекомендуется метод Питона Переместиться_в_Направлении_Движения определить с параметром, задающим вид перемещения - с удлинением или без.

13. Игра "Поезд, собирающий вагончики" протекает в дискретном времени на прямо­угольном Поле (М х N), где произвольно расставлены вагончики (kv). Поезд и Поле представлены в общей системе координат, отдельные точки поля и вагончики задаются значениями типа tPoint = record x,y : integer end. Поезд (сначала - один паровозик) перемещается по полю в установленном направлении, которое можно менять клавишами "", "", "" и "". Если паровозик наезжает на клетку с вагончиком вдоль его оси, то он

прицепляется за паровозиком, если поперек - то поезд рассыпается, паровозик остается один, а вагоны распределяются по полю.

Разработать алгоритм игры на основе двух объектов Поезд и Поле. Данные объектов должны обеспечивать их рисование и независимое существование, а методы представлять характерные действия объектов, в том числе и необходимые для их взаимодействия.

Дать описание объектного алгоритма задачи на псевдокоде, описание объекта Поезд и реализацию его методов Нарисовать, Переместиться_на_след_Клетку (аР) и метода объекта Поле - Расставить_Вагончики (kv).

Рекомендуетсяметод Поезда Переместиться_на_След_Клетку (аР) определить с дополнительным параметром, задающим вид перемещения - простое или с присоединением вагончика.

14. Игра "Летающий в рамке шарик" протекает в дискретном времени и представляет собой прямоугольную Рамку (М х N), которая может сдвигаться по экрану клавишами "", '", "" и "", не выходя за его границы, и шарика, летающего внутри Рамки, отражаясь от её сторон. Рамка и Шарик представлены в общей экранной системе координат и первоначально создаются относительно некоторой точки экрана (не у самого края). В ней возникает Шарик, а Рамка располагается вокруг него достаточно произвольно. Для Шарика задается случайным образом вектор скорости движения, и он начинает полет, отражаясь от краев рамки.

Разработать алгоритм игры на основе двух объектов Шарик и Рамка. Данные объектов должны обеспечивать их рисование и независимое существование, а методы представлять характерные действия объектов, в том числе и необходимые для их взаимодействия.

Дать описание объектного алгоритма задачи на псевдокоде, описание объектов Шарик и Рамка, реализацию метода объекта Шарик -- Переместиться_в след_Точку и метода объекта Рамка- Есть_Прикосновение_Шара к_Вертик_Стороне_Рамки (Psh, Rsh).

Рекомендуется ориентировать алгоритм на летящий шарик, на каждом шаге перемещая его в следующую точку по направлению полета, и затем запрашивать у Рамки (приблизительное) прикосновение Шарика к её вертикальным или горизонтальным сторонам (передавая его координаты центра и радиус). В случае прикосновения Шарик должен выполнить отражение от соответствующей стенки (изменяя значение составляющей вектора скорости на противоположное).

15. Игра "Караван на минном поле" протекает в дискретном времени и представляет собой прямоугольное Минное_поле (М х N), где расположены мины (km) и камни (kk). М_поле и караван представлены в общей системе координат, отдельные точки М_Поля и корабли задаются значениями типа tPoint = record x,y: integer end. Караван представляет собой цепочку из нескольких кораблей (kF), который должен проплыть из одного угла до противоположного, сохранив хотя бы один корабль. Караван медленно движется в установленном направлении, которое можно менять клавишами "", "", "" и "". Мины покачиваются на волнах в случайных направлениях и, в случае удара о корабль, топят его (удаляться должен последний корабль каравана). Тоже происходит, если на мину налетает сам караван при перемещении. Точки старта и финиша каравана фиксированы и ему известны.

Разработать алгоритм игры на основе двух объектов МинноеПоле и Караван. Данные объектов должны обеспечивать их рисование и независимое существование, а методы представлять характерные действия объектов, в том числе и необходимые для их взаимодействия.

Дать описание объектного алгоритма задачи на псевдокоде, описание объекта Караван и реализацию его методов Нарисовать, Проверить столкновение_с_Миной (аР) и Есть_ Достижение_Положения_Финиша.

Рекомендуется выделить в алгоритме действия "Перемещение кораблей" и "Перемещение мин", после которых определять (в цикле) факт столкновения между Караваном и некоторой миной или факт подрыва некоторого корабля на Минном_поле.

16. Игра "Теннис" протекает в дискретном времени в прямоугольном поле

(М х N), в нижней части которого расположена ракетка, перемещаемая влево и вправо клавишами "" и "". Первоначально в центре ракетки расположен шарик, который по щелчку мышкой начинает двигаться вверх под некоторым углом. Далее шарик движется, отражаясь от верхней и боковых сторон, и от ракетки, если она передвинута в соответствующее положение. Если шарик упадет на нижнюю сторону, то игра заканчивается.

Разработать алгоритм игры на основе двух объектов Ракетка и Шарик. Параметры верхней и боковых сторон считать глобальными величинами, известными объектам. Данные объектов должны обеспечивать их рисование и независимое существование, а методы представлять характерные действия объектов, в том числе и необходимые для их взаимодействия.

Дать описание объектного алгоритма задачи на псевдокоде, описание объектов Ракетка и Шарик, реализацию методов объекта Ракетка - Нарисовать, Есть_Касание_Шарика (Psh, Rsh) и метода объекта Шарик - Выполнить_Отражение_От_Вертик_Стороны.

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

17. Игра "Лабиринт" протекает в дискретном времени в ленточном лабиринте, набегающем на игрока с постоянной скоростью. Длина лабиринта - 1000 шагов, ширина 3-6 клеток и он извивается в полосе -10 (-) +10 относительно вертикальной линии в центре экрана. Если ширина лабиринта на некотором участке больше 5, то там может располагаться камень.

Игрок всегда расположен внизу и может смещаться влево-вправо (клавиши "", ""), его цель - продержаться до конца лабиринта, не столкнувшись со стенками или камнями в лабиринте.

Разработать алгоритм игры на основе двух объектов Лабиринт и Игрок. Данные объектов должны обеспечивать их рисование и независимое существование, а методы представлять характерные действия объектов, в том числе и необходимые для их взаимодействия.

Дать описание объектного алгоритма задачи на псевдокоде, описание объектов Лабиринт и Игрок, реализацию методов объекта Лабиринт - Сдвинуть_Лабиринт, Точка_ Вне_Лабиринта_или_на_Камне(аРот1:) и методов объекта Игрок - Перемещение_по_Указа-нию_от_Клавиатуры и Выдать_Координаты.

18. Игра "Сбор грибов" протекает в дискретном времени в прямоугольном поле (М х N), где кое-где растут грибы. Человечек может перемещаться по полю в любом направлении (клавиши "", "", "" и ""), его цель - собрать максимум грибов за отведенное число шагов. Особенность игры в том, что когда игрок выполняет шаг за край поля, оно должно сдвигаться в противоположном направлении, показывая невидимую ранее полоску, а игрок фактически остается в той же точке в рамке поля.

Разработать алгоритм игры на основе двух объектов: Поле и Человечек. Данные объектов должны обеспечивать их рисование и независимое существование, а методы представлять характерные действия объектов, в том числе и необходимые для их взаимодействия.

Дать описание объектного алгоритма задачи на псевдокоде, описание объектов Поле и Человечек, реализацию методов объекта Поле - Сдвинуть_Лабиринт (dX, dY), Точка_Вне_ Поля (aPoint, var dX, dY) и методов объекта Человечек - Перемещение (dX, dY), и Вьщать_Координаты_Точки_Перемещения_по_Указанию_от_Клавиатуры (аР).

Здесь показан один из вариантов представления методов. Переменные dX и dY задают направление смещения и могут быть только такими: (+1,0), (-1, 0), (0,+ 1), (0,-1).

19. В программе предполагается показать (по нажатию кнопки Start) одну из 4-х картин, предварительно нарисованных в 1/10 натуральной величины в углах прямоугольника, соответствующего размеру картин. Процесс показа состоит из двух фаз - сначала картина (в течение Интервала-1) увеличивается в размерах из своего угла, пока не займет всю площадь прямоугольника, затем (в течении Интервала 2) картина отображается для просмотра, после чего все возвращается в исходное состояние. Выбирается картина из списка (ListBox), Интервал-1 (1-5 сек) задается ползунком (TreckBar), время показа (3 или 5 сек) выбирается кнопками (RadioButton),

Дополнительное требование: По желанию (CheckBox) может выводиться имя автора картины на время её показа. Время показа должно отображаться (ProgressBar) как оставшееся но конца показа.

Представить интерфейс программы с названиями компонентов, дать краткое описание алгоритма и привести (для Delphi или C++Builder) весь код, который должен подготовить программист (описание переменных, описание и реализацию всех обработчиков событий).

20. В программе предполагается показать (по нажатию кнопки Старт) одну из 4-х картин, предварительно выбранной из списка (ListBox). Процесс показа состоит из двух фаз - сначала картина (в течение Интервала-1) как бы вдвигается в раму сверху или слева (режим задают RadioButton), пока не займет всю площадь рамки, затем (в течении Интервала 2) картина отображается для просмотра, после чего все возвращается в исходное состояние. Интервал-1 (1 - 10 сек) задается ползунком (ScroolBar), время просмотра (4 -9 сек) подбирается элементом UpDown или задается непосредственно.

Дополнительное требование: По желанию (отметка в CheckBox) может выводиться название картины на все время её подготовки и показа. Фаза сдвига картины должна отображать (ProgressBar) время, оставшееся до полного появления картины.

Представить интерфейс программы с названиями компонентов, дать краткое описание алгоритма и привести (для Delphi или C++Builder) весь код, который должен подготовить программист (описание переменных, описание и реализацию всех обработчиков событий).

21. В программе предполагается показать (по нажатию кнопки Start) одну из 3-х картин, предварительно выбираемой одной из кнопок (RadioButton). Процесс показа состоит из двух фаз -- сначала картина (в течение Интервала-1) показывается в натуральную величину, затем (в течение Интервала 2) картина плавно уменьшается в масштабе, сохраняя неподвижной верхнюю левую точку картина, пока не превратится в точку, после чего все возвращается в исходное состояние. Интервал-1 (3-8 сек) задается ползунком (TrackBar), Интервал-2 вводится непосредственно (1 - 25сек) через Edit.

Дополнительное требование: Для фазы сжатия картины должен отображаться её текущий размер (ProgressBar)", причем (через CheckBox) эта дополнительная возможность моет быть отключена.

Представить интерфейс программы с названиями компонентов, дать краткое описание алгоритма и привести (для Delphi или C++Builder) весь код, который должен подготовить программист (описание переменных, описание и реализацию всех обработчиков событий).

22. В программе предполагается показать (по нажатию кнопки Start) одну из 3-х картин, предварительно выбираемой из списка (ComboBox) и сразу отражаемой в центре рамки в виде микро-картинки (в 1/10 её размера).. Процесс показа состоит из двух фаз - сначала картина (в течение Интервала-1) показывается в натуральную величину, затем за 5 сек (и 9 шагов) плавно уменьшается до начальной микро-картинки. Интервал-1 (4-8 сек) задается ползунком (TrackBar).

Дополнительное требование: По желанию (отметка в CheckBox) может выводиться название под картиной на время её показа. Цвет надписи (Red, Green) определяется соответствующей кнопкой (RadioButton).

Представить интерфейс программы с названиями компонентов, дать краткое описание алгоритма и привести (для Delphi или C++Builder) весь код, который должен подготовить программист (описание переменных, описание и реализацию всех обработчиков событий).

23. В программе предполагается показать (по нажатию кнопки Пуск одну из 3-х картин, предварительно выбранной из списка (ListBox), до этого в поле вывода картины располагается её название. Процесс показа состоит из двух фаз - сначала картина (в течении Интервала-1) как бы разворачивается от левой стороны рамки во всю свою величину, затем (в течение Интервала 2) картина отображается для просмотра, после чего все возвращается в исходное состояние. Интервал-1 (1  10 сек) задается непосредственно через Edit, a Интервал-2 (5 -10 сек) - ползунком (TrackBar).

Дополнительное требование: Цвет текста названия (Blue, Green) определяется одной из кнопов (RadioButton). В фазе разворачивания картины должен отображаться (ProgressBar) её текущий размер. Выбор картины может выполняться не только в списке, но и в меню "Выбор_Картины", при изменении выбора картина сразу должно изменяться и её название.

Представить интерфейс программы с названиями компонентов, дать краткое описание алгоритма и привести (для Delphi или C++Builder) весь код, который должен подготовить программист (описание переменных, описание и реализацию всех обработчиков событий).

24. В программе предполагается запустить (по нажатию кнопки Пуск) циклический показ двух картин, соответственно на Интервал-1 и Интервал-2. Интервал-1 (1 -- 5 сек) задается ползунком (TreckBar), Интервал-2 (1-10 сек) устанавливается элементом UpDown или вводится непосредственно. Специальная отметка (CheckBox) отменяет вывод второй картины, вместо нее выводится название первой.

Дополнительное требование: Время показа первой картины должно отображаться (ProgressBar) как прошедшее от начала. После Пуска на кнопке должна поменяться надпись на Стоп и её повторное нажатие должно остановить процесс и вернуть исходное состояние.

Представить интерфейс программы с названиями компонентов, дать краткое описание алгоритма и привести (для Delphi или C++Builder) весь код, который должен подготовить программист (описание переменных, описание и реализацию всех обработчиков событий).

25. В программе предполагается показать (по нажатию кнопки Пуск) одну из 3-х картин, предварительно выбранной из списка (ListBox). Картина показывается в центре рамки в заданном масштабе (0.2, 0.4, 0.6, 0.8, 1.0), который устанавливается ползунком (TrackBar). Процесс показа состоит из двух фаз в течении Интервала-1 картина отображается для просмотра, затем в течении 2 сек показывается название картины. Интервал-1 (1 - 10 сек) задается непосредственно через Edit.

Дополнительное требование: Цвет текста названия (Blue, Green) определяется одной из кнопов (RadioButton). Процесс показа картины должен отображаться (ProgressBar) как время, прошедшее от начала показа. При желании (CheckBox), вместе с названием картины, можно выводить и фамилию её автора.

Представить интерфейс программы с названиями компонентов, дать краткое описание алгоритма и привести (для Delphi или C++Builder) весь код, который должен подготовить программист (описание переменных, описание и реализацию всех обработчиков событий).