je cherche a ecrire un programme du jeu de devin, (l'utilisateur ou la machine fixe un nombre et l'autre le devine en un nombre minimal d'essais)


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
 
(*******************************************************************************
**   Auteur	: Tasnim HAMZA
**   Date	: 23/10/2009 
**   Titre	: jeu_de_devin
*******************************************************************************)
 
 
Program jeu_de_devin ;
   (*l'utilisateur choisie soit de deviner ou de faire deviner un nombre
   **entre 1 et 999 à la machine. 
   **le nombre doit etre deviner en un nombre minimal d'essais.
   *)
 
Var
 choix_jeu :Char;               (*choix du role du joueur dans le jeu lu au clavier*)
 borne_min :Real;               (*borne minimale de l'intervalle de recherche du nombre par la machine *)
 borne_max :Real;               (*borne maximale de l'intervalle de recherche du nombre par la machine *) 
 
 nb_essai :Integer;             (*nombre d'essai de deviner le nombre*)
 nb_essai_max :Integer;         (*nombre maximal d'essais lu au clavier*)
 
 essai_computer :Real;          (*nombre proposé par la machine*)
 
 nb_fixe :Real ;                (*nombre fixé aleatoirement par la machine*)
 saisie_correct :Boolean ;      (*test du saisie du joueur*)
 essai_joueur :Real ;           (*essai du joueur lu au clavier*)
 resultat :Char ;               (*resultat de comparaison essai_computer et nombre fixe par l'utilisateur*)
 
  reponce :Char;                 (*reponce ( joueur/ machine) à l'essaai ( machine/ joueur) lue au clavier*)
 
 rejouer :Char;                 (*demande de rejouer ou non, lue au clavier*)
 
 
 
 
Begin
 
   (*saisir le nombre maximal d'essais*)
   writeln('donner le nombre maximal de essais');
   readln (nb_essai_max ) ;
 
   (*demarrer une nouvelle partie en fin de la premiere si demandé*)
   Repeat
 
      (*donner le choix au joueur de deviner ou faire deviner un nombre*)
 	  writeln ('si vous voulais me faire deviner un nombre tapez j ') ; 
 	  writeln ('si vous voulais que je vous fais deviner un nombre tapez t ') ; 
 	  readln (choix_jeu) ;
 
 
 
      (*lancer le jeu selon le choix du joueur*)
	  Case choix_jeu in 
 
	    (*la machine cherche le nombre fixe par l'utilisateur*)
	    'j' : Begin
	              (*chercher le nombre*)
                   borne_min := 1;
                   borne_max := 999;
                   nb_essai = 0;
 
                   Repeat
                         (*donner un essai*)
                         essai_computer := ( borne_min + borne_max )/2 ;
                         writeln (essai_computer );
 
                        (*lire la reponce de l'utilisateur*)
                        writeln ('que en pensez vous? tapez g ou p ou t');
                        readln (reponce);
 
                        (*incrementer les bornes de l'intervalle de recherche*)
                        Case reponce of 
                             'g', 'G' : borne_max := essai ;
                             'p', 'P' : borne_min := essai ;
 
						(*incrementer le nombre d'essai*)
                        nb_essai := nb_essai + 1;
 
                   Until (reponce = 'c') or (reponce = 'C') or (nb_essai = nb_essai_max);
 
 
 
 
	          End;
 
        (*l'utilisateur devine un nombre fixé par la machine*)
	    't' : Begin
 
                  (*fixer un nombre a faire demander au joueur*)
                  nb_fixe := random(999) + 1 ;
                  {1 <= nb_fixe <= 999}
 
                  (*faire deviner le nombre au joueur*)
	              nb_essai := 0;
                  Repeat
 
				        (*calculer le nombre d'essai*)
				   	    nb_essai := nb_essai + 1 ;
 
				   	    (*saisir l'essai du joueur*)
				   	    saisie_correct := true;
				   	    Repeat
					        	writeln('donner un nombre entre 1 et 999') ;
					   	        readln (essai_joueur);
 
						        (*tester essai valide ou non*)
					   	         if (essai_joueur < 1) or (essai_joueur > 999) then
							           saisie_correct := false;
 
						Until saisie_correct:=true;
 
						(*comparer essai et nombre fixe*)
					   	If essai_joueur < nb_fixe then 
						   	reponce := 'p'
						Else Begin
								If essai_joueur > nb_fixe then
							    	reponce:= 'g'
							  	Else
								 	reponce := 'c';
							   	end;
 
					   	(*afficher le resultat de comparaison des deux nombre*)
						Case reponce of 
								'p' : writeln ('le nombre saisie est trop petit') ;
								'g' : writeln ('le nombre saisie est trop grand') ;
 
				  Until (reponce = 'c') or (nb_essai = nb_essai_max);
 
 
	        end;
 
	   (*afficher le resultat du jeu*)
	   If (nb_essai <= nb_essai_max) and (reponce='c') then
 
		       begin
			       (*donner le nombre d'essais*)
				   writeln('le nombre a ete trouve en ', nb_essai) ;
 
				   (*declarer le vainqueur de la partie*)		   
			       case choix_jeu in
				   'j' :  writeln('la machine vous a battu') ;
				   't' :  writeln('vous avez battu la machine') ;
			   end
 
   	   Else 
               (*declarer le perdant depassant le nombre d'essais maximal*)		   
			   case choix_jeu in
				   'j' :  writeln('vous avez battu la machine, elle est incapable de trouver le nombre') ;
				   't' :  writeln('la machine vous a battu, vous etes incapable de trouver le nombre') ;
 
 
 
 
 
      (*demander au joueur s'il veut rejouer*)
	  writeln ('voulez vous lancer une nouvelle partie? si oui tapez o sinon tapez n ') ;
	  readln (rejouer) ;
 
   until (rejouer = 'n') ;
 
end.
j'ai compilé avec le ssh Secure shell et il m'affiche cet erreur 'gpc: Internal compiler error: program gpc1 got fatal signal 11 (Segmentation Fault)'

je sais pas quoi faire, je viens de commencer à programmer