summaryrefslogtreecommitdiff
path: root/sem_2/HLIN202/TP/TP7-8/pendu/pendu.cpp
blob: 6d38990e4867e8b0ffcd95392a8a3d8b781181db (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <iostream>
#include <cstdlib>
/* HLIN202 TD8 exercice du pendu
Par Gaspard Coulet ( gaspard.coulet@etu.umontpellier.fr )
*/

//affiche un tableau de caractere sous la forme d'un mot
void affichechartab ( int taille, char tab[]) {
  std::cout<<std::endl;
  std::cout<<"    ";
  for ( int i = 0; i< taille-1; i ++) {
    std::cout<<tab[i];
  }
  std::cout<<std::endl<<std::endl;
}

//determine si lettre est appartient a mot, si oui, le revele dans print, et incremente justes
bool estdansmot ( char lettre, char mot[], int n, char print[], int * justes) {
  bool ret= false;
  for ( int i = 0; i < n; i++ ) {
    if ( mot[i]==lettre) {
      ret= true;
      print[i]=lettre;
      *(justes) += 1;
      mot[i]='_';
    }
  }
  return ret;
}

int main () {
  int vie = 5;
  int taille;
  char lettre;
  int justes=0;
  std::cout << " Joueur 1 : Entrez la taille du mot a faire deviner " << std::endl;
  std::cin >> taille;
  std::cout<<" Joueur 1 : Entrez le mot a faire deviner, puis pressez enter"<< std :: endl;
  char motdev[taille+1];
  char backup[taille+1];
  for (int i=0; i < taille; i ++ ) {
    std::cin>>motdev[i];
    backup[i] = motdev[i];
  }
  char printed[taille+1];
  for (int i =0; i < taille; i ++) {
    printed[i]= '-';
  }
  system("clear");
  affichechartab(taille+1, printed);
  while ( vie != 0 && justes != taille) {
    std::cout << " Joueur 2 : Vous avez : " << vie << " vies; Entrez une lettre :"<<std::endl;
    std::cin >> lettre;
    system("clear");
    if (estdansmot(lettre, motdev, taille+1, printed, &justes)) {
      system("clear");
      std::cout << " La lettre : " << lettre << " fait est bel est bien dans le mot" << std::endl;
      affichechartab(taille+1,printed);
    }
    else {
      system("clear");
      vie --;
      std::cout<<" La lettre ne fait pas partie du mot, vous perdez une vie, il vous en reste : " << vie << std::endl;
      affichechartab(taille+1, printed);
    }
  }
  if ( vie == 0) {
    std::cout<< " Perdu ! Le mot a deviner etait : ";
    affichechartab(taille+1, backup);
  }
  else {
    std::cout << " Bravo ! Vous avez trouve le mot :) " << std::endl<< std::endl;
  }
  return 0;
}