//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; } }
//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); }
//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; } }