Создание диаграммы классов и прототипа кода на языке С++ в системе "Enterprise architect"

Ролевая система как набор правил в играх (настольных, компьютерных), отвечающий за способности персонажей и исход того или иного действия. Спецификации классов и их назначение, диаграммы классов. Прототип кода, сгенерированный в Enterprise architect.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 16.10.2017
Размер файла 629,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство Образования и Науки РФ

Новосибирский Государственный Технический Университет

Кафедра ПМт

Расчётно-графическое задание повышенной сложности

по курсу «Объектно-ориентированное программирование»

а тему Создание диаграммы классов и прототипа кода на языке С++ в системе «Enterprise architect»

Факультет: ПМИ

Группа: ПМ-21

Студент: Червов В.А.

Преподаватель: Еланцева И.Л.

Новосибирск

2013

1.) Описание предметной области, словарь предметной области

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

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

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

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

Также бонусы к характеристикам добавляют предметы (Items) и “Баффы” (усиления, Buffs). Не использующиеся на данный момент предметы хранятся в сумке (Bag), тогда как использующиеся, т.е. дающие бонусы в данный момент времени - в инвентаре.

Словарь: персонаж (Character), неигровой персонаж (NPC), персонаж игрока (Player Character), раса(Race), класс (Class), предмет (Item), усиление (Buff), опыт (Experience), уровень (Level), здоровее (Health), манна (Mana), урон (Attack), сила способностей (Spell Power), скорость атаки (Attack Speed), скорость передвижения (Move Speed), броня (Armor), сопротивление магии (Magic Resistance), длительность действия (…Duration).

2.) Спецификации разработанных классов и их назначение, диаграммы классов

class Character - обобщенное представление персонажей в игре

Атрибуты:

int Armor - количество брони

int Attack - урон за атаку

int AttackSpeed - скорость атаки

BuffList Buffs - контейнер, содержащий усиления

int CharLevel - уровень персонажа

int Class - индекс класса персонажа

float Cooldown[6] - информация о времени перезарядки способностей

int Health - количество здоровья

bool inCombat - находится ли персонаж в бою?

bool isDead - мертв ли персонаж?

int MagicResistance - количество магического сопротивления

int Mana - количество маны

float ManaReg - восстанавливаемая мана за единицу времени

int maxHealth - максимальное здоровье

int maxMana - максимальная мана

int MoveSpeed - скорость передвижения за единицу времени

char name[30] - имя персонажа

bool onSurface - находится ли персонаж на поверхности?

int Race - индекс расы персонажа

int SpellPower - количество силы способностей

Функции:

bool Ability1() - способность#1

bool Ability2() - способность#2

bool Ability3() - способность#3

bool Ability4() - способность#4

bool Ability5() - способность#5

bool Ability6() - способность#6

void AutoAttack() - совершить автоатаку по цели

bool checkDead() - проверить, мерт ли персонаж

int DealDamage(int SpScale, int AttackScale) - нанести урон цели

void Jump() - прыгнуть

void lowerCooldown() - снизить время перезарядки всех способностей

void Move(int dir) - идти вперед/назад/вправо/влево

void TakeDamage(int DmgCaused, int DmgType) - получить урон

class Addition - обобщенное представление бонусов к характеристикам

Атрибуты:

int BonusArmor - количество дополнительной брони

int BonusAS - количество дополнительной скорости атаки

int BonusAttack - количество дополнительного урона

int BonusHealth - количество дополнительного здоровья

int BonusMana - количество дополнительной маны

float BonusMReg - количество дополнительной регенерации маны

int BonusMRes - количество дополнительного маг. сопротивления

int BonusMS - количество дополнительной скорости передвижения

int BonusSP - количество дополнительной силы способностей

class Buff : public Addition - усиление

Атрибуты:

char BuffName[30] - название усиления

float Duration - изначальная продолжительность усиления

float EndsIn - оставшаяся продолжительность усиления

float multArmor - множитель брони

float multAS - множитель скорости атаки

float multAttack - множитель урона

float multHealth - множитель здоровья

float multMana - множитель маны

float multMReg - множитель регенерации маны

float multMRes - множитель магического сопротивления

float multMS - множитель скорости передвижения

float multSP - множитель силы способностей

Функции:

void lowerDuration() - снизить оставшуюся продолжительность усиления

class BuffList - множество действующих усилений (контейнер)

Атрибуты:

Buff *m_Buff - список с действующими усилениями

Функции:

void addBuff(Buff aBuff) - добавить новое усиление в контейнер

void lowerDuration() - снизить оставшуюся продолжительность усилений

void removeBuff(int BuffNum) - убрать усиление из контейнера

class Item : public Addition - предмет

Атрибуты:

char ItemName[30] - название предмета

int LevelRequired - требуемый уровень для использования

int Slot - индекс соответствующего предмету слота в инвентаре

Функции:

bool checkLevel(int Level) - проверить, подходит ли предмет персонажу по уровню

class Inventory : public Addition - инвентарь, множество экипированных предметов (контейнер)

Атрибуты:

Item *m_Item - список с экипированными предметами

Функции:

bool checkLevel(int Level, Item eItem) - проверить, подходит ли добавляемый предмет персонажу по уровню

void EquipItem(Item eItem) - экипировать предмет

