Skip to content

Commit

Permalink
working on AI ! changed the deck setter
Browse files Browse the repository at this point in the history
  • Loading branch information
Saee Saadat authored and Siniorss committed May 6, 2019
1 parent 2552904 commit 099f303
Showing 1 changed file with 149 additions and 137 deletions.
286 changes: 149 additions & 137 deletions duelyst/src/Model/account/AI.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import Model.PreProcess;
import Model.card.Card;

import Model.card.hermione.Hero;
import Model.card.hermione.Minion;
import Model.card.spell.Spell;
import Model.card.spell.Target;
Expand All @@ -15,146 +16,53 @@
import java.util.Random;

public class AI extends Account {
int level ;
Map map ;
Player enemy ;
Deck mode1 = new Deck("mode1");
Deck mode2 = new Deck("mode2");
Deck mode3 = new Deck("mode3");
{
try {
mode1.addCardToDeck(PreProcess.getHeroes().get(0));

mode1.addCardToDeck(PreProcess.getMinions().get(0));
mode1.addCardToDeck(PreProcess.getMinions().get(8));
mode1.addCardToDeck(PreProcess.getMinions().get(10));
mode1.addCardToDeck(PreProcess.getMinions().get(10));
mode1.addCardToDeck(PreProcess.getMinions().get(12));
mode1.addCardToDeck(PreProcess.getMinions().get(16));
mode1.addCardToDeck(PreProcess.getMinions().get(17));
mode1.addCardToDeck(PreProcess.getMinions().get(20));
mode1.addCardToDeck(PreProcess.getMinions().get(21));
mode1.addCardToDeck(PreProcess.getMinions().get(25));
mode1.addCardToDeck(PreProcess.getMinions().get(33));
mode1.addCardToDeck(PreProcess.getMinions().get(35));

mode1.addCardToDeck(PreProcess.getSpells().get(0));
mode1.addCardToDeck(PreProcess.getSpells().get(6));
mode1.addCardToDeck(PreProcess.getSpells().get(9));
mode1.addCardToDeck(PreProcess.getSpells().get(10));
mode1.addCardToDeck(PreProcess.getSpells().get(11));
mode1.addCardToDeck(PreProcess.getSpells().get(17));
mode1.addCardToDeck(PreProcess.getSpells().get(19));

mode1.addItemToDeck(PreProcess.getUsables().get(0));

}catch (FullDeckException e){}
catch (DeckAlreadyHasThisCardException e) {}
catch (DeckAlreadyHasAHeroException e) {}
catch (DeckAlreadyHasThisItemException e) {}


try {
mode2.addCardToDeck(PreProcess.getHeroes().get(4));

mode2.addCardToDeck(PreProcess.getMinions().get(1));
mode2.addCardToDeck(PreProcess.getMinions().get(2));
mode2.addCardToDeck(PreProcess.getMinions().get(4));
mode2.addCardToDeck(PreProcess.getMinions().get(7));
mode2.addCardToDeck(PreProcess.getMinions().get(11));
mode2.addCardToDeck(PreProcess.getMinions().get(14));
mode2.addCardToDeck(PreProcess.getMinions().get(14));
mode2.addCardToDeck(PreProcess.getMinions().get(18));
mode2.addCardToDeck(PreProcess.getMinions().get(22));
mode2.addCardToDeck(PreProcess.getMinions().get(26));
mode2.addCardToDeck(PreProcess.getMinions().get(29));
mode2.addCardToDeck(PreProcess.getMinions().get(32));
mode2.addCardToDeck(PreProcess.getMinions().get(34));

mode2.addCardToDeck(PreProcess.getSpells().get(1));
mode2.addCardToDeck(PreProcess.getSpells().get(2));
mode2.addCardToDeck(PreProcess.getSpells().get(4));
mode2.addCardToDeck(PreProcess.getSpells().get(7));
mode2.addCardToDeck(PreProcess.getSpells().get(8));
mode2.addCardToDeck(PreProcess.getSpells().get(12));
mode2.addCardToDeck(PreProcess.getSpells().get(18));

mode2.addItemToDeck(PreProcess.getUsables().get(9));

}catch (FullDeckException e){}
catch (DeckAlreadyHasThisCardException e) {}
catch (DeckAlreadyHasAHeroException e) {}
catch (DeckAlreadyHasThisItemException e) {}

try {
mode3.addCardToDeck(PreProcess.getHeroes().get(6));

mode3.addCardToDeck(PreProcess.getMinions().get(5));
mode3.addCardToDeck(PreProcess.getMinions().get(6));
mode3.addCardToDeck(PreProcess.getMinions().get(9));
mode3.addCardToDeck(PreProcess.getMinions().get(13));
mode3.addCardToDeck(PreProcess.getMinions().get(15));
mode3.addCardToDeck(PreProcess.getMinions().get(15));
mode3.addCardToDeck(PreProcess.getMinions().get(19));
mode3.addCardToDeck(PreProcess.getMinions().get(23));
mode3.addCardToDeck(PreProcess.getMinions().get(24));
mode3.addCardToDeck(PreProcess.getMinions().get(27));
mode3.addCardToDeck(PreProcess.getMinions().get(28));
mode3.addCardToDeck(PreProcess.getMinions().get(30));
mode3.addCardToDeck(PreProcess.getMinions().get(33));

mode3.addCardToDeck(PreProcess.getSpells().get(4));
mode3.addCardToDeck(PreProcess.getSpells().get(9));
mode3.addCardToDeck(PreProcess.getSpells().get(11));
mode3.addCardToDeck(PreProcess.getSpells().get(13));
mode3.addCardToDeck(PreProcess.getSpells().get(14));
mode3.addCardToDeck(PreProcess.getSpells().get(15));
mode3.addCardToDeck(PreProcess.getSpells().get(16));

mode3.addItemToDeck(PreProcess.getUsables().get(4));

}catch (FullDeckException e){}
catch (DeckAlreadyHasThisCardException e) {}
catch (DeckAlreadyHasAHeroException e) {}
catch (DeckAlreadyHasThisItemException e) {}
int level;
int move; //0: insert card , 1: move Hero , 2: attack with hero , 3: move minions , 4: attack with minions
Map map;
Player enemy;


}
public AI(int level) throws Exception {
public AI(int level) throws FullDeckException, DeckAlreadyHasThisCardException, InvalidDeckException,
DeckAlreadyHasAHeroException, DeckAlreadyHasThisItemException {
super("AI", "itsAI", "imAnAIgirlInAnAIWorld");
this.level = level;

try {
this.collection = new Collection();
collection.setOwner(this);
Deck deck;
if (level == 1) deck = mode1 ;
else if (level == 2) deck = mode2 ;
else deck = mode3 ;
Deck deck = getDeck(level);
deck.setCollection(collection);
collection.setMainDeck(deck.getName());


} catch (InvalidDeckException e) {
throw new Exception("this is not supposed to happen ! : AI constructor");
} catch (FullDeckException | DeckAlreadyHasThisCardException | DeckAlreadyHasAHeroException |
DeckAlreadyHasThisItemException | InvalidDeckException e) {
throw e;
}

}

public String play() {
String command;
map = Game.battle.getMap();
enemy = Game.battle.getEnemyPlayer() ;
enemy = Game.battle.getEnemyPlayer();
Random randTypeCard = new Random();
int randCard = randTypeCard.nextInt(2) ;
if (randCard == 0){
insertMinion() ;
}else{
insertSpell() ;
int randCard = randTypeCard.nextInt(2);
if (randCard == 0) {
command = insertMinion();
} else {
command = insertSpell();
}
if (command != null && !command.isEmpty()) return command;

return null;
Hero hero = collection.getMainDeck().getHero();


return "End turn";
}

private String insertMinion(){

private String insertMinion() {
String command = "";
for (Card card : this.player.getHand().getCards()) {
if (card.getClass().equals(Minion.class)) {
Expand All @@ -164,42 +72,146 @@ private String insertMinion(){
}
}
}
if (command.isEmpty()) return command ;
for (int i = 1 ; i < 8 ; i++){
Cell[] cells = this.map.getCellsInDistance(this.collection.getMainDeck().getHero().getLocation() , i) ;
for (Cell cell : cells){
if (cell.getCardOnCell() == null){
command = command + cell.getX() + ", " + cell.getY()+")" ;
return command ;
if (command.isEmpty()) return command;
for (int i = 1; i < 8; i++) {
Cell[] cells = this.map.getCellsInDistance(this.collection.getMainDeck().getHero().getLocation(), i);
for (Cell cell : cells) {
if (cell.getCardOnCell() == null) {
command = command + cell.getX() + ", " + cell.getY() + ")";
return command;
}
}
}
return null ;
return null;
}

private String insertSpell(){
private String insertSpell() {
String command = "";
Spell spell = null ;
Spell spell = null;
for (Card card : this.player.getHand().getCards()) {
if (card.getClass().equals(Spell.class)) {
if (player.getMana() >= card.getPrice()) {
command = "Insert " + card.getName() + " in (";
spell = (Spell) card ;
spell = (Spell) card;
break;
}
}
}
if (command.isEmpty() || spell == null) return command ;
Target target = spell.getTarget() ;
for (Cell cell : map.getCells()){
try{
if (command.isEmpty() || spell == null) return command;
Target target = spell.getTarget();
for (Cell cell : map.getCells()) {
try {
target.getTarget(cell);
command = command + cell.getX() + ", " + cell.getY()+")" ;
return command ;
}catch (InvalidCellException e){
command = command + cell.getX() + ", " + cell.getY() + ")";
return command;
} catch (InvalidCellException e) {
continue;
}
}
return null ;
return null;
}

private Deck getDeck(int level) throws FullDeckException, DeckAlreadyHasThisCardException,
DeckAlreadyHasAHeroException, DeckAlreadyHasThisItemException {
Deck deck = new Deck("AIDeck");
switch (level) {
case 1:
try {
deck.addCardToDeck(PreProcess.getHeroes().get(0));

deck.addCardToDeck(PreProcess.getMinions().get(0));
deck.addCardToDeck(PreProcess.getMinions().get(8));
deck.addCardToDeck(PreProcess.getMinions().get(10));
deck.addCardToDeck(PreProcess.getMinions().get(10));
deck.addCardToDeck(PreProcess.getMinions().get(12));
deck.addCardToDeck(PreProcess.getMinions().get(16));
deck.addCardToDeck(PreProcess.getMinions().get(17));
deck.addCardToDeck(PreProcess.getMinions().get(20));
deck.addCardToDeck(PreProcess.getMinions().get(21));
deck.addCardToDeck(PreProcess.getMinions().get(25));
deck.addCardToDeck(PreProcess.getMinions().get(33));
deck.addCardToDeck(PreProcess.getMinions().get(35));

deck.addCardToDeck(PreProcess.getSpells().get(0));
deck.addCardToDeck(PreProcess.getSpells().get(6));
deck.addCardToDeck(PreProcess.getSpells().get(9));
deck.addCardToDeck(PreProcess.getSpells().get(10));
deck.addCardToDeck(PreProcess.getSpells().get(11));
deck.addCardToDeck(PreProcess.getSpells().get(17));
deck.addCardToDeck(PreProcess.getSpells().get(19));

deck.addItemToDeck(PreProcess.getUsables().get(0));

} catch (FullDeckException | DeckAlreadyHasThisCardException | DeckAlreadyHasAHeroException |
DeckAlreadyHasThisItemException e) {
throw e;
}

case 2:
try {
deck.addCardToDeck(PreProcess.getHeroes().get(4));

deck.addCardToDeck(PreProcess.getMinions().get(1));
deck.addCardToDeck(PreProcess.getMinions().get(2));
deck.addCardToDeck(PreProcess.getMinions().get(4));
deck.addCardToDeck(PreProcess.getMinions().get(7));
deck.addCardToDeck(PreProcess.getMinions().get(11));
deck.addCardToDeck(PreProcess.getMinions().get(14));
deck.addCardToDeck(PreProcess.getMinions().get(14));
deck.addCardToDeck(PreProcess.getMinions().get(18));
deck.addCardToDeck(PreProcess.getMinions().get(22));
deck.addCardToDeck(PreProcess.getMinions().get(26));
deck.addCardToDeck(PreProcess.getMinions().get(29));
deck.addCardToDeck(PreProcess.getMinions().get(32));
deck.addCardToDeck(PreProcess.getMinions().get(34));

deck.addCardToDeck(PreProcess.getSpells().get(1));
deck.addCardToDeck(PreProcess.getSpells().get(2));
deck.addCardToDeck(PreProcess.getSpells().get(4));
deck.addCardToDeck(PreProcess.getSpells().get(7));
deck.addCardToDeck(PreProcess.getSpells().get(8));
deck.addCardToDeck(PreProcess.getSpells().get(12));
deck.addCardToDeck(PreProcess.getSpells().get(18));

deck.addItemToDeck(PreProcess.getUsables().get(9));
} catch (FullDeckException | DeckAlreadyHasThisCardException | DeckAlreadyHasAHeroException |
DeckAlreadyHasThisItemException e) {
throw e;
}

case 3:
try {
deck.addCardToDeck(PreProcess.getHeroes().get(6));

deck.addCardToDeck(PreProcess.getMinions().get(5));
deck.addCardToDeck(PreProcess.getMinions().get(6));
deck.addCardToDeck(PreProcess.getMinions().get(9));
deck.addCardToDeck(PreProcess.getMinions().get(13));
deck.addCardToDeck(PreProcess.getMinions().get(15));
deck.addCardToDeck(PreProcess.getMinions().get(15));
deck.addCardToDeck(PreProcess.getMinions().get(19));
deck.addCardToDeck(PreProcess.getMinions().get(23));
deck.addCardToDeck(PreProcess.getMinions().get(24));
deck.addCardToDeck(PreProcess.getMinions().get(27));
deck.addCardToDeck(PreProcess.getMinions().get(28));
deck.addCardToDeck(PreProcess.getMinions().get(30));
deck.addCardToDeck(PreProcess.getMinions().get(33));

deck.addCardToDeck(PreProcess.getSpells().get(4));
deck.addCardToDeck(PreProcess.getSpells().get(9));
deck.addCardToDeck(PreProcess.getSpells().get(11));
deck.addCardToDeck(PreProcess.getSpells().get(13));
deck.addCardToDeck(PreProcess.getSpells().get(14));
deck.addCardToDeck(PreProcess.getSpells().get(15));
deck.addCardToDeck(PreProcess.getSpells().get(16));

deck.addItemToDeck(PreProcess.getUsables().get(4));
} catch (FullDeckException | DeckAlreadyHasThisCardException | DeckAlreadyHasAHeroException |
DeckAlreadyHasThisItemException e) {
throw e;
}

}
return deck;
}
}

0 comments on commit 099f303

Please sign in to comment.