- •Содержание
- •1 Пояснительная записка
- •2 Примерная тематика курсовых работ (проектов)
- •3 Содержание методических рекомендаций
- •4. Информационное обеспечение выполнения курсовой работы (проекта)
- •Задание
- •Математическое моделирование
- •Приложение в
- •Приложение в
- •230115 Программирование в компьютерных системах
- •230115 Программирование в компьютерных системах
- •Приложение в
- •Приложение в
- •Приложение в
- •Приложение в
М
продолжениеПриложение в
Реализация этой игры будет состоять из нескольких этапов. Необходимо будет создавать анимированное изображение встречи принца с очередным монстром-препятствием, что включает в себя:
1) генерацию фона;
2) рисование монстра;
3) изображение принца и его движение.
Другие проблемы должны быть решены в обучающей части игры. В ней потребуется сделать:
4) формулировка задания на программирование (написание «мантры»);
5) ввод и проверка ответа играющего;
6) предоставление ему справок и подсказок.
Интерфейс должен включать в себя следующие элементы:
1) окно, сквозь которое видна игровая ситуация (встреча принца с монстром на фоне ночного пейзажа);
2) поле, в котором будут появляться сообщения принца играющему, сведения о встреченном монстре и мантре, с помощью которой его можно победить (то есть формулировка задания на программирование);
3) поле, в котором будут даны сведения об используемых в программе переменных и других структурах данных;
4) поле, в котором играющий напишет «мантру» — фрагмент программы на заданном языке программирования.
Общая схема будущего интерфейса представлена на рисунке Д.1.
Традиция fantasy утверждает, что эльфы любят путешествовать ночью, особенно при свете звёзд. Поэтому пейзаж, составляющий фон картинки, должен включать в себя небо, дальний план и объекты переднего плана. Если события игры развиваются в лесу, то объектами дальнего плана могут быть покрытые деревьями холмы, а объектами переднего плана — деревья и кусты.
Для изображения неба, а также уходящей к горизонту поверхности земли, потребуются прямоугольники с горизонтальной градиентной заливкой, примерный вид которых показан на рисунке Д.3.
Градиентная заливка подразумевает, что при перемещении по горизонтали (по координате x) или по вертикали (по координате y) цвет меняется плавно от первого заданного цвета до второго. Обозначим компоненты R, G и B первого цвета R1, G1 и B1, а второго — R2, G2 и B2. Тогда нам требуется вывести формулы, которые позволят вычислить значения компонентов цвета (R, G и B) для любого x, лежащего между x1 и x2. Для этого воспользуемся найденным в справочнике параметрическим заданием прямой. Этот метод подразумевает, что есть параметр t, при значении которого 0 получается начальная точка отрезка прямой, а при значении 1 — конечная точка. Тогда при любых промежуточных (между 0 и 1) значениях t будут получаться точки, лежащие на отрезке.
Например, в координатах, где по оси абсцисс откладывается x, а по оси ординат — R, мы получим формулы зависимости интенсивности красного цвета при перемещении по горизонтали (вертикальный градиент). Формула для параметра t получается следующая:
Очевидно, что при x=x1 получается t=0, а при x=x2 получается t=1.
Тогда R вычисляется по формуле:
Также очевидно, что при t=0, получается R=R1, а при t=1 получается R=R2.
Для остальных компонентов цвета (G и B) и для горизонтального градиента формулы выводятся аналогично.
Для изображения деревьев на заднем плане, шерсти монстра и других «пушистых» объектов можно использовать инструмент, напоминающий «пульверизатор» графических редакторов. Только желательно, чтобы в нём точки были разных близких по оттенку цветов. И чтобы можно было произвольно задавать размеры «пятна» и плотность расположения точек. Для краткости такую фигуру будем называть «пятно». Для рисования пятна мы используем известные из математики формулы движения по окружности (преобразование полярной системы координат в декартову систему координат). Эти формулы следующие:
,
,
где x и y — координаты точки «пятна», X0 и Y0 — координаты центра «пятна», RadX и RadY — размеры «пятна» по горизонтали и по вертикали, φ — угол поворота (вторая полярная координата) точки «пятна».
Монстры, встречаемые принцем эльфов, должны выглядеть хотя бы немного по-разному. Можно использовать описанный в п.2.1.3 метод формирования разных оттенков цвета и инструмент «пятно». Но желательно также, чтобы и соотношение частей тела монстров было различным (их общие очертания фигуры типа «толстый» - «тонкий», «высокий» - «низкий»). Для этого представим себе монстра как сочетание шести «пушистых» овалов: туловище, голова, верхние и нижние лапы. На морде монстра будут яркие зловещие глаза, а на лапах — когти.
Меняя случайным образом размеры туловища и головы, мы будем получать монстров разного «роста» и «толщины», примеры чего показаны на рисунке Д.3.
Способы исчезновения могут быть разнообразны. Мы рассмотрим варианты из смены и анимации слайдов в PowerPoint.
Один из видов анимации «Растворение». Монстр будет растворяться на фоне. «Симметричная круговая» — эта анимация подразумевает в себе исчезновение монстра симметрично с обеих сторон, начиная с его головы, по кругу. «Шашки горизонтальные» — монстр «стирается» с фона в виде шахматной доски, с лева направо. Анимация «Вертикальные полосы». Используя эту анимацию монстр будет исчезать тонкими, случайными вертикальными полосками.
Изображение и движение принца разбиваются на три этапа:
1) принц приходит в точку встречи с очередным монстром;
2) принц стоит и ждёт, когда играющий (маг) напишет и применит необходимую для уничтожения монстра мантру;
3) после победы над монстром принц идёт дальше.
На втором этапе для поддержания ощущения жизни необходимо, чтобы принц совершал небольшие естественные движения. Например, вход и выдох, изменения выражения лица и небольшие движения рук.
Первый и третий этапы будут повторяться многократно, поэтому не должны быть длительными, потому что иначе это будет раздражать играющего. Поэтому их можно сократить до минимальных движений. Например, когда монстр уничтожен, принц поворачивается лицом вправо и начинает делать шаг. В этот момент картинка меняется на карту местности, на которой маленькое изображение принца перемещается на следующую точку. Затем появляется новый пейзаж с монстром, принц делает завершение шага, словно он только что пришёл, и поворачивается лицом к играющему.
Задание на программирование будет состоять из двух частей, расположенных как бы на левой и правой страницах раскрытой книги. Слева будет описан встреченный принцем монстр, а справа — задача на программирование, позволяющая его преодолеть.
Описание монстра может выглядеть примерно так: «Монстр Эдо, угрожающ, могуч, опасен, не боится ни копья, ни газа, ни молота. Он обычно…». Или так: «Монстр Жууск, увертлив, голоден, сердит, не боится ни бомбы, ни стрел, ни меча, ни ножа. Родился он в самом…».
Как видно из этих примеров, некоторые части фразы всегда одинаковы, а другие меняются случайным выбором из некоторого набора фрагментов (слогов, слов или фрагментов текста). Переменные части называются фасеты. Например, таким набором для фасета, характеризующего монстра, может быть набор слов:
- меча,
- яда,
- бомбы,
- чар,
- укуса,
- удара,
и так далее. Таким же методом можно из слогов «собрать» имя монстра.
Вторая часть, задача на программирование, может строиться по тому же принципу. Берём несколько фрагментов программ (например, типовой алгоритм подсчёта в массиве, суммирования элементов массива). Для большего разнообразия заданий имена переменных считаем фасетами. Тогда, например, могут получиться такие две задачи (приводится правильный вариант «мантры»):
1) Kl:=0;
for i:=1 to N do begin
if M[i]=5 then Kl:=Kl+1;
end;
WriteLn('Kl=',Kl:5);
2) Sum:=0;
for k:=1 to N do begin
if Spisok[k]=’ABC’ then Sum:= Sum +1;
end;
WriteLn('Sum=',Sum:5);
Правильный вариант ответа будет генерироваться описанным способом. Ответ играющего будет сравниваться с этим текстом, и в случае полного совпадения монстр исчезнет, и принц эльфов переместится на следующую позицию своего маршрута.
Заключение
