Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая Иванов.docx
Скачиваний:
36
Добавлен:
21.03.2015
Размер:
4.34 Mб
Скачать
    1. Требования к программному продукту

Необходимо разработать данный программный продукт на языке программирования C#,реализовать классы, которые будут выполнять следующие функции, используя возможности объектно-ориентированного программирования, также оформление экрана и меню :

  • интро-ролик;

  • графический интерфейс меню;

  • часть графического интерфейса в игре;

2 Проектирование программного продукта

    1. Диаграмма вариантов использования

Диаграммы вариантов использования описывают взаимоотношения и зависимости между группами вариантов использования и действующих лиц, участвующими в процессе.

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

Рисунок 2.1 – Диаграмма вариантов использования

Таблица 2.2 –Описание актеров диаграммы вариантов использования

Актер

Краткое описание

Игрок

Игрок

Система

Система управления игрой

Таблица 2.2 –Описание прецедентов диаграммы вариантов использования

Прецедент

Краткое описание

Выполнение действий

Запускается игроком. Позволяет выполнять действия в игровом мире.

Обмен данными.

Производит обмен данными между игроком и системой.

Отрисовка мира

Запускается системой. Позволяет отрисовывать игровой мир.

Управление камерой

Запускается системой. Позволяет управлять камерой.

Обработка столкновений

Запускается системой. Обрабатывает столкновения.

Обработка данных.

Позволяет обрабатывать данные.

Вывод на экран.

Преобразовывает обработанные данные в графическую информацию и выводит на экран.

Вывод звука.

Позволяет выводить звук.

Управление искусственным интеллектом

Управляет искусственным интеллектом.

2.2 Диаграмма классов

2.3 Диаграмма сценариев

3 Программная реализация3.1 Реализация основных функций

Для создания интро-ролика игры, нужно было создать его покадрово после чего объединить в одно изображение для проигрывания его классом SpriteManadger. На рисунках 3.1-3.3 наглядно это продемонстрировано.

Рисунок 3.1– Первый отрезок интро-видео.

Рисунок 3.2– Второй отрезок интро-видео.

Рисунок 3.3– Третий отрезок интро-видео.

После интро-видео следует меню фон которого создавался таким же образом. Рисунок 3.4.

Рисунок 3.4–Фон игрового меню.

Для того чтобы в меню появились кнопки необходимо было реализовать программный код который берет из класса Button лист кнопок которые будут отображаться поверх фонового изображения меню.

namespace Speedrun

{

class Menu

{

List<Button> buttons;

public Scroll Scroll;

AnimatedSprite back;

public AnimatedSprite gearLeft, gearRight;

public bool OnButton { get; set; }

bool enabled;

public Menu(Button[] buttons, Scroll scr, AnimatedSprite back, AnimatedSprite gearLeft, AnimatedSprite gearRight)

{

this.back = back;

this.buttons = new List<Button>();

this.Scroll = scr;

this.gearLeft = gearLeft;

this.gearRight = gearRight;

for (int i = 0; i < buttons.Length; i++)

{

this.buttons.Add(buttons[i]);

this.buttons[i].menu = this;

}

OnClick.menu = this;

enabled = true;

Enabled = false;

}

public Button this[string name]

{

get

{

for (int i = 0; i < buttons.Count; i++)

{

if (buttons[i].name == name)

return buttons[i];

}

return null;

}

}

public void Update(TimeSpan sinceLast)

{

if (!enabled)

return;

SpriteManager.RemoveSprite(gearLeft);

SpriteManager.RemoveSprite(gearRight);

OnButton = false;

for (int i = 0; i < buttons.Count; i++)

buttons[i].Update();

back.Update(sinceLast);

Scroll.Update(sinceLast);

}

public bool Enabled

{

get { return enabled; }

set

{

if (!enabled && value)

{

SpriteManager.AddSprite(back);

for (int i = 0; i < buttons.Count - 1; i++)

buttons[i].Flag = true;

}

if (enabled && !value)

{

SpriteManager.RemoveSprite(back);

for (int i = 0; i < buttons.Count; i++)

buttons[i].Flag = false;

SpriteManager.RemoveSprite(gearLeft);

SpriteManager.RemoveSprite(gearRight);

}

enabled = value;

} } } }

class Scroll

namespace Speedrun

{

class Scroll

{

float volume;

public float Volume

{

get

{

if (volume < 0)

return 0;

if (volume > 1)

return 1;

return volume;

}

}

bool enable;

AnimatedSprite As;

public bool Enable

{

get

{

return enable;

}

set

{

enable = value;

if (enable)

SpriteManager.AddSprite(As);

else

SpriteManager.RemoveSprite(As);

}

}

public Scroll(AnimatedSprite As)

{

this.As = As;

volume = 1f;

this.As.Enable = false;

this.As.Frame = 17;

enable = false;

}

public void Update(TimeSpan sinceLast)

{

if (!enable)

return;

if (Input.GetKey("Right").State == KeyPose.Down || Input.GetKey("Right").State == KeyPose.Pressed && Input.GetKey("Right").TimeoutPress)

{

if (As.Frame < 17)

{

volume += 0.0625f;

As.Frame++;

}

}

if (Input.GetKey("Left").State == KeyPose.Down || Input.GetKey("Left").State == KeyPose.Pressed && Input.GetKey("Left").TimeoutPress)

{

if (As.Frame > 0)

{

volume -= 0.0625f;

As.Frame--;

} } } } }

class OnClick

namespace Speedrun

{

public delegate void Click();

static class OnClick

{

public static Menu menu;

public static void OptionsButton()

{

menu.Scroll.Enable=true;

if (menu["new_game"] != null)

{

menu["new_game"].Flag = false;

}

menu["options"].Flag = false;

if (menu["exit"] != null)

{

menu["exit"].Flag = false;

}

if (menu["back"] != null)

{

menu["back"].Flag = true;

}

}

public static void ExitButton()

{

GameCore.game.Content.Unload();

GameCore.game.Exit();

}

public static void BackButton()

{

menu.Scroll.Enable = false;

if (menu["options"] != null)

{

menu["options"].Flag = true;

}

menu["back"].Flag = false;

if (menu["exit"] != null)

{

menu["exit"].Flag = true;

}

if (menu["new_game"] != null)

{

menu["new_game"].Flag = true;

}

SoundPlayer.ChangeVolume("Default", menu.Scroll.Volume);

SoundPlayer.ChangeVolume("Music", 0.08f * menu.Scroll.Volume);

}

public static void NewGameButton()

{

if (menu["options"] != null)

{

menu["options"].Flag = false;

}

if (menu["exit"] != null)

{

menu["exit"].Flag = false;

}

menu["new_game"].Flag = false;

menu.Enabled = false;

GameCore.fade = true;

GameCore.state = State.LoadScreenGame;

GameCore.clock.SetClock(12000);

GameCore.clock.SetType(ClockType.LoadScreen);

GameCore.counter = 0;

GameCore.LoadGame("map1");

GameCore.rt.Fading(2000, 0, 2000);

GameCore.clock.Hide = true;

} } }

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]