Показать сообщение отдельно

  #2  
Старый 01.04.2009, 02:54
Ajax5
Новичок
Регистрация: 22.03.2009
Сообщений: 3
С нами: 9021264

Репутация: 0
По умолчанию

Здравствуйте ребята, мне нужна помощь по лабораторной работе

Реализовать игру «Гонки» на Pascal ABC. На экране изображается замкнутый гоночный трек, рисуемый при помощи двух прямоугольников - один внутри другого
Высота и ширина внешнего прямоугольника генерируются программой как случайные числа при помощи функции random. Диапазон возможной ширины и высоты взять, например, в пределах от 200 до 400 пикселей. Смещение левой верхней точки внутреннего прямоугольника относительно левой верхней точки внешнего прямоугольника тоже задать случайными числами, например, в диапазоне от 10 до 30 пикселей. Размеры внутреннего прямоугольника опять же задать как случайные числа, но так, чтобы границы внутреннего прямоугольника не вылезали за границы внешнего, и чтобы справа и снизу между прямоугольниками тоже оставалось некоторое пространство примерно от 10 до 30 пикселей.
Область между прямоугольниками считается треком, пригодным для движения гоночных машин. Область внутри внутреннего прямоугольника и снаружи внешнего считается обочиной, непригодной для движения машин.
Изначально машина игрока устанавливается в некоторую случайную точку на треке и имеет нулевую скорость. Цель игрока - проехать по треку за минимальное количество ходов. На каждом ходе игрок может изменять скорость машины по оси X и скорость по оси Y не более чем на единицу (скорость, равная единице, соответствует перемещению на один пиксель за ход). То есть на каждом ходу игрок может выбрать один из следующих вариантов действий:
1. Увеличить скорость по оси X на единицу и увеличить скорость по оси Y на единицу.
2. Увеличить скорость по оси X на единицу и оставить скорость по оси Y неизменной.
3. Увеличить скорость по оси X на единицу и уменьшить скорость по оси Y на единицу.
4. Оставить скорость по оси X неизменной и увеличить скорость по оси Y на единицу.
5. Оставить скорость по оси X неизменной и оставить скорость по оси Y неизменной.
6. Оставить скорость по оси X неизменной и уменьшить скорость по оси Y на единицу.
7. Уменьшить скорость по оси X на единицу и увеличить скорость по оси Y на единицу.
8. Уменьшить скорость по оси X на единицу и оставить скорость по оси Y неизменной.
9. Уменьшить скорость по оси X на единицу и уменьшить скорость по оси Y на единицу.
Сразу после выбора игроком действия машина сдвигается на экране в соответствии с той скоростью, которую она получает. Если после этого машина остаётся на трассе (или на границе между трассой и обочиной), то у неё остаётся полученная скорость, и игрок переходит к следующему ходу (то есть ещё раз выбирает один из девяти вариантов действий). Если же машина после хода оказывается за границей трека, то её скорость сразу становится равно нулю по обеим осям, и игрок опять же переходит к следующему ходу.

Для управления машиной в программе должен быть интерфейс (сделать/нарисовать клавиши: вверх, вниз, влево, вправо, и кнопка: ОК)

Четыре кнопки позволяют уменьшать/увеличивать скорость по осям X или Y, а кнопка OK - принять выбранную скорость и сделать ход. В центре располагается стрелка, которая показывает направление и величину текущей скорости машины.

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

Последний раз редактировалось Ajax5; 01.04.2009 в 02:56..
 
Ответить с цитированием