Item removeItem(int Slot) - снять предмет

class Bag - сумка, множество неэкипированных предметов (контейнер)

Атрибуты:

Item *m_Item - список с неэкипированными предметами

int SlotsLeft - количество незанятых позиций в списке

Функции:

void addItem(Item cItem) - положить предмет в сумку

Item takeFrom(int SlotNum) - взять предмет из сумки

class NPC : public Character - неигровой персонаж

Атрибуты:

Item DroppedItem - случайно выбранный предмет, падающий после смерти

int ExpGranted - количества опыта за убийство персонажа

bool isEnemy - враг ли персонаж?

PlayerCharacter* Target -персонаж игрока как цель

Функции:

void DropItem() - случайно выбирает предмет ,который должен выпасть после смерти

void Interact() - взаимодействие с игроком (например, диалог)

void newTarget(PlayerCharacter tPC) - выбрать персонажа игрока как цель

void Redefine() - переопределение характеристик при их изменении

void Respond() - выбирает оптимальное действие в бою

class PlayerCharacter : public Character - персонаж игрока

Атрибуты:

Bag Bag; - сумка с предметами персонажа

int CharExp - текущее количество опыта

Inventory Inventory - инвентарь персонажа

NPC* Target - текущая цель игрока

код enterprise architect

Функции:

void addExp(int exp) - добавляет опыт персонажу игрока

bool checkExp() - проверить, достаточно ли у игрока опыта для перехода на новый уровень

Item LootItem(NPC DeadNPC) - подобрать предмет с мертвого вражеского персонажа

void newTarget(NPC tNPC) - сменить цель

void NextLevel() - повысить уровень игрока

void Redefine() - переопределение характеристик при их изменении

void tryInteract() - попытаться взаимодействовать с неигровым персонажем

3.) Прототип кода, сгенерированный в Enterprise Architect

Addition.h

class Addition

{

public:

Addition();

virtual ~Addition();

protected:

int BonusArmor;

int BonusAS;

int BonusAttack;

int BonusHealth;

int BonusMana;

float BonusMReg;

int BonusMRes;

int BonusMS;

int BonusSP;

};

Buff.h

#include "Addition.h"

class Buff : public Addition

{

public:

Buff();

virtual ~Buff();

void lowerDuration();

protected:

char BuffName[30];

float Duration;

float EndsIn;

float multArmor;

float multAS;

float multAttack;

float multHealth;

float multMana;

float multMReg;

float multMRes;

float multMS;

float multSP;

};

BuffList.h

#include "Buff.h"

class BuffList

{

public:

BuffList();

virtual ~BuffList();

Buff *m_Buff;

void addBuff(Buff aBuff);

void lowerDuration();

void removeBuff(int BuffNum);

};

Character.h

class Character

{

public:

Character();

virtual ~Character();

bool Ability1();

bool Ability2();

bool Ability3();

bool Ability4();

bool Ability5();

bool Ability6();

void AutoAttack();

bool checkDead();

int DealDamage(int SpScale, int AttackScale);

void Jump();

void lowerCooldown();

void Move(int dir);

void TakeDamage(int DmgCaused, int DmgType);

protected:

int Armor;

int Attack;

int AttackSpeed;

BuffList Buffs;

int CharLevel;

int Class;

float Cooldown[6];

int Health;

bool inCombat;

bool isDead;

int MagicResistance;

int Mana;

float ManaReg;

int maxHealth;

int maxMana;

int MoveSpeed;

char name[30];

bool onSurface;

int Race;

int SpellPower;

};

Item.h

#include "Addition.h"

class Item : public Addition

{

public:

Item();

virtual ~Item();

bool checkLevel(int Level);

protected:

char ItemName[30];

int LevelRequired;

int Slot;

};

Inventory.h

#include "Addition.h"

#include "Item.h"

class Inventory : public Addition

{

public:

Inventory();

virtual ~Inventory();

Item *m_Item;

bool checkLevel(int Level, Item eItem);

void EquipItem(Item eItem);

Item removeItem(int Slot);

};

Bag.h

#include "Item.h"

class Bag

{

public:

Bag();

virtual ~Bag();

Item *m_Item;

void addItem(Item cItem);

Item takeFrom(int SlotNum);

protected:

int SlotsLeft;

};

NPC.h

#include "Item.h"

#include "PlayerCharacter.h"

#include "Character.h"

class NPC : public Character

{

public:

NPC();

virtual ~NPC();

PlayerCharacter *m_PlayerCharacter;

void DropItem();

void Interact();

void newTarget(PlayerCharacter tPC);

void Redefine();

void Respond();

protected:

Item DroppedItem;

int ExpGranted;

bool isEnemy;

PlayerCharacter* Target;

};

PlayerCharacter.h

#include "Bag.h"

#include "Inventory.h"

#include "Item.h"

#include "NPC.h"

#include "Character.h"

class PlayerCharacter : public Character

{

public:

PlayerCharacter();

virtual ~PlayerCharacter();

void addExp(int exp);

bool checkExp();

Item LootItem(NPC DeadNPC);

void newTarget(NPC tNPC);

void NextLevel();

void Redefine();

void tryInteract();

protected:

Bag Bag;

int CharExp;

Inventory Inventory;

NPC* Target;

};

Размещено на Allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.