private RepShiFuMi shiFuMi(EDefCaracteristique chosenCaract1, EDefCaracteristique chosenCaract2) { RepShiFuMi vainqueurShiFuMi = RepShiFuMi.Null; if (chosenCaract1 == chosenCaract2) { vainqueurShiFuMi = RepShiFuMi.Egalite; } else { switch (chosenCaract1) { case EDefCaracteristique.Force: vainqueurShiFuMi = RepShiFuMi.J1Gagnant; if (chosenCaract2 == EDefCaracteristique.Chance) { vainqueurShiFuMi = RepShiFuMi.J2Gagnant; } break; case EDefCaracteristique.Chance: vainqueurShiFuMi = RepShiFuMi.J1Gagnant; if (chosenCaract2 == EDefCaracteristique.Defense) { vainqueurShiFuMi = RepShiFuMi.J2Gagnant; } break; case EDefCaracteristique.Defense: vainqueurShiFuMi = RepShiFuMi.J1Gagnant; if (chosenCaract2 == EDefCaracteristique.Force) { vainqueurShiFuMi = RepShiFuMi.J2Gagnant; } break; case EDefCaracteristique.Sante: throw new Exception("Error : \"Caracteristique Sante\" chosen !"); } } return(vainqueurShiFuMi); }
// Le vainqueur est directement changé dans Match public void playTurn(EDefCaracteristique chosenCaract1, EDefCaracteristique chosenCaract2) { if (!MatchOver) { pJedi1.ChosenCaract = chosenCaract1; pJedi2.ChosenCaract = chosenCaract2; int scoreJ1 = 0; int scoreJ2 = 0; // 1 pour J1, 2 pour J2, 0 sinon RepShiFuMi vainqueurShiFuMi = 0; //Calcul de la valeur de score try { scoreJ1 = computeScore(pJedi1); scoreJ2 = computeScore(pJedi2); } catch (Exception e) { throw e; } // Calcul du Shi-Fu-Mi try { vainqueurShiFuMi = shiFuMi(pJedi1.ChosenCaract, pJedi2.ChosenCaract); } catch (Exception e) { throw e; } // Calcul final du score if (vainqueurShiFuMi == RepShiFuMi.J1Gagnant) { scoreJ1 *= multiplicator; } if (vainqueurShiFuMi == RepShiFuMi.J2Gagnant) { scoreJ2 *= multiplicator; } // Calcul vainqueur // Par defaut J1 GAGNE et J2 PERD damageInflicted = 0; winnerJedi = match.Jedi1; looserJedi = match.Jedi2; if (scoreJ1 > scoreJ2) { damageInflicted = scoreJ1 - scoreJ2; winnerJedi = match.Jedi1; looserJedi = match.Jedi2; pJedi2.HpJedi -= damageInflicted; } else if (scoreJ1 < scoreJ2) { damageInflicted = scoreJ2 - scoreJ1; looserJedi = match.Jedi1; winnerJedi = match.Jedi2; pJedi1.HpJedi -= damageInflicted; } //Le dernier vainqueur du match sera donc le vainqueur if (pJedi1.HpJedi <= 0 || pJedi2.HpJedi <= 0) { matchOver = true; match.JediVainqueur = winnerJedi; } } else { throw new Exception("Match already over !"); } }