У меня проблема с двумя решениями, которые нужно выбрать. Интересно, какой правильный способ реализации атрибутов в RPG. Будем, ради этого, сказать, что у нас есть три атрибута. Наступательные, Оборонительные и Скорость. У каждого персонажа есть такие. Где-то мне нужно сохранить имя, описание и значения атрибутов. Я полагаю, что это должно быть сделано в Attributes.java
. Давая мне следующее Attribute.java
Внедрение систем атрибутов и навыков
public class Attribute
{
private String name;
private String desc;
private int value;
public Attribute (String name, String desc, int value) {
this.name = name;
this.desc = desc;
this.value = value;
}
public String getName() { // for desc and value as well
return name;
}
}
Теперь на проблемы, были ли я создавать и хранить эти атрибуты?
Вариант № 1, я создаю их здесь, заполняя ArrayList с ними
Character.java
import java.util.ArrayList;
import java.util.List;
public class Character
{
private List<Attribute> attributes;
public Character() {
attributes = new ArrayList<Attribute>();
}
public List<Attribute> getAttributes() {
return attributes;
}
}
Option # 2, я создаю AttributeSystem
AttributeSystem. java
public class AttributeSystem
{
private List<Attribute> attributes;
public AttributeSystem() {
attributes = new ArrayList<Attribute>();
attributes.add (new Attribute ("Offensive", "Your damage.", 5);
attributes.add (new Attribute ("Defensive", "Your defense.", 5);
attributes.add (new Attribute ("Speed", "Your speed.", 5);
}
public Attribute getAttribute(int i) {
return attributes[i];
}
}
Character.java
public class Character
{
private AttributeSystem attributes;
public Character() {
attributes = new AttributeSystem();
}
public AttributeSystem getAttributes() {
return attributes;
}
}
Заключение
Вариант № 2 делает логически больше смысла для меня. В обоих случаях я могу использовать HashMap вместо ArrayList.
Какой и зачем использовать?
Final Примечание
Это делает не эффекты на вашем персонаже. У него также нет возможности добавлять точки атрибутов. Игнорируйте эти два фактора на данный момент.
Этот вопрос, как представляется, не по теме, поскольку речь идет о проверке кода, вы должны отправить это вопрос на http://codereview.stackexchange.com – LearnCocos2D
Так что codereview было бы лучше? Я не размещал его там, потому что код далеко не полный или реальный. Вопрос в том, какая из двух реализаций лучше использовать? Или, возможно, если есть третий, о котором я не знаю. – Emz
Обзор кода Emz лучше подходит ИМО. У вас нет конкретной проблемы, просто вопрос о том, какое решение выбрать. Это можно рассматривать как, в первую очередь, мнение. – Magnilex