IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Pascal Discussion :

Projet d'un programme de jeu d'échecs


Sujet :

Contribuez Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 130
    Billets dans le blog
    9
    Par défaut Projet d'un programme de jeu d'échecs
    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 : 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
     
    {Représentation d'un échiquier avec ses pièces dans un tableau.}
    {Compilateur : Turbo Pascal 7.0}
     
    PROGRAM tablier;
    USES crt;
    TYPE
      tablier12x12 = array [1..12] of array [1..12] of shortint;
      tablier144   = array [1..144] of shortint;
    VAR position : tablier12x12;
      x,y : shortint;
    CONST initiale : tablier144=(
      +7, +7, +7, +7, +7, +7, +7, +7, +7, +7, +7, +7,
      +7, +7, +7, +7, +7, +7, +7, +7, +7, +7, +7, +7,
      +7, +7, -4, -2, -3, -5, -6, -3, -2, -4, +7, +7,
      +7, +7, -1, -1, -1, -1, -1, -1, -1, -1, +7, +7,
      +7, +7, +0, +0, +0, +0, +0, +0, +0, +0, +7, +7,
      +7, +7, +0, +0, +0, +0, +0, +0, +0, +0, +7, +7,
      +7, +7, +0, +0, +0, +0, +0, +0, +0, +0, +7, +7,
      +7, +7, +0, +0, +0, +0, +0, +0, +0, +0, +7, +7,
      +7, +7, +1, +1, +1, +1, +1, +1, +1, +1, +7, +7,
      +7, +7, +4, +2, +3, +5, +6, +3, +2, +4, +7, +7,
      +7, +7, +7, +7, +7, +7, +7, +7, +7, +7, +7, +7,
      +7, +7, +7, +7, +7, +7, +7, +7, +7, +7, +7, +7);
    BEGIN
      textbackground(blue);
      textcolor(white);
      clrscr;
      for x:=1 to 12 do
        begin
        for y:=1 to 12 do
          begin
          {copie du tableau de constantes dans le tableau de variables}
          position[x,y]:=initiale[12*y +x -12];
          {affichage sommaire pour vérification du résultat}
                            gotoXY(2*x,2*y);
          writeln (abs(position[x,y]));
          end;
        end;
      readln;
    END.

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    type
      TTablier12x12 = array[0..11,0..11] of ShortInt;
    const
      Initiale : TTablier12x12 = (
       (+7,+7........,+7,+7),
       (+7,+7,....  ),
       ...
       (+7....+7);
    var
      position: TTablier12x12;
    begin
      position := Initiale; // (en fonction du compilateur passera ou pas)
      Move(Initiale, position, SizeOf(TTablier12x12)); // copie brutale équivalente
    end;
    sous Delphi on a l'habitude de préfixer les types d'un T majuscule, et les tableaux sont souvent zéro basés, c'est plus naturel en programmation car le premier élément est à la position d'origine 0.

    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 : 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
     
    type
      TPiece = (
        HorsJeu, 
        CaseVide,
        PionBlanc, 
        TourBlanche,
        FouBlanc,
        ...
        ReineBlanche,
        PionNoir,
        ...
        ReineNoire
       );
     
    type
      TEchiquier = array[-2..+9, -2..+9] of TPiece;
    var
      Piece: TPiece;
    begin
      if Piece in [TourBlanche, ReineBlanche] then
      begin
       // si un des deux pions
      end;
      if Piece in [PionBlanc..ReineBlanche] then
      begin
        // un des pions blanc
      end;
    end;
    c'est cependant moins pratique si tu utilises les valeurs de cases dans un calcul arithmétique...les tour sont alors identifiées par Piece in [TourBlanche, TourNoire] au lieu de Abs(Piece) = 4...mais sans doute plus lisible

    tu peux aussi utiliser des constantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    const
      HORSJEU = 7;
      TOUR = 4;
      FOU   = 2;
     
      intiale  : TTableau12x12 = (
       (HORSJEU, HORSJEU...
       (HORSJEU, HORSJEU, + TOUR, + FOU...
       ...
      );
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 130
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    première remarque, ton tableau initial peut être initialisé en 12x12 également.
    J'y ai pensé, mais je ne savais pas comment l'écrire.

    Citation Envoyé par Paul TOTH Voir le message
    sous Delphi on a l'habitude de préfixer les types d'un T majuscule, et les tableaux sont souvent zéro basés, c'est plus naturel en programmation car le premier élément est à la position d'origine 0.
    C'est noté.

    Citation Envoyé par Paul TOTH Voir le message
    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.
    Effectivement les rangées supplémentaires sont faites pour éviter des erreurs de dépassement de bornes. (Il y a deux rangées à cause du cavalier.)

    Je retourne au travail. Merci pour les exemples et les indications.

  4. #4
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 130
    Billets dans le blog
    9
    Par défaut
    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 : 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
     
    {Premiers éléments d'un programme de jeu d'échecs}
    {Compilateur : Turbo Pascal 7.0}
    PROGRAM principes;
    USES crt;
    TYPE
      TCoord = -1..10;
      TPiece = -6..7;
      TTableau12x12 = array [TCoord] of array [TCoord] of TPiece;
      TTableau8x8   = array [0..7] of array [0..7] of TPiece;
      TTableau4B    = array [0..3] of Boolean;
      TNomCaze      = string [2];
      TCoup         = string [4];
    VAR 
      Position : TTableau12x12;
      x,y : TCoord;
      trait : Boolean; {qui doit jouer}
      passe : TCoord; {si un pion passe et, le cas échéant, sur quelle colonne}
      autorisation1 : TTableau4B; {si le roque est permis (1/2)}
      eschec : Boolean;
      autorisation2 : TTableau4B; {si le roque est permis (2/2)}
      compte : Byte; {nombre de coups échangés}
      coup : TCoup; {"a8b8"}
    CONST
      Initiale : TTableau12x12=(
      (007,007,007,007,007,007,007,007,007,007,007,007),
      (007,007,007,007,007,007,007,007,007,007,007,007),
      (007,007, 4 , 1 , 0 , 0 , 0 , 0 ,-1 ,-4 ,007,007),
      (007,007, 2 , 1 , 0 , 0 , 0 , 0 ,-1 ,-2 ,007,007),
      (007,007, 3 , 1 , 0 , 0 , 0 , 0 ,-1 ,-3 ,007,007),
      (007,007, 5 , 1 , 0 , 0 , 0 , 0 ,-1 ,-5 ,007,007),
      (007,007, 6 , 1 , 0 , 0 , 0 , 0 ,-1 ,-6 ,007,007),
      (007,007, 3 , 1 , 0 , 0 , 0 , 0 ,-1 ,-3 ,007,007),
      (007,007, 2 , 1 , 0 , 0 , 0 , 0 ,-1 ,-2 ,007,007),
      (007,007, 4 , 1 , 0 , 0 , 0 , 0 ,-1 ,-4 ,007,007),
      (007,007,007,007,007,007,007,007,007,007,007,007),
      (007,007,007,007,007,007,007,007,007,007,007,007));
    FUNCTION NomCaze (x,y : TCoord) : TNomCaze;
      begin
      NomCaze:=chr(x+96)+chr(y+48);
      end;
    BEGIN
      textbackground(blue);
      textcolor(white);
      clrscr;
      for x:=-1 to 10 do
        begin
        for y:=-1 to 10 do
          begin
          Position[x,y]:=Initiale[x,y];
     
          {affichage pour vérification}
          case Position[x,y] of
            -6..-1 : textcolor(red);
            0..6 : textcolor(white);
            7 : textcolor(green);
          end ;
          gotoXY (x+3,12-y);
          writeln (abs(Position[x,y]));
          gotoXY (2*(x+3)+20,12-y);
          writeln (NomCaze(x,y));
          end;
        end;
      readln;
    END.

  5. #5
    Membre Expert

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      TPiece = (
        HorsJeu, 
        CaseVide,
        PionBlanc, 
        TourBlanche,
        FouBlanc,
        ...
        ReineBlanche,
        PionNoir,
        ...
        ReineNoire
       );
    C'est plus lisible, et ca permet de comprendre d'un coup le code.

    Ensuite, n'utilise pas de "marge" pour ton tableau : c'est inutile. Voici ce que je fait habituellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function IsCellInTab (ACol, ARow : integer): boolean;
    begin
      Result:=(ACol in [0..7]) and (ARow in [0..7]);
    end;
    Et pour savoir si une case est libre, au lieu de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Position[Col,Row]=007 then
    tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if IsCellInTab(Col,Row) then

    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 : 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
      for x:=-1 to 10 do
      begin
        for y:=-1 to 10 do
        begin
          Position[x,y]:=Initiale[x,y];
     
          {affichage pour vérification}
          case Position[x,y] of
            -6..-1 : textcolor(red);
            0..6 : textcolor(white);
            7 : textcolor(green);
          end ;
     
          gotoXY (x+3,12-y);
          writeln (abs(Position[x,y]));
          gotoXY (2*(x+3)+20,12-y);
          writeln (NomCaze(x,y));
        end;
      end;
    Voila pour l'instant. J'espere t'avoir été utile ...

    Bonne chance pour la suite !

  6. #6
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 130
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par mick605 Voir le message
    Très interressant, j'ai bien envie de voir ce que ca va donner !
    Merci pour tes encouragements.

    Citation Envoyé par mick605 Voir le message
    Comme Paul t'as suggéré, utilise un type énuméré. C'est plus lisible, et ca permet de comprendre d'un coup le code.
    Je l'utiliserai, sans aucun doute, mais pas à cet endroit-là, parce qu'il me semble que ce serait, plus lisible certes, mais moins commode que des nombres.

    Citation Envoyé par mick605 Voir le message
    Ensuite, n'utilise pas de "marge" pour ton tableau : c'est inutile. Voici ce que je fait habituellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function IsCellInTab (ACol, ARow : integer): boolean;
    begin
      Result:=(ACol in [0..7]) and (ARow in [0..7]);
    end;
    Exemple très utile : c'est noté !

    Citation Envoyé par mick605 Voir le message
    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 :
    Merci pour le conseil et l'exemple.

    Citation Envoyé par mick605 Voir le message
    Bonne chance pour la suite !
    Merci !

  7. #7
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 996
    Billets dans le blog
    2
    Par défaut
    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...
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    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]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  8. #8
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 963
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 963
    Par défaut
    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.

  9. #9
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 963
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 963
    Par défaut
    Jai,

    De retour.

    La faute est ici :
    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
    PROCEDURE Commande(trt:Boolean;var cmnd:String);
    	const nomProg:String='ESCHECS';
    	var couleur:String;OK:Boolean;lst:TListe;cp:TCoup;valab:Boolean;
    	begin
    		OK:=False;
    		while OK=False do
    		begin
    			GotoXY(2,23);
    			Write(nomProg,'>');
    			if trt=False then couleur:='BLANC' else couleur:='NOIR';
    			Write(couleur,'>'); ClrEol; ReadLn(cmnd);
    			Assign(lst,NomDossier+'LISTE3');
     
    			Reset(lst); { ICI, ouvert, et pas fermé }
     
    			valab:=False;
    			while not Eof(lst) do
    			begin
    				Read(lst,cp);
    				if cmnd=cp then valab:=True;
    			end;
    			OK:=valab;
    			if cmnd='exit'then OK:=True;
    		end;
    	end;
    Pour trouver, je n'ai pas lu le code, mais utilisé la fonction de comptage d'occurrences de mon éditeur :
    - 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    		GotoXY(60,6); Write('Partie remise=',(not Echec) and AucunCoupPossible); ClrEol;
    qui se comprend bien au premier coup d'œil.

    - Idem pour la déclaration des variables quand elles ne sont pas même type.

    À part ces remarques, c'est plutôt bien.

  10. #10
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 130
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par droggo Voir le message
    La faute est ici :
    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
    PROCEDURE Commande(trt:Boolean;var cmnd:String);
    	const nomProg:String='ESCHECS';
    	var couleur:String;OK:Boolean;lst:TListe;cp:TCoup;valab:Boolean;
    	begin
    		OK:=False;
    		while OK=False do
    		begin
    			GotoXY(2,23);
    			Write(nomProg,'>');
    			if trt=False then couleur:='BLANC' else couleur:='NOIR';
    			Write(couleur,'>'); ClrEol; ReadLn(cmnd);
    			Assign(lst,NomDossier+'LISTE3');
     
    			Reset(lst); { ICI, ouvert, et pas fermé }
     
    			valab:=False;
    			while not Eof(lst) do
    			begin
    				Read(lst,cp);
    				if cmnd=cp then valab:=True;
    			end;
    			OK:=valab;
    			if cmnd='exit'then OK:=True;
    		end;
    	end;
    Je suis bien content d'être débarrassé de cette erreur.

    Merci d'avoir pris le temps de regarder et de commenter.

    Je vais faire un effort sur la présentation.

  11. #11
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 963
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 963
    Par défaut
    Gie,
    Citation Envoyé par Roland Chastain Voir le message
    Je vais faire un effort sur la présentation.
    Je l'espère pour toi, c'est plus important qu'on ne le pense a priori.

  12. #12
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 130
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Alcatîz Voir le message
    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...
    J'ai vu les caractères en question. Ce serait certes plus joli que mes lettres !

Discussions similaires

  1. [Flash Pascal] Projet d'un programme permettant de visualiser une position du jeu des échecs
    Par Roland Chastain dans le forum Flash Pascal
    Réponses: 11
    Dernier message: 21/06/2015, 09h05
  2. Projet Jeu d'échec
    Par Layla dans le forum Langage
    Réponses: 10
    Dernier message: 23/12/2010, 13h06
  3. Jeu d'échec borland soap
    Par rpoulin dans le forum Web & réseau
    Réponses: 2
    Dernier message: 20/10/2005, 05h02
  4. Help ! Programmer un jeu vidéo
    Par Jay Bee dans le forum DirectX
    Réponses: 7
    Dernier message: 18/03/2004, 18h38
  5. Help ! Programmer un jeu vidéo...
    Par Jay Bee dans le forum OpenGL
    Réponses: 3
    Dernier message: 05/03/2004, 15h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo