From 0f21993e81ce0a1bfc3080ba63d3b97fc17d7d2a Mon Sep 17 00:00:00 2001 From: Abolfazl Ghalandary Date: Thu, 20 May 2021 21:37:21 +0430 Subject: [PATCH 1/2] handle spell absorption bug --- pom.xml | 21 ------------------- .../gamephasescontrollers/GameController.java | 2 +- .../MainPhasesController.java | 3 +-- src/main/java/model/cards/SpellAndTrap.java | 5 ++--- 4 files changed, 4 insertions(+), 27 deletions(-) diff --git a/pom.xml b/pom.xml index 625ebdd8..c1327c5b 100644 --- a/pom.xml +++ b/pom.xml @@ -68,32 +68,11 @@ 5.4 - - org.deeplearning4j - deeplearning4j-nn - 1.0.0-alpha - - - - org.deeplearning4j - deeplearning4j-datasets - ${dl4j-master.version} - org.datavec datavec-api 1.0.0-alpha - - org.deeplearning4j - deeplearning4j-datavec-iterators - 1.0.0-alpha - - - org.nd4j - nd4j-api - 1.0.0-alpha - diff --git a/src/main/java/controller/gamephasescontrollers/GameController.java b/src/main/java/controller/gamephasescontrollers/GameController.java index 7d28193f..84170964 100644 --- a/src/main/java/controller/gamephasescontrollers/GameController.java +++ b/src/main/java/controller/gamephasescontrollers/GameController.java @@ -243,7 +243,7 @@ public void activateTrapEffect(ArrayList trapsCanBeActivated) { Cell selectedCell = Cell.getSelectedCell(); for (SpellAndTrap spellAndTrap : trapsCanBeActivated) { if (selectedCell.getCellCard().getName().equals(spellAndTrap.getName())) { - SpellAndTrap.activateSpellOrTrapEffects(this, spellAndTrap); + SpellAndTrap.activateSpellEffects(this, spellAndTrap); return; } } diff --git a/src/main/java/controller/gamephasescontrollers/MainPhasesController.java b/src/main/java/controller/gamephasescontrollers/MainPhasesController.java index 8cfc1b10..4611796e 100644 --- a/src/main/java/controller/gamephasescontrollers/MainPhasesController.java +++ b/src/main/java/controller/gamephasescontrollers/MainPhasesController.java @@ -16,7 +16,6 @@ import model.cards.monsters.TheTricky; import model.cards.trapandspells.TimeSeal; import model.cards.trapandspells.TorrentialTribute; -import model.cards.trapandspells.TrapHole; import model.exceptions.GameException; import view.ConsoleColors; import view.ViewInterface; @@ -271,7 +270,7 @@ default void activateSpell(GameController gameController) throws GameException { if(Cell.getSelectedCell().isEmpty()||Cell.getSelectedCell()==null){ System.out.println("error in activate effect"); } - SpellAndTrap.activateSpellOrTrapEffects(gameController, spell); + SpellAndTrap.activateSpellEffects(gameController, spell); // if(!playerGameBoard.isCellInSpellAndTrapZone(selectedCell)) { // playerGameBoard.getHandCards().remove(selectedCell); // if (spell.getAttribute() == SpellOrTrapAttribute.FIELD) { diff --git a/src/main/java/model/cards/SpellAndTrap.java b/src/main/java/model/cards/SpellAndTrap.java index ba3962d1..a4f27180 100644 --- a/src/main/java/model/cards/SpellAndTrap.java +++ b/src/main/java/model/cards/SpellAndTrap.java @@ -26,7 +26,7 @@ public SpellAndTrap(String name, String description, int price, this.status = status; } - public static void activateSpellOrTrapEffects(GameController gameController, SpellAndTrap spellAndTrap) { + public static void activateSpellEffects(GameController gameController, SpellAndTrap spellAndTrap) { if (spellAndTrap.name.equals("Monster Reborn")) MonsterReborn.setActivated(gameController); else if (spellAndTrap.name.equals("Terraforming")) Terraforming.setActivated(gameController); else if (spellAndTrap.name.equals("Pot of Greed")) PotofGreed.setActivated(gameController); @@ -53,8 +53,6 @@ else if (spellAndTrap.name.equals("Sword of dark destruction")) else { ViewInterface.showResult(GameResponses.ACTIVATION_ONLY_FOR_SPELL.response); } - //todo : in be nazaram qhalate (parham) - SpellAbsorption.handleEffect(); } public static void updateSpellInGameBoard(GameController gameController) { @@ -74,6 +72,7 @@ public static void updateSpellInGameBoard(GameController gameController) { } } } else { + SpellAbsorption.handleEffect(); selectedCell.setCardStatus(CardStatus.OCCUPIED); } Cell.deselectCell(); From 74bd7e999e20aba3e7e5e8a723c8245cd98c4488 Mon Sep 17 00:00:00 2001 From: Abolfazl Ghalandary Date: Thu, 20 May 2021 22:10:19 +0430 Subject: [PATCH 2/2] fix some bugs --- src/main/java/controller/AIPlayerController.java | 13 +++++++------ .../gamephasescontrollers/MainPhasesController.java | 2 ++ src/main/java/model/cards/SpellAndTrap.java | 2 ++ 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/controller/AIPlayerController.java b/src/main/java/controller/AIPlayerController.java index 16ebfd71..0799e16b 100644 --- a/src/main/java/controller/AIPlayerController.java +++ b/src/main/java/controller/AIPlayerController.java @@ -193,11 +193,6 @@ public String getSpecialCommand() { lastAICommand = command; return command; } - if (lastResponse.contains("number")) { - String command = (CoinDice.rollDice() + CoinDice.rollDice() - 1) + ""; - lastAICommand = command; - return command; - } if (lastResponse.contains("you should special summon right now")) { String command = "summon"; lastAICommand = command; @@ -253,13 +248,19 @@ public String getSpecialCommand() { return lastAICommand; } } - if (lastResponse.contains("choose a monster from your or your opponents graveyard")) { + if (lastResponse.contains("choose a monster from your or your opponents graveyard") || + lastResponse.contains("(me (number)/opponent (number))")) { String command; if (CoinDice.tossCoin() == 1) command = "me " + CoinDice.rollDice(); else command = "opponent " + CoinDice.rollDice(); lastAICommand = command; return command; } + if (lastResponse.contains("number")) { + String command = (CoinDice.rollDice() + CoinDice.rollDice() - 1) + ""; + lastAICommand = command; + return command; + } if (CoinDice.rollDice() == 6) { lastAICommand = "cancel"; diff --git a/src/main/java/controller/gamephasescontrollers/MainPhasesController.java b/src/main/java/controller/gamephasescontrollers/MainPhasesController.java index 4611796e..2d368db0 100644 --- a/src/main/java/controller/gamephasescontrollers/MainPhasesController.java +++ b/src/main/java/controller/gamephasescontrollers/MainPhasesController.java @@ -255,6 +255,7 @@ default void activateSpell(GameController gameController) throws GameException { throw new GameException(GameResponses.NO_CARDS_SELECTED.response); } else { Card card = selectedCell.getCellCard(); + if (card == null) return; if (card.isMonster()) { throw new GameException(GameResponses.ACTIVATION_ONLY_FOR_SPELL.response); } else { @@ -341,6 +342,7 @@ default void specialSummon(GameController gameController) throws GameException { } default boolean isSummonable(Cell cell,GameController gameController) { + if (cell.isEmpty()) return false; Card card=cell.getCellCard(); if (card.isMonster()&&gameController.currentTurnPlayer.getGameBoard().isCellInHandZone(cell)) { return ((Monster) card).getCardType() != CardType.RITUAL; diff --git a/src/main/java/model/cards/SpellAndTrap.java b/src/main/java/model/cards/SpellAndTrap.java index a4f27180..2d86f862 100644 --- a/src/main/java/model/cards/SpellAndTrap.java +++ b/src/main/java/model/cards/SpellAndTrap.java @@ -57,8 +57,10 @@ else if (spellAndTrap.name.equals("Sword of dark destruction")) public static void updateSpellInGameBoard(GameController gameController) { Cell selectedCell = Cell.getSelectedCell(); + if (selectedCell == null) return; Card card = selectedCell.getCellCard(); SpellAndTrap spell = (SpellAndTrap) card; + if (spell == null) return; GameBoard playerGameBoard = gameController.getCurrentTurnPlayer().getGameBoard(); if (!playerGameBoard.isCellInSpellAndTrapZone(selectedCell)) { playerGameBoard.getHandCards().remove(selectedCell);