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.application.service.*;
|
||||||
import at.nanopenguin.mtcg.http.HttpMethod;
|
import at.nanopenguin.mtcg.http.HttpMethod;
|
||||||
import at.nanopenguin.mtcg.http.Router;
|
import at.nanopenguin.mtcg.http.Router;
|
||||||
@ -1,6 +1,7 @@
|
|||||||
package at.nanopenguin.mtcg.application;
|
package at.nanopenguin.mtcg.application;
|
||||||
|
|
||||||
import at.nanopenguin.mtcg.Pair;
|
import at.nanopenguin.mtcg.Pair;
|
||||||
|
import at.nanopenguin.mtcg.application.service.schemas.Card;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
@ -10,6 +11,7 @@ import java.util.List;
|
|||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
public class Battle {
|
public class Battle {
|
||||||
|
private record RoundResult(String winnerName, Card winnerCard, String loserName, Card loserCard, boolean draw);
|
||||||
private Pair<Combatant, Combatant> combatants;
|
private Pair<Combatant, Combatant> combatants;
|
||||||
@Getter
|
@Getter
|
||||||
private volatile List<String> log = new ArrayList<>();
|
private volatile List<String> log = new ArrayList<>();
|
||||||
@ -26,10 +28,27 @@ public class Battle {
|
|||||||
|
|
||||||
public void start() throws SQLException {
|
public void start() throws SQLException {
|
||||||
|
|
||||||
|
do {
|
||||||
|
this.playRound();
|
||||||
|
} while (combatants.left().deckSize() > 0 && combatants.right().deckSize() > 0);
|
||||||
|
|
||||||
// placeholder
|
// placeholder
|
||||||
boolean leftWins = new Random().nextBoolean();
|
boolean leftWins = new Random().nextBoolean();
|
||||||
this.combatants.left().updateStats(leftWins);
|
this.combatants.left().updateStats(leftWins);
|
||||||
this.combatants.right().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 at.nanopenguin.mtcg.db.*;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
public class Combatant {
|
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 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 {
|
public Combatant(UUID userUuid) throws SQLException {
|
||||||
this.userUuid = userUuid;
|
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 {
|
public void updateStats(boolean win) throws SQLException {
|
||||||
@ -30,4 +46,16 @@ public class Combatant {
|
|||||||
.condition("uuid", userUuid)
|
.condition("uuid", userUuid)
|
||||||
.executeUpdate();
|
.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