Advertisement
Guest User

Exo - Compteur Tennis

a guest
Sep 18th, 2019
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. /**
  2. * Programme: Exercice "Compteur de Tennis" en JS
  3. * ESGI 2019 - Algo - IW
  4. * Author : Sinicha RADOSAVLJEVIC
  5. */
  6. const NB_SET = 3; // Les matches de tennis sont généralement en 2 ou 3 sets
  7. const ADVANTAGE = "AVT";
  8.  
  9. let tabScorePoints;
  10. let tabGamePoints;
  11. let set;
  12. let end;
  13.  
  14. /**
  15. * Initialise les variables du jeux : Set (manche), Game (jeu), Score
  16. */
  17. function initGameValues() {
  18. tabScorePoints = [];
  19. for(let i = 0; i < NB_SET; i++) {
  20. tabScorePoints[i] = [0, 0];
  21. }
  22. tabGamePoints = [0, 0];
  23. set = 1;
  24. end = false;
  25. }
  26.  
  27. /**
  28. * Ajoute un point à un joueur dans le tableau des scores au set actuel.
  29. * Si le score d'un joueur atteint 6, passer au set suivant.
  30. * Si le score d'un joueur atteint 6 au dernier set, indiquer la fin de jeu en passant la variable 'end' à true.
  31. */
  32. function addScorePoints(player) {
  33. if(end) {
  34. return;
  35. }
  36.  
  37. // Incrémente le score du joueur au set actuel
  38. tabScorePoints[set-1][player-1]++;
  39.  
  40. // Vérifie s'il faut passer au set suivant ou indiquer la fin du match.
  41. if(tabScorePoints[set-1][player-1] == 6 && set < NB_SET) {
  42. set++;
  43. } else if(tabScorePoints[set-1][player-1] == 6) {
  44. end = true;
  45. }
  46. }
  47.  
  48. /**
  49. * Ajoute des points à un joueur dans le jeu actuel.
  50. * Les points sont gagnés dans l'ordre suivant : 0 -> 15 -> 30 -> 40.
  51. * Si un joueur gagne le point alors qu'il est à 40, un point lui est ajouté au score
  52. * du match avec la fonction 'addScorePoints()', sauf si les 2 joueurs sont
  53. * à égalité à 40, auquel cas le joueur qui gagne passe en Avantage
  54. * et doit confirmer l'avantage pour gagner le jeu, sinon is repasse à égalité si l'autre joueur gagne.
  55. * Si un des joueurs gagne le jeu, les points du jeu sont repassé à 0.
  56. */
  57. function addGamePoint(player) {
  58. let opponent = (player === 1) ? 2 : 1;
  59.  
  60. if(tabGamePoints[player-1] === 40 && tabGamePoints[opponent-1] < 40
  61. || tabGamePoints[player-1] === ADVANTAGE) {
  62. addScorePoints(player);
  63. tabGamePoints = [0, 0];
  64. } else if(tabGamePoints[opponent-1] === ADVANTAGE) {
  65. tabGamePoints[opponent-1] = 40;
  66. } else if(tabGamePoints[player-1] === 40 && tabGamePoints[opponent-1] == 40) {
  67. tabGamePoints[player-1] = ADVANTAGE;
  68. } else {
  69. if(tabGamePoints[player-1]<30) {
  70. tabGamePoints[player-1] += 15;
  71. } else {
  72. tabGamePoints[player-1] = 40;
  73. }
  74. }
  75. }
  76.  
  77.  
  78. // Lance le match
  79. initGameValues();
  80. while(!end) {
  81. let player = Math.floor(Math.random() * Math.floor(2)) + 1;
  82. addGamePoint(player)
  83. }
  84.  
  85. // Affiche le score de fin de match
  86. console.log("Score:", tabScorePoints);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement