コード例 #1
0
ファイル: Client.cs プロジェクト: Ekmort/ServeurWarsOfBaraxa
        //set l'ennemis
        private void setPartie()
        {
            int numEnnemis = Serveur.findEnnemis(posClient, posPartie);

            if (numEnnemis != -1)
            {
                Ennemis = Serveur.getJoueur(numEnnemis);
            }
            else
            {
                Ennemis = null;
            }
            Thread.Sleep(1000);
        }
コード例 #2
0
ファイル: Client.cs プロジェクト: Ekmort/ServeurWarsOfBaraxa
        private bool startGame(int pos)
        {
            //chaque utilisateur s'ajoute dans une partie
            Serveur.mutPartie2.WaitOne();
            posPartie = Serveur.AjouterJoueurPartie(pos);
            Serveur.mutPartie2.ReleaseMutex();
            bool rechercher = true;

            Serveur.mutex.WaitOne();
            //si il manque un joueur on attend un autre joueur
            while (rechercher && !Serveur.partieComplete(posPartie))
            {
                sendClient(Moi.sckJoueur, "recherche");
                string message = recevoirResultat(Moi.sckJoueur);
                //si le joueur veut partir pendant le loading
                if (message == "deconnection")
                {
                    rechercher   = false;
                    Deconnection = true;
                    Serveur.tabJoueur[posClient] = null;
                    Serveur.enleverJoueurPartie(pos);
                }
            }
            Serveur.mutex.ReleaseMutex();
            if (rechercher)
            {
                //on place les 2 joueurs ensemble
                setPartie();
                if (Ennemis != null)
                {
                    sendClient(Moi.sckJoueur, "Partie Commencer");
                    return(true);
                }
                else
                {
                    startGame(pos);
                }
            }
            else
            {
                return(false);
            }
            return(true);
        }
コード例 #3
0
ファイル: Client.cs プロジェクト: Ekmort/ServeurWarsOfBaraxa
        //trouve le premier joueur de la partie
        private void getFirstPlayer()
        {
            //on set le random entre 1 et 2
            Serveur.games[posPartie].mutpartie.WaitOne();
            Serveur.games[posPartie].setRandom();
            Serveur.games[posPartie].mutpartie.ReleaseMutex();
            //on prend notre positon
            int posIndex = Serveur.getPosIndex(posClient, posPartie);

            //si c'est nous on est le premier sinon on est le deuxieme
            if (Serveur.games[posPartie].rand == posIndex + 1)
            {
                sendClient(Moi.sckJoueur, "Premier Joueur");
                Moi.Depart = true;
            }
            else
            {
                sendClient(Moi.sckJoueur, "Deuxieme Joueur");
                Moi.Depart = false;
            }
        }
コード例 #4
0
ファイル: Serveur.cs プロジェクト: Ekmort/ServeurWarsOfBaraxa
        //ajoute un joueur a une partie et si la partie est pleine elle crée une nouvelle partie
        static public int AjouterJoueurPartie(int pos)
        {
            //le place soit a la pos 0 ou 1 selon le nombre de joueur dans la partie(si il y a quelqun a la pos 0 déjà)
            if (games[NoGameCourant].indexJoueur[0] == -1)
            {
                games[NoGameCourant].indexJoueur[0] = pos;
            }
            else
            {
                games[NoGameCourant].indexJoueur[1] = pos;
            }
            //on retourne le num de partie pour que les joueur sachent dans quelle parties ils sont
            int numPartie = NoGameCourant;

            //si la game est pleine on créer une nouvelle partie
            if (partieComplete(NoGameCourant))
            {
                Serveur.NouvelleGame();
            }

            return(numPartie);
        }
