SUDOKU : AÏE ENCORE UN !

John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009 - 13 avril 2007 à 01:14
tigris1 Messages postés 57 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 15 janvier 2009 - 15 avril 2007 à 20:14
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/42225-sudoku-aie-encore-un

tigris1 Messages postés 57 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 15 janvier 2009
15 avril 2007 à 20:14
Hello John Dogget,

J'ai rassemblé, pour le post, tous les fichiers dans le même répertoire, ce qui évite d'avoir à initialiser les répertoires dans les options du projet..

J'ai testé ta proposition pour la méthode SelectFirst mais cela ne fonctionne pas mieux chez moi (soit à la fin de la procédure CtrlUserActionClick ou de la procédure CtrlUserOptionsClick). La procédure qui n'est plus appelée après un clic sur une case à cocher est FormKeyDown (qui intercepte les touches du clavier). En remarquant que les touches du curseur sont à nouveau disponibles après avoir fait passer le focus sur le TrackbarDifficulty, j'ai ajouté, à la fin de la procédure CtrlUserOptionsClick, ceci :

if FrmMain.Visible then
TrackbarDifficulty.SetFocus;

Cela force le focus sur le TrackbarDifficulty qui libère ensuite le focus pour FrmMain. Le problème semble résider dans le TCheckBox. Je sais cela me semble un peu bricolage mais je me console avec cela avant de trouver mieux.
------
Désormais, lorsque la grille est résolue, j'affiche un message, clignotant au début, dans le panneau des messages. Je mets aussi le chronomètre en pause, ce qui permet de prendre en compte le temps qui peut ainsi aussi être sauvegardé avec la solution si l'on décide de garder la trace de la grille résolue.

Encore merci.
tigris1 Messages postés 57 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 15 janvier 2009
15 avril 2007 à 09:03
Hello John Dogget,

D'abord un GRAND merci pour t'être penché et avoir résolu mes petits soucis. En postant après minuit je ne pensais pas avoir une réponse dans la nuit ;).

La correction se fera probablement faite demain, d'autres choses à faire avant, et je poste une mise à jour en ayant aussi ajouté l'indication de fin de partie.

Pour ce qui est de la répartition des fichiers dans les divers répertoires, je pensais que la description que j'ai faite sous EXPLICATION FINALE était explicite : "Arborescence des répertoires et contenus :". J'aime bien les choses bien rangées. Les fichiers qui peuvent être utilisés par n'importe quel programme sont regroupés dans un répertoire "lib", les composants dans un répertoire "Components" avec des sous-répertoires tel que "Visual", "Form" en fonction de leur type. Le répertoire d'une application reçoit l'exécutable, les fichiers *.ini, *.lng ou autres fichiers nécessaires à l'exécutable, un répertoire "Src" pour les sources, un répertoire "Database" si présence d'une base de données, d'un répertoire "Doc" si nécessaire, un répertoire "Img" pour stocker les images utilisés pour les boutons ou autres besoins, etc. Ces divers répertoires sont identifiés dans les options de chaque projet. J'avais aussi indiqué ceci : "Pour tester, il est possible de copier tous les fichiers dans le même répertoire.". Mais c'est qu'en pleine nuit ce n'est pas toujours évident ;)

Je vais faire plus simple pour les prochaines fois.

Encore merci pour ton aide et bon repos et bon réveil.
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
15 avril 2007 à 03:24
Re Tigris :-)

Alors ...

- J'ai trouvé d'ou venait mon problème d'affichage dans le jeu, en fait je me suis rendu compte que tous les items qui devaient être traduit ne l'etaient pas (il n'y avait rien d'afficher). J'ai cherché du coté de la traduction et de l'ouverture du fichier lng, tout allait bien. Par contre la traduction ne marche pas si l'executable et le fichier lng ne sont pas dans le même dossier. Lors de mes essais de compilation, l'executable etait placé par defaut dans le dossier des sources, d'où evidemment le fichier lng est absent ...
Après un petit reglage dans les options du projet, ça va beaucoup mieux, et la fenetre retrouve tout ce qui devait y être au depart :D
-> problème #0 résolu

- Pour le problème des touches de direction du clavier, j'ai cherché un poil dans l'aide de Delphi et j'ai fini par trouver. Comme tu l'as dit quand tu clic sur un élément des options, le focus va à cet élement. Pour une raison que j'ignore, Delphi semble avoir associé la procedure "CtrlUserOptionsClick" (ForMain, ligne 412) au premier contrôle selectionnable de la fenetre, et non à la fenetre complete. Si ce contrôle perd la selection, la procedure ne fonctionne plus. Pour résoudre ce problème, ajoutes simplement à la fin de cette même procedure l'instruction "SelectFirst;". L'effet obtenu est qu'à la fin de cette procedure, l'application va automatiquement selectionner le premier contrôle de la fenêtre, et donc te permettre de récuperer les touches de directions comme avant.
-> Problème #2 résolu

- Pour ton dernier problème avec la police de caractère, je pense que je ne peux malheureusement pas t'aider. J'ai bien compris ton soucis, mais finalement je trouve l'affichage "avec le bug" plus esthetique que sans. En plus ça ne gene absolument pas la stabilité et le fonctionnement du logiciel, moi je le laisserais tel quel.

Maintenant quelques remarques pour finir :
- l'unité "FilesUtils" n'est pas trouvé à la compilation parce qu'absente du dossier "src", donc il faut la copier dans ce dossier pour que ça marche. C'est pas gravissime mais ça evite de chercher longtemps ou est passé cette unité
- au niveau amelioration, je te propose d'ajouter un simple petit message pour dire au joueur qu'il a gagné la partie, j'ai pas regardé la source à ce niveau, je ne sais pas si c'est facilement faisable, mais je pense que c'est une bonne idée ;-)

Voila, en esperant t'avoir aidé :-)

PS: il est possible que ce soit blindé de fautes d'orthographe, il est 3h24, je suis un poil fatigué :-D
tigris1 Messages postés 57 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 15 janvier 2009
15 avril 2007 à 00:13
Hello Jhon Dogget,

J'ai amélioré l'aspet du programme. Voir le commentaire de la mise à jour et la capture d'écran.

Cordialement
tigris1 Messages postés 57 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 15 janvier 2009
13 avril 2007 à 15:53
Hello Jhon Dogget,

Merci beaucoup pour ta note et ton commentaire.

Désolé pour l'apparence. Je ne peux pas mettre le composant car il est payant (mais pas cher). Le lien pour les personnes intéressées : http://www.link-rank.com/
Il y a des centaines de skins disponibles, mais j'en ai concocté quelques uns.

Je cherche toujours une explication pour les 2 petits problèmes signalés au début de la description du post.

Cordiales salutations
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
13 avril 2007 à 01:14
Le code est bien écris, documenté et commenté comme il fait, c'est un plus :-)
Par contre, une fois compilé le programme ne ressemble pas du tout à ta capture, sans doute à cause du retrait du composant (dommage).

Je me suis pas plongé dans l'algo pur parce que je ne raffole pas du sudoku, mais le code marche parfaitement.

C'est du très bon travail -> 9/10
Félicitation !
Rejoignez-nous