I should have lost two bonus cards in the end-of-cycle process on my second move action, but I only lost one.
//only one card type => automatic throw
for (int i = 0; i < 2; ++i) {
Card thrownCard = throwableCards.get(0);
player.removeCardInHand(thrownCard);
if (thrownCard.isGoodActionBonus()) {
bonusCardsPool.push((BonusCard) thrownCard);
} else {
zones[thrownCard.getCardType().ordinal()].returnCard(thrownCard);
}
gameSummaryManager.addThrowCard(player, thrownCard);
view.playerThrowsCard(0.5, thrownCard);
}
I checked the end-of-cycle process and found that if there is only one skill card type, it is automatically discarded, but it seems that the same object is specified as the target of the removed card, so only one card is removed.
In “Input for One Game Turn” section, there’s a sentence which says:
“permanentArchitectureStudyCards : the amount of ARCHITECTURE_STUDY (2) cards played.”
which the correct ID of this skill is 4, not 2.
Also, in the same section, it is written “Line 1: gamePhase the name of the current game phase. It can be MOVE, RELEASE”, but in Bronze league it actually can be MOVE, GIVE_CARD, THROW_CARD, PLAY_CARD, and RELEASE.
At turn 53 in this replay, I used TRAINING card then draw two CODING cards, but the next input is RELEASE phase, not PLAY_CARD. Why is the PLAY_CARD phase skipped? It should be that after using TRAINING card, I can use one more card.
It looks still possible to loop by CODING-> (DAILY_ROUTINE or something) ->TRAINING, starting with one card in deck. Is this acceptable?
My naive idea to prevent loop is to prohibit using the same card twice in a turn by pooling used card until the end of a turn, like the famous game Dominion (card game) - Wikipedia
Indeed. When you look at the original game rules, this is what they do. I missed it
I’ll see how we can do it without breaking all the input/output (maybe add a PLAYED_CARDS like the HAND input)
On the last frame, I’m picking a random move from the (filtered) list of possible moves given by the referee, but I’m getting disqualified because the move is not possible. However the summary suggests it is possible, as I do have a CONTINUOUS_INTEGRATION CARD in hand.
Standard Output Stream:
TASK_PRIORITIZATION 5 1
Game Summary:
Bob can play a card/perform an action
Bob has in hand: TECHNICAL_DEBT (9), TECHNICAL_DEBT (9), CONTINUOUS_INTEGRATION (5), BONUS (8), BONUS (8), ARCHITECTURE_STUDY (4), TASK_PRIORITIZATION (3), CODE_REVIEW (6)
Bob provided incorrect input. you do not have a card of type CONTINUOUS_INTEGRATION to deprioritize
Bob was disqualified.