コード例 #5
0
ファイル: Client.cs プロジェクト: Ekmort/ServeurWarsOfBaraxa
        //vérifie si un joueur est partie
        private bool JoueurPartie()
        {
            //on prend les num des joueurs et on vérifie si quelqu'un est partie
            int num         = Serveur.getPosIndex(posClient, posPartie);
            int numEnnemi   = Serveur.findEnnemis(posClient, posPartie);
            int indexEnnemi = -1;

            //si on a trouvé un ennemis
            if (numEnnemi != -1)
            {
                indexEnnemi = Serveur.getPosIndex(numEnnemi, posPartie);
            }
            //s'il y a le bon num de joueur(allié et ennemis)
            if (num != -1 && indexEnnemi != -1)
            {
                //si je suis partie
                if (Serveur.games[posPartie].joueurpart[num])
                {
                    //j'ai une defaite et je set les variable a partie terminer
                    acces.AjouterDefaite(Moi.nom);
                    Serveur.games[posPartie].TerminerGame();
                    partieCommencer = false;
                    resetPartie();
                    return(true);
                }
                //si mon ennemis est partie
                else if (Serveur.games[posPartie].joueurpart[indexEnnemi])
                {
                    //j'ai une victoire et je set les varables a partie gagner
                    acces.AjouterVictoire(Moi.nom);
                    Serveur.games[posPartie].TerminerGame();
                    partieCommencer = false;
                    resetPartie();
                    return(true);
                }
            }
            return(false);
        }
