Télécharger le zip
Pas mal fait mais une fois qu'on a perdu le dessin a droite ne disparait pas et on peu continue à joué sans faire nouveau mot.
manque peut etre un test , ou alors tu dois mettre une categorie par defaut , car si pas de catégorie selectionnée , on gagne toujours.
Merci à vous deux pour les correction à effectuer.J'ai rectifié mon code, de manière à ce qu'on ne gagne pas toujours.
Effectivement, j'ai téléchargé à l'instant le jeu. (ce 25 à 22h50)Il ne fonctionne pas.On peut choisir la catégorie, le bouton "nouveau mot" réagit. Mais, ensuite, impossible d'inscrire quoi que ce soit dans le champ en-dessous et impossible de confirmer.J'attends impatiemment la correction !
Je suis confus !Le jeu fonctionne ! Je n'avais pas compris que le champ réclamait une lettre et non un chiffre (je pensais qu'il fallait y mentionner le nombre de lettres que le mot devait comporter !Donc, excuses et félicitaion !
Contente qu'il te plaise mcapp, quand j'aurai un peu de temps je ferais une aide utilisateur de manière à ce que plus personne ne se trompe.Merci de m'avoir prévenue.
Encore félicitation pour ce jeu. Des que j’ai 5 minute je vais analysé ton code il m’intéresse.
Va si, fait, irdjv, il est là pour ça.
Sympa, ton code, lapucedu88Ca me rappelle mes débuts, y'a pas si longtemps (heu, 3 ans environ...)Tu peux largement optimiser ton code, par exemple ici :Procedure TForm1.categorieClick( Sender : TObject );Var lettre1 : Integer; procedure GestionCategorie(Categorie: String; Liste: TListBox); begin nbmot := Liste.items.Count; Lcat.visible := true; Lcat.caption := Categorie; aleas := random( Liste.items.Count ); motatrouver := Liste.items[ aleas ]; Lnbmotcat.caption := 'La catégorie contient ' + inttostr( nbmot ) + ' mots'; Liste.items.Delete( aleas ); end;Begin randomize; Bbcat.enabled := true; BBchange.enabled := true; gagne := 0; perd := 0; Case categorie.itemindex of 0: GestionCategorie('animaux', animaux); 5: GestionCategorie('fruit', fruit); 6: GestionCategorie('batiment', batiment); 7: GestionCategorie('boisson', boisson); 2: GestionCategorie('fleur', fleur); 3: GestionCategorie('constellation', constellation); 1: GestionCategorie('dessin', dessin); 4: GestionCategorie('aliment', aliment); end; mot_choisi := motatrouver; For lettre1 := 97 To 122 Do deja_essaye[ lettre1 ] := false; long_mot := length( mot_choisi ); mot_cache := ''; For j := 1 To long_mot Do Begin If mot_choisi[ j ] = ' ' Then mot_cache := mot_cache + ' ' Else mot_cache := mot_cache + ''; End; result.visible := true; result.text := mot_cache; categorie.visible := false; Bbcat.visible := true; erreur := 0; lettre.Enabled:=true; lettre.SetFocus;End;...ou là :Procedure TForm1.BBchangeClick( Sender : TObject );Var j, numero : Integer; lettre1 : Integer; procedure TraiteCategorie(Liste: TListBox); begin If Liste.items.Count = 0 Then Begin showmessage( 'plus de mot dans cette categorie.' ); BBchange.enabled := false; Bbcat.enabled := false; result.visible := false; categorie.visible := true; End Else Begin categorie.visible := false; aleas := random( Liste.items.Count ); motatrouver := Liste.items[ aleas ]; Liste.items.Delete( aleas ); result.visible := true; End; end; Begin Case categorie.ItemIndex of 0: TraiteCategorie(animaux); 1: TraiteCategorie(dessin); 6: TraiteCategorie(batiment); 7: TraiteCategorie(boisson); 5: TraiteCategorie(fruit); 2: TraiteCategorie(fleur); 3: TraiteCategorie(constellation); 4: TraiteCategorie(aliment); end; mot_choisi := motatrouver; For lettre1 := 97 To 122 Do deja_essaye[ lettre1 ] := false; long_mot := length( mot_choisi ); mot_cache := ''; For j := 1 To long_mot Do Begin If mot_choisi[ j ] = ' ' Then mot_cache := mot_cache + ' ' Else mot_cache := mot_cache + ''; End; result.text := mot_cache; Bbcat.visible := true; InitialisePendu; // <- procedure plus haut, remplace 10 lignes erreur := 0; lettre.Enabled:=true; lettre.SetFocus;End;... sans compter que quand tu veux effacer le pendu tu peux faire appel à cette procedure :procedure TForm1.InitialisePendu;var i: Integer;begin Ssoclebas.visible := false; Ssoclevertical.visible := false; Ssoclehaut.visible := false; Sfil.visible := false; Stete.visible := false; Scorps.visible := false; Sbrasdroit.visible := false; Sbrasgauche.visible := false; Spieddroit.visible := false; Spiedgauche.visible := false;end;... voire, pourquoi pas :procedure TForm1.InitialisePendu;var i: Integer;begin for i := 0 to ComponentCount -1 do if Components[i] is TShape then if TShape(Components[i]).Name <> 'SFont' then TShape(Components[i]).Visible := False;end;... que tu as déclaré, bien sûr, dans la partie private du Form, ainsi :procedure InitialisePendu;Comme tu as l'air de connaître Case of..end, je te t'épargnerai le discours sur l'économie par rapport à if..then...Je n'ai pas débuggé ton programme, mais ça a l'air de fonctionner... mais là je passe la main, pas trop le temps...Bienvenue parmis nous, et ne perd pas ton enthousiasme ;)P-S: J'ai fait pas mal de copier-coller, j'espère que je ne dis pas trop de c...à + faut pas mollir !
Bien sûr, merci copier-coller, "var i: integer" est inutile dans l'avant dernière procedure décrite.N'hésite pas à demander des explications complémentaires.Et utilise le forum, c'est bien pratique ;)
Merci japee, j'avais pensée à faire des modifiactions sur ce code en y ajoutant des procedures mais je n'est pas encore eu le temps de me remettre dessus car je suis en train de remodifier mon master et que j'essaie également de faire un casse brique.Mais je promet de les faire rapidement tous de même.Encore merci de l'avoir regarder.
Dit voir japee, je comprend pas trop ce que tu fais dans ta dernière procedure en fait je comprend pas le 'SFont' qui sert à la comparaison du nom du composant.
La boucle parcourt tous les composants de l'application : Components[0], Components[1]... jusqu'à Components[nombre de components -1 puisqu'on a démarré à 0].Si le composant est un TShape, alors si le nom du composant n'est pas 'SFont' (c'est le nom que tu as donné à ton TShape qui représente le fond, lol), alors le composant n'est plus visible.Cette manière de procéder peut être utile si l'on a beaucoup de composants auxquels il faut appliquer un même traitement. On évite ainsi un listing impressionnant d'instructions répétitives.Une astuce que j'utilise consiste à donner un tag identique à cette série de composants (propriété tag dans l'inspecteur d'objet) et à trier les composants au moyen de ce tag.Exemple concret, si tu as affecté la valeur 1 au tag des TShape à rendre invisibles :var i: Integer;begin for i := 0 to ComponentCount -1 do if Components[i] is TShape then if TShape(Components[i]).Tag = 1 then TShape(Components[i]).Visible := False;end;Ca peut être utile si tu veux que certains composants de même type soient concernés et pas d'autres, mais ici l'avantage n'est peut-être pas évident ?Bonne prog'
Ok, je te remercie japee, c'est bon à savoir
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 598 971 membres 231 nouveaux aujourd'hui 15 441 membres club