|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
Bonjour à tous !
Je commence un programme de jeu d'échecs en Pascal. Je voudrais présenter mon travail, au fur et à mesure, dans le forum, afin de pouvoir recueillir les conseils et les sentiments des uns et des autres. J'espère aussi que les exemples (et les éventuelles discussions) pourront être utiles à d'autres que moi. Je commence par ce petit bout de code qui est un essai de représentation de l'échiquier dans un tableau. Je cherchais un équivalent de la commande DATA du Basic, pour présenter agréablement les valeurs de la position initiale. La solution m'a été apportée hier par un membre du forum : j'ai appris avec grande joie qu'un tableau pouvait être déclaré comme une constante ! Code :
|
||
|
|
00
|
|
|
#2 | ||||||
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 395 ![]() |
Bonjour,
c'est une bonne idée, mais reste dans la même discussion... je suis moi même passé du BASIC au Pascal il y a un certain nombre d'années, c'est un vrai bonheur de passer à un langage qui, tout en restant simple, offre un vrai confort de programmation. première remarque, ton tableau initial peut être initialisé en 12x12 également. Code :
ceci dit, vu les valeurs de ton tableau, il pourrait tout aussi bien être déclaré array[-1..+10] ou [-2..+9] car manifestement les positions +7 sont des garde-fous. tu peux également remplacer les shortInt par un énuméré Code :
tu peux aussi utiliser des constantes Code :
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
||||||
|
20
|
|
|
#3 | |||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
Citation:
Citation:
Citation:
Je retourne au travail. Merci pour les exemples et les indications.
|
|||
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
Voici mon travail de l'après-midi. Rien de formidable, mais une première pierre pour le programme que je voudrais écrire. Quel beau langage que le Pascal !
A propos du compilateur : pour le moment je travaille avec TP7, parce que je n'ai pas eu le temps de me familiariser avec les autres. D'ailleurs, il me suffit, au moins pour commencer. Bienvenue aux conseils, avis et remontrances à propos du code ! Code :
|
||
|
|
00
|
|
|
#5 | ||||||
|
Membre Expert
![]() ![]() Étudiant Inscription : juin 2009 Messages : 936 ![]() |
Salut
Très interressant, j'ai bien envie de voir ce que ca va donner ! A moi d'apporter ma pierre a l'édifice : Comme Paul t'as suggéré, utilise un type énuméré : Code :
Ensuite, n'utilise pas de "marge" pour ton tableau : c'est inutile. Voici ce que je fait habituellement : Code :
tu fait L'indentation est très importante aussi. Dans ton cas, elle est trop forte je trouve. Pour ma part, j'utilise 2 espaces seulement, et j'indente un peu différement, voila ce que ca donne : Code :
Bonne chance pour la suite !
__________________
Articles : Création d'un système de chat en PascalProgrammes : Défi Pascal 2011 - Mon Tetris Défi Pascal 2010 - Mon système de chat Défi Delphi 2009 - Mon Sudoku SolverRetrouvez mes différents projets sur ma page personnelle. |
||||||
|
|
00
|
|
|
#6 | |||||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
Merci pour tes encouragements.
Citation:
Citation:
Citation:
Merci ! P.-S. S'il y a un moyen simple d'utiliser une police de caractère avec TP7 en mode console, je voudrais bien le connaître ! J'ai un fichier TrueType qui contient de jolies pièces, mais je ne sais pas l'utiliser. |
|||||
|
|
00
|
|
|
#7 | ||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
Bonjour !
J'ai fait un pas de plus en écrivant une fonction qui permet d'enregistrer une position quelconque au format FEN. Le format FEN ("Forsyth-Edwards Notation") est décrit dans cette page (en anglais) : http://kirill-kryukov.com/chess/doc/fen.html La chose qui m'a donné du fil à retordre était de compter les cases vides et d'ajouter dans la chaîne un seul caractère correspondant au nombre des cases vides consécutives. Le moins qu'on puisse dire est que je n'y suis pas arrivé du premier coup ! J'ai aussi travaillé à bien distinguer les deux types de tablier dont je me servirai, l'un avec un garde-fou, l'autre sans. Merci à Paul TOTH qui m'a fait penser à employer ce mot de "garde-fou", beaucoup plus parlant et plus intéressant que celui de "bordure" dont je me servais jusqu'ici. Je pense travailler sur un affichage provisoire en mode texte. Je vais essayer de faire quelque chose qui ne soit pas trop désagréable, mais sans y passer trop de temps. Conseils bienvenus ! (Je cherche toujours à connaître la méthode pour utiliser une police TrueType avec TP7, si toutefois ce n'est pas trop compliqué à mettre en œuvre.) Code :
|
||
|
|
00
|
|
|
#8 | |
![]() ![]() ![]() |
Bonjour,
Citation:
http://pascal.developpez.com/telecha...s-for-DOS-1-60
__________________
Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell] |
|
|
00
|
|
|
#9 | |
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
Citation:
Je crois que je vais me contenter, pour l'instant, de représenter mes pièces avec des lettres. P.-S. J'ai appris beaucoup de choses sur ce sujet (et sur d'autres) en relisant d'anciennes discussions du forum. Vous me direz que j'aurais peut-être dû commencer par là ! |
|
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() ![]() Étudiant Inscription : juin 2009 Messages : 936 ![]() |
Peut etre devrais tu profiter du fait que tu n'es pas trop avancé dans ton programme pour envisager de passer sous Lazarus ... Il est plus récent, et te permettra de faire des applications fenetrées facilement (même si c'est pas ton but premier, on sait jamais)
Simplement une suggestion ^^
__________________
Articles : Création d'un système de chat en PascalProgrammes : Défi Pascal 2011 - Mon Tetris Défi Pascal 2010 - Mon système de chat Défi Delphi 2009 - Mon Sudoku SolverRetrouvez mes différents projets sur ma page personnelle. |
|
|
00
|
|
|
#11 | |
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
Citation:
Cependant c'est vrai que je ne suis pas encore décidé. J'ai voulu télécharger Lazarus : le mastodonte ! Je plaisante naturellement. Il faudra que j'y jette un œil. Et, au besoin, je réécrirai mon programme depuis le début. |
|
|
|
00
|
|
|
#12 | |||
![]() ![]() ![]() |
Citation:
Par exemple, si TP7 compile vers le répertoire C:\TP7\EXE_TPU, tu peux monter ce répertoire comme disque C dans DosBox, avec la commande Citation:
Citation:
__________________
Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell] |
|||
|
00
|
|
|
#13 |
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
|
|
|
00
|
|
|
#14 | ||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
Je crois que j'ai fini la première partie de mon programme.
J'ai eu l'agréable surprise (que les utilisateurs plus expérimentés me pardonnent) de constater que ce morceau de code s'exécute parfaitement avec d'autres compilateurs que TP7. Je ne m'y attendais pas. Il y a quand même une différence sensible, à savoir la taille des exécutables :
Code :
|
||
|
|
00
|
|
|
#15 | ||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
Bonjour !
Quelques mots pour présenter mes dernières avancées. J'ai écrit les grandes lignes d'une procédure faite calculer la valeur de la variable "echec". Pour cela il faut commencer à calculer des coups. Dans son état actuel, la procédure calcule les coups des pions et ceux des cavaliers, et les enregistre dans un fichier. Jusqu'ici, le programme se compile sans problème avec TP7, Virtual Pascal, Free Pascal. Je vais faire en sorte de conserver cette compatibilité. Veuillez noter que pour essayer le code, il faut changer le chemin du dossier où seront créés les fichiers temporaires. J'ai déclaré le chemin en tête du programme comme une constante, en attendant de faire mieux. P.-S. Toujours pas résolu le problème de l'indentation. Je ne sais pas pourquoi mes "dents" s'élargissent quand je colle mon code ici. Code :
|
||
|
|
00
|
|
|
#16 | ||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
Bonjour !
Je voudrais vous présenter l'état actuel de mon programme : Code :
![]() J'ai rencontré un problème sérieux : le programme s'exécute correctement pendant quelques tours, mais au bout d'un moment il s'arrête avec ce message : "ERROR 4 Too many files open". Pourtant, après vérification, il me semble que tous les fichiers ouverts sont correctement refermés. Il y a une procédure dans laquelle j'ouvre deux fichiers en même temps, pour lire dans l'un et écrire dans l'autre. Mais si c'est de là que vient l'erreur, pourquoi cela marche-t-il au début ? C'est ennuyeux parce que je comptais me servir de fichiers pour conserver des listes de coups, puisque j'ai cru comprendre qu'il ne fallait pas trop solliciter la mémoire vive. Pour ne pas avoir à m'inquiéter de cela, j'étais décidé à utiliser des fichiers pour conserver les données, et j'étais plutôt satisfait de la vitesse d'exécution. Auriez-vous une idée et pourriez-vous me dire ce qui ne va pas ? Je viens de faire une partie entière avec Virtual Pascal : l'erreur ne s'est pas produite. Je vais songer à changer de cheval. Auquel cas j'essaierai quand même de polir ce petit programme, même si ce n'est qu'un exercice de programmation. |
||
|
|
00
|
|
|
#17 |
![]() ![]() ![]() |
Désolé de sauter un peu du coq à l'âne mais il y a peut-être moyen d'afficher des caractères unicode dans la console à l'aide des fonctions de l'API WriteConsole, SetConsoleCursorPosition, etc. Mais pour cela, il faudrait abandonner Turbo Pascal au profit de Virtual Pascal ou Free Pascal.
Il y a des caractères très intéressants ici : http://www.utf8-chartable.de/unicode....pl?start=9728 Je n'ai jamais essayé mais dès que j'aurai un peu de temps...
__________________
Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell] |
|
00
|
|
|
#18 |
|
Expert Confirmé
![]() ![]() Inscription : août 2006 Messages : 3 414 ![]() |
Hie,
Je m'inquiète pour ton code quand je vois tant de "valeurs magiques", c'est à dire des valeurs numériques dispersées. Pour la maintenance, lecture plus aisée, ..., on déclare des constantes. Sinon, je vais prendre un moment pour lire, et voir d'où peut venir ton problème avec les fichiers.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir. |
|
|
00
|
|
|
#19 | ||||
|
Expert Confirmé
![]() ![]() Inscription : août 2006 Messages : 3 414 ![]() |
Jai,
De retour. La faute est ici : Code :
- 10 Assign - 4 ReWrite - 6 Reset MAIS - 9 Close !!! Ne restait qu'à aller voir en se calant sur le ReWrite et Reset, et contrôler les quelques lignes suivantes. Au passage : - Évite d'utiliser des tabulations pour l'indentation, la mise en page change selon les options de l'éditeur utilisé. L'indentation doit être régulière et cohérente dans tout le code, ce qui n'est pas le cas. - Aère le code, en sautant des lignes pour délimiter les blocs logiques, entre autres, pour mettre en évidence les procédures/fonctions (y compris celles qui sont internes à une autre Tu l'as parfois fait, mais comme pour l'indentation, il faut être cohérent. - Évite d'écrire plusieurs instructions sur la même ligne, à quelques exceptions près, genre Code :
- Idem pour la déclaration des variables quand elles ne sont pas même type. À part ces remarques, c'est plutôt bien.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir. |
||||
|
|
20
|
|
|
#20 | |
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 687 ![]() |
Citation:
Autrement j'ai commencé à feuilleter ton tutoriel sur Virtual Pascal et OWL : ça m'a bien intéressé. |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com