コード例 #6
0
ファイル: Client.cs プロジェクト: Ekmort/ServeurWarsOfBaraxa
        //traite les messages de la partie
        private void traiterMessagePartie(string[] data)
        {
            //on vérifie la premiere donnée pour savoir ce que le joueur veut faire
            switch (data[0])
            {
            case "Ajouter Mana":
                //on set la mana a ces nouvelles valeur
                setMana(Moi, int.Parse(data[1]), int.Parse(data[2]), int.Parse(data[3]));
                //on le dit au joueur ennemis
                sendClient(Ennemis.sckJoueur, "AjouterManaEnnemis." + Moi.nbBle + "." + Moi.nbBois + "." + Moi.nbGem);
                break;

            case "Jouer spellnotarget":
                //on recois la carte
                Carte zeSpell = createCarte(data, 2);
                //on réduis la mana du joueur ennemis
                EnleverMana(Moi, zeSpell);
                //selon le type de sort on fait quelquechose de différent
                if (zeSpell.Habilete.Split(new char[] { ' ' })[0] == "Inflige")
                {
                    //si le sort cible le héros ennemis on réduis sa vie
                    if (ifHeroDmg(zeSpell.Habilete.Split(new char[] { ' ' })))
                    {
                        Ennemis.vie -= int.Parse(zeSpell.Habilete.Split(new char[] { ' ' })[1]);
                    }
                    //si le sort cible le héros allié on réduis notre vie
                    if (ifSelfHeroDmg(zeSpell.Habilete.Split(new char[] { ' ' })))
                    {
                        Moi.vie -= int.Parse(zeSpell.Habilete.Split(new char[] { ' ' })[1]);
                    }
                }
                //on créer un string avec le spell pour l'envoye au joueur ennemis
                string spellString = SetCarteString(zeSpell);
                //envoye les données au joueur ennemis
                sendClient(Ennemis.sckJoueur, "spellNoTarget." + data[1] + "." + spellString);
                break;

            case "Jouer spellTarget":
                //on recois la carte
                Carte zeSpelltarget = createCarte(data, 3);
                //on enleve la mana selon le cout du sort
                EnleverMana(Moi, zeSpelltarget);
                //si la cible est un héros
                if (data[2] == "hero ennemis" || data[2] == "hero")
                {
                    //si c'est du dégats
                    if (zeSpelltarget.Habilete.Split(new char[] { ' ' })[0] == "Inflige")
                    {
                        //nous on enleve notre vie
                        if (data[2] == "hero")
                        {
                            Moi.vie -= int.Parse(zeSpelltarget.Habilete.Split(new char[] { ' ' })[1]);
                        }
                        //sinon on enleve le dégats ennemis
                        else
                        {
                            Ennemis.vie -= int.Parse(zeSpelltarget.Habilete.Split(new char[] { ' ' })[1]);
                        }
                        //on créer un string avec le spell pour l'envoye au joueur ennemis
                        string spelltargetString = SetCarteString(zeSpelltarget);
                        //envoye les données au joueur ennemis
                        sendClient(Ennemis.sckJoueur, "spellwithtarget." + data[1] + "." + data[2] + "." + spelltargetString);
                    }
                }
                //la vible est une créature
                else
                {
                    //on crée la carte target déjà modifié par le client
                    Carte zeTarget = createCarte(data, 10);
                    //on fait des string avec les deux carte
                    string spelltargetString = SetCarteString(zeSpelltarget);
                    string targetString      = SetCarteString(zeTarget);
                    //on l'envoie au joueur ennemis
                    sendClient(Ennemis.sckJoueur, "spellwithtarget." + data[1] + "." + data[2] + "." + spelltargetString + "." + targetString);
                }
                break;

            case "Jouer Carte":
                //on recois la carte
                Carte temp = ReceiveCarte(Moi.sckJoueur);
                //on enleve la mana
                EnleverMana(Moi, temp);
                //on créer un string
                string fckingCarte = SetCarteString(temp);
                //on l'envoie a l'ennemis
                sendClient(Ennemis.sckJoueur, "AjouterCarteEnnemis." + data[1] + "." + fckingCarte);
                break;

            case "Fin De Tour":
                //on donne le tour a l'ennemis et on dit que ce n'est pas notre tour
                Moi.Depart     = false;
                Ennemis.Depart = true;
                //on l'enovie au joueur ennemis que c'est son tour
                sendClient(Ennemis.sckJoueur, "Tour Commencer");
                break;

            case "Attaquer Joueur":
                //on receois l'attaquant
                Carte attaquant = ReceiveCarte(Moi.sckJoueur);
                setHabilete(attaquant);
                //si l'attaquant a attaque puissante on enleve le double de dégat
                if (attaquant.perm.estAttaquePuisante)
                {
                    Ennemis.vie -= attaquant.perm.Attaque * 2;
                }
                //sinon on réduit la vie selon le dégat de la créature
                else
                {
                    Ennemis.vie -= attaquant.perm.Attaque;
                }
                //on envoie la nouvelle vie au joeuur
                sendClient(Ennemis.sckJoueur, "Joueur attaquer." + Ennemis.vie.ToString());
                break;

            case "Attaquer Creature":
                //on envoie au joueur adverse a l'autre joueur
                sendClient(Ennemis.sckJoueur, "Combat Creature." + data[1] + "." + data[2] + "." + data[3] + "." + data[4]
                           + "." + data[5] + "." + data[6] + "." + data[7] + "." + data[8] + "." + data[9] + "." + data[10] + "." + data[11] + "." + data[12] + "." + data[13] + "." + data[14] + "." + data[15]
                           + "." + data[16] + "." + data[17] + "." + data[18] + "." + data[19] + "." + data[20] + "." + data[21] + "." + data[22] + "." + data[23] + "." + data[24] + "." + data[25] + "." + data[26]);
                break;

            case "Piger":
                //on dit au joueur adverse que l'on pige
                sendClient(Ennemis.sckJoueur, "Ennemis pige");
                break;

            case "Carte manquante":
                //on envoie au joueur que nous n'avons plus de carte
                sendClient(Ennemis.sckJoueur, "Carte manquante");
                Serveur.games[posPartie].PuCarte = true;
                break;

            case "deconnection":
                //on s'enleve du tabjoueur et on dit que l'on veut se deconnecter
                Deconnection = true;
                int num = Serveur.getPosIndex(posClient, posPartie);
                if (num != -1)
                {
                    Serveur.JoueurPart(num, posPartie);
                }
                Serveur.tabJoueur[posClient] = null;
                //on le dit au joueur ennemis que on part
                sendClient(Ennemis.sckJoueur, "JePart");
                break;

            case "surrender":
                //on part de la partie
                partieCommencer = false;
                int numsurrender = Serveur.getPosIndex(posClient, posPartie);
                if (numsurrender != -1)
                {
                    Serveur.JoueurPart(numsurrender, posPartie);
                }
                //on le dit au joeuur adverse
                sendClient(Ennemis.sckJoueur, "JePart");
                break;
            }
        }