basic battle round logic - unfinished
~30 min of work
This commit is contained in:
parent
1b450f06a1
commit
1e81e96ad4
@ -1,3 +1,5 @@
|
||||
package at.nanopenguin.mtcg;
|
||||
|
||||
import at.nanopenguin.mtcg.application.service.*;
|
||||
import at.nanopenguin.mtcg.http.HttpMethod;
|
||||
import at.nanopenguin.mtcg.http.Router;
|
||||
@ -1,6 +1,7 @@
|
||||
package at.nanopenguin.mtcg.application;
|
||||
|
||||
import at.nanopenguin.mtcg.Pair;
|
||||
import at.nanopenguin.mtcg.application.service.schemas.Card;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@ -10,6 +11,7 @@ import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class Battle {
|
||||
private record RoundResult(String winnerName, Card winnerCard, String loserName, Card loserCard, boolean draw);
|
||||
private Pair<Combatant, Combatant> combatants;
|
||||
@Getter
|
||||
private volatile List<String> log = new ArrayList<>();
|
||||
@ -26,10 +28,27 @@ public class Battle {
|
||||
|
||||
public void start() throws SQLException {
|
||||
|
||||
do {
|
||||
this.playRound();
|
||||
} while (combatants.left().deckSize() > 0 && combatants.right().deckSize() > 0);
|
||||
|
||||
// placeholder
|
||||
boolean leftWins = new Random().nextBoolean();
|
||||
this.combatants.left().updateStats(leftWins);
|
||||
this.combatants.right().updateStats(!leftWins);
|
||||
}
|
||||
|
||||
private void playRound() {
|
||||
Pair<Card, Card> cards = new Pair<>(this.combatants.left().getCard(), this.combatants.right().getCard());
|
||||
RoundResult result = this.fight(cards.left(), cards.right());
|
||||
this.log.add()
|
||||
}
|
||||
|
||||
private boolean fight(Card left, Card right) {
|
||||
|
||||
}
|
||||
|
||||
private String createCombatString(RoundResult result) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,18 +5,34 @@ import at.nanopenguin.mtcg.application.service.schemas.Card;
|
||||
import at.nanopenguin.mtcg.db.*;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.*;
|
||||
|
||||
public class Combatant {
|
||||
|
||||
static class RandomList<E> extends ArrayList<E> {
|
||||
Random r = new Random();
|
||||
public E popRandom() {
|
||||
int i = r.nextInt(this.size());
|
||||
E e = this.get(i);
|
||||
this.remove(i);
|
||||
return e;
|
||||
}
|
||||
}
|
||||
private final UUID userUuid;
|
||||
private List<Card> deck = new ArrayList<Card>();
|
||||
public final String name;
|
||||
private RandomList<Card> deck = new RandomList<>();
|
||||
|
||||
public Combatant(UUID userUuid) throws SQLException {
|
||||
this.userUuid = userUuid;
|
||||
this.deck = Arrays.asList(UserCards.get(userUuid, true));
|
||||
this.name = (String) DbQuery.builder()
|
||||
.command(SqlCommand.SELECT)
|
||||
.table(Table.USERS)
|
||||
.column("name")
|
||||
.condition("uuid", userUuid)
|
||||
.executeQuery()
|
||||
.get(0)
|
||||
.get("name");
|
||||
this.deck.addAll(Arrays.asList(UserCards.get(userUuid, true)));
|
||||
}
|
||||
|
||||
public void updateStats(boolean win) throws SQLException {
|
||||
@ -30,4 +46,16 @@ public class Combatant {
|
||||
.condition("uuid", userUuid)
|
||||
.executeUpdate();
|
||||
};
|
||||
|
||||
public Card getCard() {
|
||||
return this.deck.popRandom();
|
||||
}
|
||||
|
||||
public void addCard(Card card) {
|
||||
this.deck.add(card);
|
||||
}
|
||||
|
||||
public int deckSize() {
|
||||
return this.deck.size();
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user