je suis passé a intelj et j'ai ajouter le support de la meulse et la limitation de main
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package game;
|
||||
public final class Command {
|
||||
private Command(){} // pas de contructor on ne veut pas instancier cette classe
|
||||
|
||||
private Command(){} // pas de contructor on ne veut pas instancier cette classe
|
||||
public static final String YOURTURN="yourturn";
|
||||
public static final String DRAW = "draw";
|
||||
public static final String GET_DECK = "getDeck";
|
||||
@@ -21,4 +22,6 @@ public final class Command {
|
||||
public static final String PONG = "pong";
|
||||
public static final String NOK = "nok";
|
||||
public static final String OK = "ok";
|
||||
public static final String MEULE = "meule";
|
||||
|
||||
}
|
||||
|
||||
+15
-2
@@ -9,17 +9,27 @@ import game.deck.Deck;
|
||||
public class Hand {
|
||||
List<Card> hand;
|
||||
private Deck deck;
|
||||
private static final int MAX_CARD_IN_HAND = 5;
|
||||
|
||||
public Hand(Deck deck) {
|
||||
this.deck=deck;
|
||||
this.hand = new ArrayList<>();
|
||||
}
|
||||
|
||||
//TODO limiter le nombre de carte
|
||||
/**
|
||||
* permet de piocher des carte depuis le deck et de les mettre dans la main
|
||||
* @param i nombre de carte pioché
|
||||
*
|
||||
* si la main est pleine alors il arettra de pioché et se mettera a meulé
|
||||
*/
|
||||
public void draw(int i) {
|
||||
for(int j=0 ; j < i ; j++)
|
||||
{
|
||||
hand.add(deck.getCards().pop());
|
||||
if(!isFull())hand.add(deck.draw());
|
||||
else{
|
||||
//si la main est pleine alors la carte pioché est perdu
|
||||
deck.draw();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,4 +55,7 @@ public class Hand {
|
||||
return hand.remove(index);
|
||||
}
|
||||
|
||||
public boolean isFull() {
|
||||
return hand.size() == MAX_CARD_IN_HAND;
|
||||
}
|
||||
}
|
||||
|
||||
+36
-19
@@ -22,8 +22,8 @@ public class Joueur {
|
||||
}
|
||||
|
||||
public void requestDataEarlyGameData() throws IOException {
|
||||
coms.send("getDeck");
|
||||
String deckname = (String) coms.recieve();
|
||||
coms.send(Command.GET_DECK);
|
||||
String deckname = coms.recieve();
|
||||
deck = DeckRegistery.get(deckname);
|
||||
deck.shuffle();
|
||||
hand = new Hand(deck);
|
||||
@@ -51,6 +51,19 @@ public class Joueur {
|
||||
coms.send(Command.LOSE);
|
||||
}
|
||||
|
||||
/**
|
||||
* cette commande doit être utilisé a chaque début de tour elle permet d'augmenter la mana du joueur
|
||||
* @throws IOException
|
||||
*/
|
||||
public void prepMana() throws IOException {
|
||||
//on prepare la mana
|
||||
if(currentMana < 10)currentMana++;
|
||||
mana=currentMana;
|
||||
coms.send(Command.SETMANA);
|
||||
coms.send(mana);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* premiére phase de jeu avant d'attacker
|
||||
* @param adversaire
|
||||
@@ -58,19 +71,12 @@ public class Joueur {
|
||||
* @throws IOException
|
||||
*/
|
||||
public void mainPhase1(Joueur adversaire, Board board) throws IOException {
|
||||
//on prepare la mana
|
||||
if(currentMana < 10)currentMana++;
|
||||
mana=currentMana;
|
||||
coms.send(Command.SETMANA);
|
||||
coms.send(mana);
|
||||
|
||||
//on affiche le debut de tour
|
||||
coms.send(Command.YOURTURN);
|
||||
System.out.println("NOW WE SHOULDN'T SEND COMMAND");
|
||||
|
||||
boolean phaseActive=true;
|
||||
//debut de l'écoude des action client
|
||||
//on retire le time out sur l'adversaire car sa peut causer des désyncronisatoin et des crash
|
||||
adversaire.getComs().getSocket().setSoTimeout(Integer.MAX_VALUE);
|
||||
//debut de l'écoude des action client
|
||||
while(phaseActive)
|
||||
{
|
||||
coms.getSocket().setSoTimeout(500);
|
||||
@@ -104,12 +110,13 @@ public class Joueur {
|
||||
}
|
||||
|
||||
private void putCard(Joueur adversaire, Board board) throws IOException {
|
||||
//crash here
|
||||
String info = (String) coms.recieve();
|
||||
String info = coms.recieve();
|
||||
//si ce n'est pas un nombre
|
||||
if(!info.matches("-?\\d+")) {
|
||||
//alors on affiche l'inforamtion si la sortie d'erreur
|
||||
System.err.println(info);
|
||||
}else {
|
||||
//on recupére la carte
|
||||
int cardId = Integer.parseInt(info);
|
||||
|
||||
Class<? extends Card> cardClass = CardRegistery.get(cardId);
|
||||
@@ -141,11 +148,6 @@ public class Joueur {
|
||||
coms.send(zone);
|
||||
}
|
||||
|
||||
public void mainPhase2() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void endPhase() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
@@ -171,7 +173,22 @@ public class Joueur {
|
||||
|
||||
public void sendMessage(String message) throws IOException
|
||||
{
|
||||
coms.send("pupup");
|
||||
coms.send(Command.POPUP);
|
||||
coms.send(message);
|
||||
}
|
||||
|
||||
public void yourturn() throws IOException {
|
||||
//on affiche le debut de tour
|
||||
coms.send(Command.YOURTURN);
|
||||
}
|
||||
|
||||
public boolean isHandFull() {
|
||||
return hand.isFull();
|
||||
}
|
||||
|
||||
public void meule(int nbcard) throws IOException {
|
||||
coms.send(Command.MEULE);
|
||||
coms.send(nbcard);
|
||||
deck.draw(1);
|
||||
}
|
||||
}
|
||||
|
||||
+14
-4
@@ -5,7 +5,6 @@ import java.util.Random;
|
||||
|
||||
public class Match extends Thread {
|
||||
Joueur joueur1, joueur2;
|
||||
int tour = 1;
|
||||
private Board board;
|
||||
private Random rand;
|
||||
|
||||
@@ -85,13 +84,24 @@ public class Match extends Thread {
|
||||
//on affiche le message du debut de tour enemie
|
||||
Joueur enemy = joueur.equals(joueur1) ? joueur2 : joueur1;
|
||||
|
||||
|
||||
//si la main du joeur n'est pas pleine
|
||||
if(!joueur.isHandFull())joueur.draw(1); //pioche 1 carte
|
||||
else{
|
||||
//sinon on pert une carte
|
||||
joueur.meule(1);
|
||||
}
|
||||
//on prepare la mana
|
||||
joueur.prepMana();
|
||||
//on dit au joeur que c'est a lui de jouer
|
||||
joueur.yourturn();
|
||||
//et on dit au joueur oposé que ce n'est pas le tien
|
||||
enemy.debutTourEnemie();
|
||||
|
||||
joueur.draw(1); //pioche 1 carte
|
||||
|
||||
|
||||
joueur.mainPhase1(enemy,board); //Joue autant de carte qu'il veut/peut
|
||||
battlePhase(joueur);//lance des attaques à son adversaire qui peut répliquer
|
||||
joueur.mainPhase2();//Nouvelle phase ou le @joueur peut jouer ses cartes si il veut/peut
|
||||
//cette phases ne serira surment pas car nous manquon de temps pour implrementer les fonctionnalité specifique de certaine cartes
|
||||
joueur.endPhase();//fin du tour du @joueur
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package game.deck;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Stack;
|
||||
|
||||
import game.cards.Card;
|
||||
@@ -14,4 +16,19 @@ public abstract class Deck {
|
||||
Collections.shuffle(getCards());
|
||||
}
|
||||
|
||||
|
||||
public Card draw()
|
||||
{
|
||||
return getCards().pop();
|
||||
}
|
||||
|
||||
public List<Card> draw(int amount)
|
||||
{
|
||||
List<Card> cards = new ArrayList<>();
|
||||
for(int i = 0 ; i < amount ; i++)
|
||||
{
|
||||
cards.add(getCards().pop());
|
||||
}
|
||||
return cards;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user