Я первоклассник по изучению программной инженерии, и у меня возникли проблемы с демонстрацией, которую я должен сделать. Я кратко излагаю мой проект.
Не знаю, знаком ли кто-нибудь с игрой Clash Royal? Это игра, основанная на повышении трофеев и сборе карт. И каждая арена открывает новые карты.
Я хочу создать колоду. Где вы можете выбрать 8 карт, и я рассчитываю среднюю стоимость эликсира. Мне нужна функция, которая может отображать все карты, доступные для вашего диапазона трофеев.
Позвольте мне объяснить мою проблему:
Я создал Superclass: Card, и классы Troop, Spell, DefBuilding и PassiveBuilding распространяются на этот суперкласс. После этого я создал класс: CardPool, в котором я определил все объекты для всех «классов карт».
Затем я создал Class: Arena, и в основном я объявил все арены. То, с чем я борюсь, это то, что я не знаю, как я помещаю все несколько карт в вектор соответствующей Арены. Что-то вроде карты 1-2-3 должно входить в вектор Арены 1, а карты 4-5-6 - в вектор Арены 2. Только у меня есть 4 разных класса, все из которых являются картами.
Итак, актуальный вопрос таков:
Как я могу составить список векторов Арены 1 (или 2,3,4) и поместить 2 войска, 1 заклинание, 1 defBuilding в этот список векторов? И, в конце концов, сможете отображать их.
Последним, что я попробовал, было приведение класса, как вы можете видеть в моем классе CardPool. Это не сработало.
примечание: я сделал свой Class CardPool интерфейсом просто для того, чтобы попробовать что-то, слышал что-то об этом в школе.
Суперкласс: Карта
public class Card {
private String name;
private int elixer;
public Card(String name, int elixer) {
this.name = name;
this.elixer = elixer;
}
}
Класс: Отряд (только с Отрядом остальные классы одинаковы)
public class Troop extends Card {
private int dammage;
private int dammagePerSecond;
private int hitpoints;
private double range;
private double hitSpeed;
private String speed;
private int deathDammage;
private int count;
public Troop(String name, int elixer, int dammage, int dammagePerSecond, int hitpoints, double range, double hitSpeed, String speed, int deathDammage, int count) {
super(name, elixer);
this.dammage = dammage;
this.dammagePerSecond = dammagePerSecond;
this.hitpoints = hitpoints;
this.range = range;
this.hitSpeed = hitSpeed;
this.speed = speed;
this.deathDammage = deathDammage;
this.count = count;
}
}
class: CardPoop (теперь интерфейс, я показываю только 2 каждого класса)
public interface CardPool {
CardPool pekka = (CardPool) new Troop("P.E.K.K.A.", 7, 984, 546, 3458, 0, 1.8, "Slow", 0, 1 );
CardPool archer = (CardPool) new Troop ("Archer", 3, 89, 74, 252, 5, 1.2, "Medium", 0, 2 );
CardPool bombTower = (CardPool) new DefensiveBuilding ("Bomb Tower", 4, 184, 115, 1126, 6, 1.6, 35 );
CardPool cannon = (CardPool) new DefensiveBuilding("Cannon", 3, 127, 158, 742, 5.5, 0.8, 30);
CardPool barbarianHut = (CardPool) new PassiveBuilding("Barbarian Hut", 7, 1936, 60);
CardPool elixirCollector = (CardPool) new PassiveBuilding("Elixer Collector", 6, 888, 70);
CardPool arrow = (CardPool) new Spell("Arrows", 3, 243, 86, 4);
CardPool goblinBarrel = (CardPool) new Spell ("Goblin Barrel", 3, 300, 900, 1.5);
класс: Арена
import java.util.ArrayList;
public class Arena {
private String name;
private int minTrophies;
private int maxTrophies;
private ArrayList<CardPool> cardList = new ArrayList<>();
public ArrayList<CardPool> getCardList() {return cardList;}
public Arena(String name, int minTrophies, int maxTrophies) {
this.name = name;
this.minTrophies = minTrophies;
this.maxTrophies = maxTrophies;
}
}
класс: Main (только показывает первую арену полностью)
public class Main {
public static void main(String[] args) {
Arena trainingCamp = new Arena("Training Camp", 0, 0);
trainingCamp.getCardList().add(CardPool.arrow);
trainingCamp.getCardList().add(CardPool.minions);
trainingCamp.getCardList().add(CardPool.archer);
trainingCamp.getCardList().add(CardPool.knight);
trainingCamp.getCardList().add(CardPool.fireBall);
trainingCamp.getCardList().add(CardPool.miniPekka);
trainingCamp.getCardList().add(CardPool.musketeer);
trainingCamp.getCardList().add(CardPool.giant);
trainingCamp.getCardList().add(CardPool.wallBreakers);
trainingCamp.getCardList().add(CardPool.prince);
trainingCamp.getCardList().add(CardPool.babyDragon);
trainingCamp.getCardList().add(CardPool.skeletonArmy);
Так что теперь я получаю сообщение об ошибке, что я не могу разыграть Cardpool.
Что мне делать?
Надеюсь, некоторые из вас могут мне помочь.
Thx,
Pex