WeightDraftBot now correctly picks the last card; Fixed drafted cards not being added to bots collections; Fixed pointless draft advancing when bot picked

This commit is contained in:
jakub.salavec
2025-03-06 16:00:39 +01:00
parent 7e796486ee
commit f66a1c4ebc
2 changed files with 6 additions and 8 deletions

View File

@@ -172,6 +172,7 @@ public class TableDraftClassic implements TableDraft{
String pickedCard = assignedBoosters.get(draftPlayer).pickCard(card); String pickedCard = assignedBoosters.get(draftPlayer).pickCard(card);
// Add to collection // Add to collection
if (draftPlayer instanceof DraftBot) { if (draftPlayer instanceof DraftBot) {
botCollections.get(((DraftPlayer) draftPlayer)).addItem(pickedCard, 1);
return; return;
} }
DefaultCardCollection pickedCardCollection = new DefaultCardCollection(); DefaultCardCollection pickedCardCollection = new DefaultCardCollection();
@@ -310,7 +311,9 @@ public class TableDraftClassic implements TableDraft{
chosenCards.put(who, what); chosenCards.put(who, what);
//Check if all players chose //Check if all players chose
advanceDraft(); if (!(who instanceof DraftBot)) {
advanceDraft();
}
} }
@Override @Override

View File

@@ -33,16 +33,11 @@ public class WeightDraftBot extends DraftPlayer implements DraftBot {
private List<String> getTopCards(List<String> cardsToPickFrom) { private List<String> getTopCards(List<String> cardsToPickFrom) {
// Sort the cards by value in descending order // Sort the cards by value in descending order
return cardsToPickFrom.stream() return cardsToPickFrom.stream()
.sorted((card1, card2) -> Double.compare(cardValues.getOrDefault(card2, 0.0), cardValues.getOrDefault(card1, 0.0))) .sorted((card1, card2) -> Double.compare(cardValues.getOrDefault(card2, 0.1), cardValues.getOrDefault(card1, 0.1)))
.limit(getTopCardCount(cardsToPickFrom.size())) .limit(2) // Choose from two highest ranked cards
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
private int getTopCardCount(int packSize) {
// Choose top 3 cards if the pack has more than 5, otherwise choose half of the cards
return packSize <= 5 ? packSize / 2 : 3;
}
private double getTotalValue(List<String> topCards) { private double getTotalValue(List<String> topCards) {
// Sum up the values of the top N cards // Sum up the values of the top N cards
return topCards.stream() return topCards.stream()