mirror of
https://gitlab.com/arnekeller/kit-programmieren-ws1920-final2.git
synced 2024-11-08 18:00:37 +00:00
Correctly handle game end
This commit is contained in:
parent
6c8f172d3f
commit
72c9922c44
@ -125,3 +125,30 @@ rollD6 3
|
|||||||
build anything
|
build anything
|
||||||
list-buildings
|
list-buildings
|
||||||
build ballon
|
build ballon
|
||||||
|
list-buildings
|
||||||
|
list-resources
|
||||||
|
build?
|
||||||
|
start metal,metal,metal,wood,wood,wood,wood,metal,metal,plastic,plastic,wood,wood,wood,wood,wood,wood,wood,plastic,plastic,plastic,plastic,plastic,plastic,plastic,plastic,plastic,plastic,plastic,plastic,plastic,plastic,wood,wood,metal,metal,wood,wood,wood,metal,metal,metal,metal,metal,metal,metal,metal,metal,spider,spider,spider,spider,spider,snake,snake,snake,snake,snake,tiger,tiger,tiger,tiger,thunderstorm,tiger
|
||||||
|
draw
|
||||||
|
draw
|
||||||
|
draw
|
||||||
|
build axe
|
||||||
|
list-buildings
|
||||||
|
draw
|
||||||
|
draw
|
||||||
|
draw
|
||||||
|
draw
|
||||||
|
draw
|
||||||
|
draw
|
||||||
|
draw
|
||||||
|
draw
|
||||||
|
build sailingraft
|
||||||
|
rollD6 6
|
||||||
|
list-buildings
|
||||||
|
list-resources
|
||||||
|
reset
|
||||||
|
draw
|
||||||
|
draw
|
||||||
|
draw
|
||||||
|
build axe
|
||||||
|
list-buildings
|
||||||
|
@ -75,3 +75,30 @@ fireplace
|
|||||||
club
|
club
|
||||||
axe
|
axe
|
||||||
OK
|
OK
|
||||||
|
Error, can not get buildings: game not started
|
||||||
|
Error, can not get resources: game not started
|
||||||
|
Error, can not get buildable items: game not started
|
||||||
|
OK
|
||||||
|
metal
|
||||||
|
metal
|
||||||
|
metal
|
||||||
|
OK
|
||||||
|
axe
|
||||||
|
wood
|
||||||
|
wood
|
||||||
|
wood
|
||||||
|
wood
|
||||||
|
metal
|
||||||
|
metal
|
||||||
|
plastic
|
||||||
|
plastic
|
||||||
|
OK
|
||||||
|
win
|
||||||
|
Error, can not get buildings: game not started
|
||||||
|
Error, can not get resources: game not started
|
||||||
|
OK
|
||||||
|
metal
|
||||||
|
metal
|
||||||
|
metal
|
||||||
|
OK
|
||||||
|
axe
|
||||||
|
@ -78,4 +78,4 @@ survived
|
|||||||
tiger
|
tiger
|
||||||
survived
|
survived
|
||||||
thunderstorm
|
thunderstorm
|
||||||
EMPTY
|
Error, can not get resources: game not started
|
||||||
|
@ -44,7 +44,7 @@ public class CardGame {
|
|||||||
* @return whether the game could be successfully started
|
* @return whether the game could be successfully started
|
||||||
*/
|
*/
|
||||||
public boolean start(Deque<Card> cardStack) throws InvalidInputException {
|
public boolean start(Deque<Card> cardStack) throws InvalidInputException {
|
||||||
if (!gameStarted()) {
|
if (cardStack == null || currentCardStack == null) {
|
||||||
if (Collections.frequency(cardStack, WOOD) != 16 || Collections.frequency(cardStack, PLASTIC) != 16
|
if (Collections.frequency(cardStack, WOOD) != 16 || Collections.frequency(cardStack, PLASTIC) != 16
|
||||||
|| Collections.frequency(cardStack, METAL) != 16 || Collections.frequency(cardStack, SPIDER) != 5
|
|| Collections.frequency(cardStack, METAL) != 16 || Collections.frequency(cardStack, SPIDER) != 5
|
||||||
|| Collections.frequency(cardStack, SNAKE) != 5 || Collections.frequency(cardStack, TIGER) != 5
|
|| Collections.frequency(cardStack, SNAKE) != 5 || Collections.frequency(cardStack, TIGER) != 5
|
||||||
@ -52,7 +52,7 @@ public class CardGame {
|
|||||||
throw new InvalidInputException("invalid deck: missing or surplus cards");
|
throw new InvalidInputException("invalid deck: missing or surplus cards");
|
||||||
}
|
}
|
||||||
this.cardStack = new ArrayDeque<>(cardStack);
|
this.cardStack = new ArrayDeque<>(cardStack);
|
||||||
this.currentCardStack = new ArrayDeque<>(cardStack);
|
reset();
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false; // game already started
|
return false; // game already started
|
||||||
@ -105,6 +105,7 @@ public class CardGame {
|
|||||||
// remove item used to escape
|
// remove item used to escape
|
||||||
items.remove(items.size() - 1);
|
items.remove(items.size() - 1);
|
||||||
if (roll >= minimumNeeded) {
|
if (roll >= minimumNeeded) {
|
||||||
|
win();
|
||||||
return "win";
|
return "win";
|
||||||
} else {
|
} else {
|
||||||
return "lose";
|
return "lose";
|
||||||
@ -134,7 +135,7 @@ public class CardGame {
|
|||||||
items.add(item);
|
items.add(item);
|
||||||
if (item.equals(STEAMBOAT) || item.equals(BALLOON)) {
|
if (item.equals(STEAMBOAT) || item.equals(BALLOON)) {
|
||||||
// player won
|
// player won
|
||||||
reset();
|
win();
|
||||||
} else if (item.equals(SAILING_RAFT) || item.equals(HANG_GLIDER)) {
|
} else if (item.equals(SAILING_RAFT) || item.equals(HANG_GLIDER)) {
|
||||||
// need at least a 4/d6
|
// need at least a 4/d6
|
||||||
fightingAnimal = false;
|
fightingAnimal = false;
|
||||||
@ -170,7 +171,7 @@ public class CardGame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean gameStarted() {
|
private boolean gameStarted() {
|
||||||
return cardStack != null;
|
return currentCardStack != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Deque<Card> getResources() throws InvalidInputException {
|
public Deque<Card> getResources() throws InvalidInputException {
|
||||||
@ -196,6 +197,10 @@ public class CardGame {
|
|||||||
return Arrays.stream(Item.values()).filter(this::canBuild).collect(Collectors.toSet());
|
return Arrays.stream(Item.values()).filter(this::canBuild).collect(Collectors.toSet());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void win() {
|
||||||
|
currentCardStack = null;
|
||||||
|
}
|
||||||
|
|
||||||
public void reset() {
|
public void reset() {
|
||||||
if (cardStack != null) {
|
if (cardStack != null) {
|
||||||
this.currentCardStack = new ArrayDeque<>(cardStack);
|
this.currentCardStack = new ArrayDeque<>(cardStack);
|
||||||
|
Loading…
Reference in New Issue
Block a user