ajout 10 effet de carte
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -35,4 +35,32 @@ public class Board {
|
|||||||
return Arrays.stream(board).iterator();
|
return Arrays.stream(board).iterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getZoneOf(Card cardToUpDate) {
|
||||||
|
int index = 0;
|
||||||
|
for(Card c : board)
|
||||||
|
{
|
||||||
|
//si c'est la meme instance
|
||||||
|
if(c == cardToUpDate)
|
||||||
|
{
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getBoardSize()
|
||||||
|
{
|
||||||
|
int nbCardOnBoard = 0;
|
||||||
|
for(Card c : board)
|
||||||
|
{
|
||||||
|
//si c'est la meme instance
|
||||||
|
if(c != null)
|
||||||
|
{
|
||||||
|
nbCardOnBoard++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nbCardOnBoard;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+64
-18
@@ -5,7 +5,12 @@ import java.util.Iterator;
|
|||||||
|
|
||||||
import game.cards.Card;
|
import game.cards.Card;
|
||||||
import game.cards.CardRegistery;
|
import game.cards.CardRegistery;
|
||||||
|
import game.cards.SpecialCard.IAntiPlayer;
|
||||||
import game.cards.SpecialCard.ICanDoge;
|
import game.cards.SpecialCard.ICanDoge;
|
||||||
|
import game.cards.SpecialCard.IInvisible;
|
||||||
|
import game.cards.SpecialCard.ILifeSteal;
|
||||||
|
import game.cards.SpecialCard.IPlayerFocused;
|
||||||
|
import game.cards.SpecialCard.IShortRange;
|
||||||
import game.cards.SpecialCard.IToxic;
|
import game.cards.SpecialCard.IToxic;
|
||||||
import game.deck.Deck;
|
import game.deck.Deck;
|
||||||
import game.deck.DeckRegistery;
|
import game.deck.DeckRegistery;
|
||||||
@@ -192,6 +197,7 @@ public class Joueur {
|
|||||||
coms.send(Command.SETMANA);
|
coms.send(Command.SETMANA);
|
||||||
mana -= handCard.getCost();
|
mana -= handCard.getCost();
|
||||||
coms.send(mana);
|
coms.send(mana);
|
||||||
|
handCard.onCardPlaced(board);
|
||||||
} else {
|
} else {
|
||||||
System.out.println("the zone is not avaliable");
|
System.out.println("the zone is not avaliable");
|
||||||
coms.send(Command.NOK);
|
coms.send(Command.NOK);
|
||||||
@@ -317,7 +323,10 @@ public class Joueur {
|
|||||||
String carteCible = coms.recieve();
|
String carteCible = coms.recieve();
|
||||||
if (!isInt(carteAttaquante) || !isInt(carteCible))
|
if (!isInt(carteAttaquante) || !isInt(carteCible))
|
||||||
throw new RuntimeException("non number zone recived in attack phase");
|
throw new RuntimeException("non number zone recived in attack phase");
|
||||||
|
|
||||||
Card attackingCard = board.getCardInZone(Integer.parseInt(carteAttaquante));
|
Card attackingCard = board.getCardInZone(Integer.parseInt(carteAttaquante));
|
||||||
|
Card attackedCard = adversaire.getBoard().getCardInZone(Integer.parseInt(carteCible));
|
||||||
|
|
||||||
|
|
||||||
if (attackingCard == null) {
|
if (attackingCard == null) {
|
||||||
throw new RuntimeException("invalid attack");
|
throw new RuntimeException("invalid attack");
|
||||||
@@ -330,7 +339,7 @@ public class Joueur {
|
|||||||
}
|
}
|
||||||
attackingCard.hasAttacked();
|
attackingCard.hasAttacked();
|
||||||
} else {
|
} else {
|
||||||
if (!attackingCard.hasAlreadyAttacked()) {
|
if (!attackingCard.hasAlreadyAttacked() && !(attackedCard instanceof IInvisible) && !(attackingCard instanceof IPlayerFocused)) {
|
||||||
handleAttackAgainstCard(carteAttaquante, carteCible, adversaire);
|
handleAttackAgainstCard(carteAttaquante, carteCible, adversaire);
|
||||||
attackingCard.hasAttacked();
|
attackingCard.hasAttacked();
|
||||||
}
|
}
|
||||||
@@ -347,7 +356,18 @@ public class Joueur {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean handleAttackAgainstPlayer(Card attackingCard, Joueur adversaire) throws IOException {
|
private boolean handleAttackAgainstPlayer(Card attackingCard, Joueur adversaire) throws IOException {
|
||||||
boolean result = adversaire.takeDamage(attackingCard.getAttack());
|
int damage = attackingCard.getAttack();
|
||||||
|
if(attackingCard instanceof IAntiPlayer)
|
||||||
|
{
|
||||||
|
damage *= 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(attackingCard instanceof IShortRange)
|
||||||
|
{
|
||||||
|
damage = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean result = adversaire.takeDamage(damage);
|
||||||
if(!result)
|
if(!result)
|
||||||
{
|
{
|
||||||
adversaire.updateHp(this);
|
adversaire.updateHp(this);
|
||||||
@@ -375,6 +395,13 @@ public class Joueur {
|
|||||||
}
|
}
|
||||||
|
|
||||||
boolean isDestroyed = attackedCard.takeDamage(attackingCard.getAttack());
|
boolean isDestroyed = attackedCard.takeDamage(attackingCard.getAttack());
|
||||||
|
if(attackingCard instanceof ILifeSteal)
|
||||||
|
{
|
||||||
|
attackingCard.heal(attackingCard.getAttack());
|
||||||
|
|
||||||
|
updateCardHp(attackingCard, this);
|
||||||
|
}
|
||||||
|
|
||||||
if (isDestroyed || attackingCard instanceof IToxic) {
|
if (isDestroyed || attackingCard instanceof IToxic) {
|
||||||
// on suprime la carte du terrain
|
// on suprime la carte du terrain
|
||||||
board.setCard(Integer.parseInt(carteCible), null);
|
board.setCard(Integer.parseInt(carteCible), null);
|
||||||
@@ -391,14 +418,7 @@ public class Joueur {
|
|||||||
// NOTE : non implémenter dans les cartes individuelles par manque de temps
|
// NOTE : non implémenter dans les cartes individuelles par manque de temps
|
||||||
attackedCard.onCardDestroyed();
|
attackedCard.onCardDestroyed();
|
||||||
}else {
|
}else {
|
||||||
adversaire.getComs().send(Command.SET_CARD_HP);
|
adversaire.updateCardHp(attackedCard, this);
|
||||||
adversaire.getComs().send(carteCible);
|
|
||||||
adversaire.getComs().send(attackedCard.getHealth());
|
|
||||||
|
|
||||||
this.getComs().send(Command.SET_ADV_CARD_HP);
|
|
||||||
this.getComs().send(carteCible);
|
|
||||||
this.getComs().send(attackedCard.getHealth());
|
|
||||||
|
|
||||||
|
|
||||||
//cette partie est le fightback C.A.D quand tu attaque une carte si elle survit elle te frape a son tour
|
//cette partie est le fightback C.A.D quand tu attaque une carte si elle survit elle te frape a son tour
|
||||||
if(attackedCard.getAttack() > 0 && !(attackingCard instanceof ICanDoge))
|
if(attackedCard.getAttack() > 0 && !(attackingCard instanceof ICanDoge))
|
||||||
@@ -419,15 +439,9 @@ public class Joueur {
|
|||||||
|
|
||||||
// appelle les effet de quand la carte est détruite
|
// appelle les effet de quand la carte est détruite
|
||||||
// NOTE : non implémenter dans les cartes individuelles par manque de temps
|
// NOTE : non implémenter dans les cartes individuelles par manque de temps
|
||||||
attackedCard.onCardDestroyed();
|
attackingCard.onCardDestroyed();
|
||||||
}else {
|
}else {
|
||||||
adversaire.getComs().send(Command.SET_CARD_HP);
|
adversaire.updateCardHp(attackingCard, this);
|
||||||
adversaire.getComs().send(carteAttaquante);
|
|
||||||
adversaire.getComs().send(attackingCard.getHealth());
|
|
||||||
|
|
||||||
this.getComs().send(Command.SET_ADV_CARD_HP);
|
|
||||||
this.getComs().send(carteAttaquante);
|
|
||||||
this.getComs().send(attackingCard.getHealth());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -435,6 +449,25 @@ public class Joueur {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* met a jorus les hp d'une carte tout ce passe du poin de vue du joueur
|
||||||
|
* @param cardToUpDate
|
||||||
|
* @param adversaire
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
private void updateCardHp(Card cardToUpDate,Joueur adversaire) throws IOException
|
||||||
|
{
|
||||||
|
int zone = board.getZoneOf(cardToUpDate);
|
||||||
|
if(zone == -1)return;
|
||||||
|
adversaire.getComs().send(Command.SET_ADV_CARD_HP);
|
||||||
|
adversaire.getComs().send(zone+"");
|
||||||
|
adversaire.getComs().send(cardToUpDate.getHealth());
|
||||||
|
|
||||||
|
this.getComs().send(Command.SET_CARD_HP);
|
||||||
|
this.getComs().send(zone+"");
|
||||||
|
this.getComs().send(cardToUpDate.getHealth());
|
||||||
|
}
|
||||||
|
|
||||||
private Board getBoard() {
|
private Board getBoard() {
|
||||||
return board;
|
return board;
|
||||||
}
|
}
|
||||||
@@ -451,4 +484,17 @@ public class Joueur {
|
|||||||
return pV == 0;
|
return pV == 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onTurnStart() {
|
||||||
|
Iterator<Card> it = board.getIterator();
|
||||||
|
while(it.hasNext())
|
||||||
|
{
|
||||||
|
Card c = it.next();
|
||||||
|
if(c != null)
|
||||||
|
{
|
||||||
|
c.onTurnStart();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -117,7 +117,7 @@ public class Match extends Thread {
|
|||||||
//et on dit au joueur oposé que ce n'est pas le tien
|
//et on dit au joueur oposé que ce n'est pas le tien
|
||||||
enemy.debutTourEnemie();
|
enemy.debutTourEnemie();
|
||||||
|
|
||||||
|
joueur.onTurnStart();
|
||||||
joueur.mainPhase1(enemy); //Joue autant de carte qu'il veut/peut
|
joueur.mainPhase1(enemy); //Joue autant de carte qu'il veut/peut
|
||||||
joueur.battlePhase(enemy);//lance des attaques à son adversaire qui peut répliquer
|
joueur.battlePhase(enemy);//lance des attaques à son adversaire qui peut répliquer
|
||||||
//cette phases ne serira surment pas car nous manquon de temps pour implrementer les fonctionnalité specifique de certaine cartes
|
//cette phases ne serira surment pas car nous manquon de temps pour implrementer les fonctionnalité specifique de certaine cartes
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package game.cards;
|
package game.cards;
|
||||||
|
|
||||||
|
import game.Board;
|
||||||
|
|
||||||
public abstract class Card{
|
public abstract class Card{
|
||||||
|
|
||||||
private int attack;
|
private int attack;
|
||||||
@@ -41,7 +43,7 @@ public abstract class Card{
|
|||||||
/**
|
/**
|
||||||
* evenement déclanché au placement de la carte
|
* evenement déclanché au placement de la carte
|
||||||
*/
|
*/
|
||||||
public void onCardPlaced(){};
|
public void onCardPlaced(Board board){};
|
||||||
/**
|
/**
|
||||||
* évenement déclenché a la mort de la carte
|
* évenement déclenché a la mort de la carte
|
||||||
*/
|
*/
|
||||||
@@ -89,5 +91,12 @@ public abstract class Card{
|
|||||||
public void resetAttack() {
|
public void resetAttack() {
|
||||||
hasAttacked=false;
|
hasAttacked=false;
|
||||||
}
|
}
|
||||||
|
public void heal(int amount) {
|
||||||
|
health += amount;
|
||||||
|
}
|
||||||
|
public void makeStronger(int amount)
|
||||||
|
{
|
||||||
|
attack += amount;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package game.cards.MoyenAge;
|
package game.cards.MoyenAge;
|
||||||
|
|
||||||
import game.cards.Card;
|
import game.cards.SpecialCard.VigilanceCard;
|
||||||
|
|
||||||
public class Moyen_Age_Charlemagne extends Card{
|
public class Moyen_Age_Charlemagne extends VigilanceCard{
|
||||||
/**
|
/**
|
||||||
* retourne un entier coresspondant a l'attaque de la carte
|
* retourne un entier coresspondant a l'attaque de la carte
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package game.cards.SpecialCard;
|
||||||
|
|
||||||
|
public interface IAntiPlayer {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package game.cards.SpecialCard;
|
||||||
|
|
||||||
|
public interface IInvisible {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package game.cards.SpecialCard;
|
||||||
|
|
||||||
|
public interface ILifeSteal {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package game.cards.SpecialCard;
|
||||||
|
|
||||||
|
public interface IPlayerFocused {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package game.cards.SpecialCard;
|
||||||
|
|
||||||
|
public interface IShortRange {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package game.cards.SpecialCard;
|
||||||
|
|
||||||
|
import game.Board;
|
||||||
|
import game.cards.Card;
|
||||||
|
|
||||||
|
public abstract class LonerCard extends Card{
|
||||||
|
@Override
|
||||||
|
public void onCardPlaced(Board board) {
|
||||||
|
if(board.getBoardSize() == 1)
|
||||||
|
{
|
||||||
|
makeStronger(3);
|
||||||
|
}
|
||||||
|
super.onCardPlaced(board);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package game.cards.SpecialCard;
|
||||||
|
|
||||||
|
import game.cards.Card;
|
||||||
|
|
||||||
|
public abstract class RegeneratingCard extends Card{
|
||||||
|
@Override
|
||||||
|
public void onTurnStart() {
|
||||||
|
heal(1);
|
||||||
|
super.onTurnStart();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package game.cards.SpecialCard;
|
||||||
|
|
||||||
|
public abstract class SelfHarmCard extends SteroidsCard{
|
||||||
|
@Override
|
||||||
|
public void onTurnStart() {
|
||||||
|
heal(-1);
|
||||||
|
super.onTurnStart();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package game.cards.SpecialCard;
|
||||||
|
|
||||||
|
import game.cards.Card;
|
||||||
|
|
||||||
|
public abstract class SteroidsCard extends Card{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTurnStart() {
|
||||||
|
makeStronger(1);
|
||||||
|
super.onTurnStart();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package game.cards.SpecialCard;
|
||||||
|
|
||||||
|
import game.cards.Card;
|
||||||
|
|
||||||
|
public abstract class VigilanceCard extends Card{
|
||||||
|
int nbAttack = 0;
|
||||||
|
|
||||||
|
public boolean hasAlreadyAttacked() {
|
||||||
|
return nbAttack==2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void hasAttacked() {
|
||||||
|
nbAttack++;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void resetAttack() {
|
||||||
|
nbAttack=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user