package com.barcicki.trio.tutorial; import com.barcicki.trio.core.Card; import com.barcicki.trio.core.CardList; import com.barcicki.trio.core.Trio; public class TrioSet { private Card cardA; private Card cardB; private Card solution; private boolean solved = false; private CardList quizSet = null; public TrioSet(Card cardA, Card cardB) { this.cardA = cardA; this.cardB = cardB; } public CardList getTrio() { CardList set = new CardList(); set.add(cardA); set.add(cardB); set.add( Trio.getTrioCard(cardA, cardB) ); return set; } public boolean isSolved() { return solved; } public void setSolved(boolean solved) { this.solved = solved; } public Card getCardA() { return cardA; } public void setCardA(Card cardA) { this.cardA = cardA; } public Card getCardB() { return cardB; } public void setCardB(Card cardB) { this.cardB = cardB; } public Card getSolution() { if (null == solution) solution = Trio.getTrioCard(cardA, cardB); return solution; } public void setSolution(Card solution) { this.solution = solution; } public CardList getTrioQuiz(CardList deck, int numberOfAdditionalCards) { if (quizSet == null) { CardList set = new CardList(); set.add( getSolution() ); deck.shuffle(); int i = 0; do { Card card = deck.get(i); if (!card.isEqual( getSolution() ) && !card.isEqual( getCardA() ) && !card.isEqual( getCardB() )) { set.add(card); } i++; } while (set.size() <= numberOfAdditionalCards); quizSet = set; } return quizSet; } }