Ce fichier est-il un fichier texte ?
A chaque début de partie tu peux stocker le mot recherché en appelant la fonction:
@+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 LeMot := DonnerMot;
Ce fichier est-il un fichier texte ?
A chaque début de partie tu peux stocker le mot recherché en appelant la fonction:
@+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 LeMot := DonnerMot;
Le fichier est un fichier de type repertoire dont le nom est Dico.rep, j'ai aucun fichier txt dans mon dossier. Pour ce qui est du code j'ai du mal a assimiler la.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 function DonnerMot:String; var MaListe:TStringList; begin MaListe:=TStringList.Create; MaListe.LoadFromFile('Ici que dois je mettre'); Et ici est ce une variable que je dois créer?:=LowerCase(MaListe.Strings[random(MaListe.Count-1)]); MaListe.Free; end;
Re,
DonnerMot est une fonction, dont le résultat est stocké dans la variable locale result (qu'il est inutile de définir car fait de façon implicite pour toutes fonctions).
Je suppose que tu as créé une procédure pour initialiser chaque début de partie. Dans cette procédure tu initialises le mot à rechercher (la variable publique LeMot) ainsi:
Quant à ton fichier .rep je ne connais son format. As-tu essayé de l'ouvrir avec NotePad par exemple. Si ce n'est pas un fichier texte standard, tu ne pourras pas utiliser la méthode TStringList.LoadFromFile qui n'accepte que des fichiers texte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 procedure DebutPartie; begin // Là le mot choisi de façon aléatoire sera stocké dans la variable LeMot LeMot := DonnerMot; // ... suite du code end;
@+ Claudius
Je vais arreter de programmer pour aujourd'hui parce que la j'ai la tête pleine que je vais m'empresser de vider à grand coup de Matthew Good Band!
Merci beaucoup pour l'aide apportée aujourd'hui! Pour le rep je demanderai à mon prof demain.
A+
Bonjour,
Comment faire pour que le fond des captions se fond avec le fond d'écran. Qu'on voit juste du texte sur le fond d'écran quand on ajoute un caption en qque sorte!
Merci d'avance!
Voici le code qui cherche un mot dans mon dictionnaire pour le mettre dans ma variable LeMot. La boucle while permet de ne pas choisir un mot supprimé de la liste qui représente encore une position dans celle-ci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 while LeMot ='' do begin nb:= random (filesize (fdico)); seek (fdico,nb); read (fdico,unmot); LeMot:= unmot.Mot; ndice:= unmot.Indice; end;
Ce que je voudrais faire maintenant c'est que lorsqu'un mot est sorti, il ne puisse plus ressortir avant que l'application ne soit fermée puis relancée. J'ai pensé à créer un tableau type array of integer ou seraient stocké les positions (position=nb) des mots sortis.
Donc j'ai réfléchis à la méthode à employer et ca a donné ceciEt ca plante irrémédiablement quand je clique sur partie. Qqun peut m'aider?
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 while LeMot ='' do begin for i:=0 to length (memoire) do begin while nb=memoire[i]do begin nb:= random (filesize (fdico)); seek (fdico,nb); read (fdico,unmot); LeMot:= unmot.Mot; indice:= unmot.Indice; memoire[nb]:=nb; end; end; end; memoire[nb]:=nb;
Tu veux dire avoir un Label avec un fond transparent ?
A mon avis, c'est ceci qui bloque :
Il nous faudrait la déclaration de unmot car c'est un peu ambigue pour ma petite tête
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 read (fdico,unmot); LeMot:= unmot.Mot; indice:= unmot.Indice; memoire[nb]:=nb;
@+
Voila pour la déclaration.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Form1: TForm1; fdico: file of dico; UnMot: Dico; NbMot, MotEncours,j:integer; Actionencours:char; masque,LeMot,verification,eronnee:string;
Re,
J'ai fait ça vite fait ...
C'est un peu le cafouilli mais ça fonctionne
A+
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 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,ShellAPI, StdCtrls; type TForm1 = class(TForm) BtnDonnerMot: TButton; BtnEcrireFichier: TButton; procedure BtnDonnerMotClick(Sender: TObject); procedure BtnEcrireFichierClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; type dico=record Mot:string[30]; indice:integer; end; var Form1: TForm1; fdico: file of dico; UnMot: Dico; NbMot, MotEncours,j:integer; Actionencours:char; masque,LeMot,verification,eronnee:string; memoire:array[0..2] of integer; MotRestant:integer; implementation {$R *.dfm} procedure TForm1.BtnDonnerMotClick(Sender: TObject); var nb:integer; begin if MotRestant > 0 then begin Randomize; AssignFile(fdico,'C:\toto.txt'); Reset(fdico); nb:=random (filesize (fdico)); while memoire[nb]<> 0 do nb:=random (filesize (fdico)); seek (fdico,nb); read (fdico,unmot); LeMot:= unmot.Mot; memoire[nb]:=unmot.Indice; MotRestant:=MotRestant-1; CloseFile(fdico); end else ShowMessage('Vous avez déjà jouer tous les mots'); end; procedure TForm1.BtnEcrireFichierClick(Sender: TObject); begin AssignFile(fdico,'C:\toto.txt'); Rewrite(fdico); UnMot.Mot:='test'; UnMot.indice:=1; Write(fdico,unMot); UnMot.Mot:='testtest'; UnMot.indice:=2; Write(fdico,unMot); UnMot.Mot:='testtesttest'; UnMot.indice:=3; Write(fdico,unMot); CloseFile(fdico); end; procedure TForm1.FormCreate(Sender: TObject); begin memoire[0]:=0; memoire[1]:=0; memoire[2]:=0; MotRestant:=high(memoire)+1; end;
Bonjour,
Désolé mais cette methode m'aide pas vraiment parce qu'au dela du fait que je n'en comprenne pas toutes les subtilités, j'ai pas l'impression qu'elle m'empechera de jouer deux fois le même mot dans une même session.
Le prof nous avait expliqué que pour répondre à ce probleme il avait stocké la place des mots qui sortaient dans un tableau et ensuite il faisait une boucle pour parcourir le tableau et si le mot etait déja dans le tableau alors la procédure random recommencait. J'aimerais bien savoir comment l'appliquer sur mon code déja existant ca doit être possible non?
De plus l'indice c'est un indice pour trouver le mot genre pour Elephant l'indice trompe s'affiche!
Salut,
Je ne comprends pas trop ce que tu veux dire par le fait que le mot ne sera pas joué 2 fois dans la même session.
Tu as demandé dans ton message précédent, je cite :
Pour moi, le code que j'ai donné rempli cette fonctionnalité.Envoyé par Jenojen
Le principe de mon code est le suivant :
1) On initialise le tableau mémoire à vide (donc tout des zéros) et on définit le mot restant (donc au début, tout). Au passage, le tableau est statique mais je pense que tu préfères un dynamique ?
2) Le bouton donnerMot permet de ne sortir un mot que si il n'est pas encore sorti. Pour celà, on regarde si dans le tableau mémoire l'indice correspondant est à zéro ou non. Un zéro signifait dans mon code que le mot n'était pas sorti (plus précisement que l'indice du mot n'était pas renseigné).
C'est ce bon de code qui permet de faire en sorte que l'on choisi un mot différent :
3) Une fois que nb est différent de zéro, on va lire le mot dans le fichier à la position nb, en prenant le soin au passage de mettre MotRestant avec une valeur de moins et renseigner la tableau Memoire pour lui mettre à la position Nb l'indice du mot.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Randomize; nb:=random (filesize (fdico)); while memoire[nb]<> 0 do nb:=random (filesize (fdico));
Voilà, je ne sais pas si c'est plus clair
A+
Désolé mais j'ai essayé d'entrer ton code mais ne fonctionne pas!
J'ai essayé d'adapter etc pas moyen que ca passe. Si tu t'y retrouves dans mon code pourrais tu me montrer comment tu ferais? J'essaie encore de mon coté mais j'y arrive vraiment pas! Tout le début c'est la partie dico et ensuite vient la partie pendu.
Voici mon code au complet. Et encore une fois la déclaration de l'indice sert juste à enregister l'indice qui va avec le mot. C'est une aide pour le joueur l'indice Mot:Tintin Indice: Milou
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls; type DICO = record Mot : string[30]; Indice : string [15]; end; TForm1 = class(TForm) eMot: TEdit; eIndice: TEdit; lb1: TListBox; btValider: TButton; BtAnnuler: TButton; BtNouveau: TButton; BtModifier: TButton; BtSupprimer: TButton; BtQuitter: TButton; lNomPrenom: TLabel; lNumero: TLabel; lTaille: TLabel; lmot: TLabel; Lcompteur: TLabel; lliste: TLabel; elettre: TEdit; btPartie: TButton; btPropal: TButton; LIndice: TLabel; ImagePendu: TImage; procedure BtQuitterClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure BtNouveauClick(Sender: TObject); procedure BtAnnulerClick(Sender: TObject); procedure eMotChange(Sender: TObject); procedure btValiderClick(Sender: TObject); procedure lb1Click(Sender: TObject); procedure BtModifierClick(Sender: TObject); procedure BtSupprimerClick(Sender: TObject); procedure eMotExit(Sender: TObject); procedure eIndiceExit(Sender: TObject); procedure btPartieClick(Sender: TObject); procedure btPropalClick(Sender: TObject); procedure elettreChange(Sender: TObject); procedure elettreKeyPress(Sender: TObject; var Key: Char); procedure eMotKeyPress(Sender: TObject; var Key: Char); private { Déclarations privées } public { Déclarations publiques } end; var Form1: TForm1; fdico: file of dico; UnMot:Dico; NbMot, MotEncours,j:integer; Actionencours:char; masque,LeMot,verification,eronnee:string; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var i:integer; begin btmodifier.enabled:=false; btsupprimer.enabled:=false; AssignFile (fdico, 'dico.rep'); {$i-} Reset (fdico); {$i+} If IoResult<>0 then Rewrite (fdico); NbMot:=Filesize (fdico); //lTaille.caption:= 'Taille : ' + inttostr(nbmot); MotEncours:= -1; ActionenCours:= ' '; If NbMot>0 then For i:=1 to NbMot do Begin Read (fDico,unMot); If unmot.mot> '' then lb1.items.add (Unmot.mot); end; lTaille.caption:= 'Taille : ' + inttostr (lb1.Items.count); LeMot:='@'; elettre.enabled:=false; //btpartie.enabled:= false; btpropal.Enabled:= false; end; procedure TForm1.BtQuitterClick(Sender: TObject); begin application.terminate; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin closefile (fDico); end; Procedure InitialiserEdit; Begin With form1 do Begin EMot.text:= ''; eIndice.text:= ''; lb1.itemindex:=-1; btModifier.enabled:=false; btSupprimer.enabled:=False; end; MotEnCours:=-1; end; Procedure Activeedit; Begin With form1 do Begin eMot.readonly:=False; eIndice.readonly:=false; btannuler.enabled:=true; btnouveau.Enabled:=false; btmodifier.Enabled:=false; btSupprimer.Enabled:=false; Activecontrol:=eMot; end; end; Procedure AfficherEdit; Begin If Motencours=-1 then InitialiserEdit Else With form1 do Begin eMot.text:=UnMot.Mot; eIndice.text:=UnMot.indice; Btmodifier.Enabled:=True; BtSupprimer.Enabled:=True; BtValider.Enabled:=false; end; end; Procedure DesActiveedit; Begin With form1 do Begin eMot.readonly:=True; eIndice.readonly:=True; btannuler.enabled:=False; btnouveau.Enabled:=True; btmodifier.Enabled:=Motencours>-1; btSupprimer.Enabled:=Motencours>-1; Activecontrol:=btNouveau; end; end; Procedure Recupedit; Begin UnMot.Mot:= form1.eMot.text; UnMot.Indice:= form1.eIndice.text; end; Function RechercherMot (MotArechercher:String) : Integer; Var Trouve,i:integer; Begin Seek (fDico,0); Trouve:=-1; If nbMot>0 then For i:=1 to nbMot do Begin Read (fDico,unMot); If UnMot.mot=MotArechercher then Begin Trouve:=i-1; Break; End; End; Result:= Trouve; end; Function ValideMot (MotAcontroller:string) :boolean; Var Trouve:Integer; Begin Trouve:=RechercherMot (Motacontroller); If (trouve<>Motencours) and (Trouve<>-1) then Begin showmessage ('Ce mot existe déja dans le fichier'); Result:=False; End Else Result:=True; end; Function Postrou:integer; Var Trouve,i:integer; begin Trouve:=-1; Seek (fDico,0); If NbMot>0 Then For i:=1 to nbMot do Begin Read (fDico,unMot); If (unMot.Mot='') then Begin Trouve:=I-1; Break; //permet de sortir directement de la boucle End; End; If trouve=-1 then Trouve:=Filesize (fDico); //si y a pas de trou alors on le met en fin de fichier Result:=trouve; End; Function CorrigeSaisie (Texte:String) :string; Begin Texte:=Trim(texte); While pos (' ', texte)>0 do Delete (texte,pos (' ',texte),1); Result:=Texte; End; Function FormatMot (Mots:String): String; var i:integer; Begin Mots:= Corrigesaisie (Mots); If length (Mots)>0 then Begin Mots:=Lowercase (Mots); For i:=1 to length (Mots) do Begin If (i=1) or (Mots [i-1]='') or (Mots [i-1]='-') Then Mots[i] := Upcase (Mots[i]); Result:=Mots; End; End Else Result:= ''; End; procedure TForm1.BtNouveauClick(Sender: TObject); begin Actionencours:='A'; InitialiserEdit; Activeedit; end; procedure TForm1.BtAnnulerClick(Sender: TObject); begin AfficherEdit; DesactiveEdit; end; procedure TForm1.eMotChange(Sender: TObject); begin BtValider.enabled:= (eMot.text>'') and (eIndice.text>''); end; procedure TForm1.btValiderClick(Sender: TObject); begin If actionencours='A' then Begin If ValideMot(eMot.text) then Begin Seek (fDico,postrou); Recupedit; //on recup les infos des boites d edition et on les mets dans uncontact //Seek (fmot,Filesize(fmot)); Write (fDico,unmot); lb1.Items.add (unMot.Mot); //NbContact:=NbContact + 1; lTaille.caption:= 'Taille : '+Inttostr (lb1.Items.count); InitialiserEdit; ActiveEdit; Actionencours:='A'; end; End Else if ActionEncours= 'M' then Begin If ValideMot (eMot.text) then Begin RecupEdit; Seek(FDico,MotEnCours); Write(fDico,unMot); lb1.Items[lb1.ItemIndex]:= unMot.Mot; DesactiveEdit; ActionEnCours:= ' '; end; end; end; procedure TForm1.lb1Click(Sender: TObject); begin MotEncours:= RechercherMot (lb1.items[lb1.itemindex]); AfficherEdit; Desactiveedit; end; procedure TForm1.BtModifierClick(Sender: TObject); begin If emot.text = '' then begin Showmessage ('Sélectionnez un mot avant de cliquer sur Modifier'); end else begin ActionEnCours:= 'M'; ActiveEdit; end; end; procedure TForm1.BtSupprimerClick(Sender: TObject); begin If messagedlg ('Voulez-vous supprimer définitivement ce mot?', mtConfirmation,[mbyes,mbno],0)= mryes then begin UnMot.Mot:=''; UnMot.Indice:=''; Seek (fDico,Motencours); Write (fDico,unMot); lb1.items.Delete (lb1.itemindex); InitialiserEdit; lTaille.caption:= 'Taille : ' + inttostr (lb1.Items.count); end; end; procedure TForm1.eMotExit(Sender: TObject); begin eMot.text:= FormatMot(eMot.text); end; procedure TForm1.eIndiceExit(Sender: TObject); begin eIndice.text:= Corrigesaisie (eIndice.text); end; procedure TForm1.btPartieClick(Sender: TObject); var i,nb:integer; indice:string; begin lliste.caption:= 'Lettres Eronnées :'; eronnee:=''; j:=8; lcompteur.caption:='Nombre d''erreurs permises : ' + inttostr (j); masque:=''; LeMot:=''; verification:=''; elettre.Enabled:=true; while LeMot ='' do //cette boucle c'est pour que lorsque je clique sur le bouton partie (nouveau mot) // il continue a chercher jusqu'a ce que le mot //soit différent de rien pour éviter qu'il choisisse des mots supprimés begin nb:= random (filesize (fdico)); seek (fdico,nb); read (fdico,unmot); LeMot:= unmot.Mot; indice:= unmot.Indice; end; Lindice.caption:= 'Indice : ' + indice; For i:=1 to length(LeMot) do begin masque:=(masque+'@'); If LeMot[i] = '-' then begin masque[i]:= LeMot[pos ('-',LeMot)]; end end; lmot.caption:= 'Mot à trouver : ' + masque; elettre.setfocus; end; procedure TForm1.elettreChange(Sender: TObject); begin If elettre.text <> '' then begin btpropal.Enabled:=true; btpropal.SetFocus; end else begin btpropal.enabled:=false; end; end; procedure TForm1.btPropalClick(Sender: TObject); var lettre: string; i:integer; begin lettre:=elettre.text; elettre.text:= ''; For i:=1 to length (LeMot) do begin If LeMot[i] = lettre then begin masque[i]:= LeMot[i];//[pos (lettre,Entre)]; end end; For i:=1 to length (verification) do begin If verification[i] = lettre then begin Showmessage ('Lettre déja testée'); elettre.setfocus; exit; end end; If pos (lettre,LeMot) = 0 then begin dec(j); eronnee:= eronnee + ' ' + lettre; end; lliste.caption:= 'Lettres Eronnées : ' + (eronnee); verification:= verification + lettre; lcompteur.caption:= 'Nombre d''erreurs permises : '+(inttostr (j)); lmot.caption:= 'Mot à trouver : ' + masque; elettre.setfocus; If LeMot = masque then begin elettre.enabled:=false; emot.setfocus; If messagedlg ('Bravo, vous avez gagné! On remet ca?', mtConfirmation,[mbyes,mbno],0)= mryes then begin btpartie.click; end else begin application.terminate; end; end; If j = 0 then begin lmot.caption:= LeMot; If messagedlg ('Perdu! Il fallait trouver ''' + lemot+ '''!' +' On remet ca?', mtConfirmation,[mbyes,mbno],0)= mryes then begin btpartie.click; end else begin application.terminate; end; end; end; procedure TForm1.elettreKeyPress(Sender: TObject; var Key: Char); begin case Key of //les caractères autorisés => pas d'action, on continue 'A'..'Z', 'a'..'z',#8: begin end; else Key := #0; end; end; procedure TForm1.eMotKeyPress(Sender: TObject; var Key: Char); begin case Key of //les caractères autorisés => pas d'action, on continue 'A'..'Z', 'a'..'z',#8,#45: begin end; else Key := #0; end; end; end.
Salut,
Je veux bien jetter un oeil sur ton projet, mais mets le en pièce jointe à ton message, car là, tout recopier, c'est pas possible
A+
Merci de bien vouloir y jeter un oeil, ca me fait vraiment plaisir!
Bon, j'ai regardé ton code,
J'ai pas chercher à comprendre, j'ai codé ce qu'il y avait à faire.
Soucis rencontré :
1) J'ai du vider tout le dico à la main car il me compter 22 enregistrements à la place de 6 ... L'erreur, je ne sais pas
Concernant les modifs :
Création de variables :
- Memoire : Tableau dynamique d'entier (pour savoir si un mot est déjà sorti)
- MotRestant : Pour tester combien de mot il reste (en gros, combien de partie avec des mots différents)
Je te laisse regarder le code:
Merci beaucoup de m'avoir aidé, c'est exactement ce que je voulais.
Pour le dico il faut comprendre que quand on supprime un mot du dico, la poisition est toujours occupé donc quand je fais une recherche il va trouver la position et trouver le mot associé qui est ''. Donc les 22 enregistrements c'est les 6 mots dans le dico et 16 qui ont été supprimés. (D'ou la boucle "while lemot = '' do le random").
J'ai donc testé en ajoutant des mots puis en les supprimant et en lancant une partie et il me sort en effet ces mots supprimés!
Mais donc la maintenant je dois mettre cette fameuse boucle while mais pour l'instant ca passe pas!
Encore un peu d'aide serait la bienvenue, il suffit juste de placer cette boucle mais comme ton code m'est encore un peu compliqué meme si j'en comprends les grandes lignes, j'aimerais savoir comment je pourrais gérer ce dernier problème.
Et merci aussi d'avoir réglé le truc du fond d'écran!
Edit: Et pourrais tu m'expliquer cette ligne s'il te plait "while ((index<=high(memoire)) and (continue)) do" Pour le continue ok mais le index<=high(memoire) est assez obscur pour moi.
Salut,
Pour le truc du fond d'écran, c'est simplement mettre la Propriété Transparent des Labels sur True.
Ensuite, concernant les demandes d'infos :
Mémoire étant un tableau dynamique, on utilise high(LeTableauDynamique) pour connaître le nombre d'éléments.
Aussi, si tu as prété attention à mon code, tu as surement du voir cette ligne:
SetLength permet de redéfinir la taille d'un tableau dynamique.Dans le cas présent, je rédéfini le tableau mémoire avec un nombre de case équivalent à Index+1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SetLength(memoire,Index+1);
Dernière chose, concernant ta demande de test sur un mot vide, remplace ceci:
par celà
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 repeat index:=0; continue:=true; nb:=random (filesize (fdico)); while ((index<=high(memoire)) and (continue)) do begin // L'index est égal à nb, on recommence if Memoire[index]=nb then continue:=false else index:=index+1; end; until (continue);
Le seek et read après ce bout de code n'est plus nécessaire
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 repeat repeat index:=0; continue:=true; nb:=random (filesize (fdico)); while ((index<=high(memoire)) and (continue)) do begin // L'index est égal à nb, on recommence if Memoire[index]=nb then continue:=false else index:=index+1; end; until (continue); seek (fdico,nb); read (fdico,unmot); until (unmot.Mot<>'');
J'espère que mes explications sont claires.
@+ et bon courage
Merci et encore merci!
Merci à tout ceux qui m'ont aidé pour la réalisation de ce premier projet et un grand merci à toi ero-sennin pour ton aide appronfondie. Ce topic m'a beaucoup appris, je suis vraiment très content d'avoir pu finir mon pendu grâce à vous!
A la prochaine!
Salut,
Pas de soucis en ce qui concerne le coup de main! Ca fait plaisir
N'oublie pas le petit stp
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager