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

Langage Pascal Discussion :

[LG]Un jeu du morpion


Sujet :

Langage Pascal

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 34
    Points : 16
    Points
    16
    Par défaut [LG]Un jeu du morpion
    Voila je me lance dans la prog d'un morpion en mode texte pour deux joueurs. Comme je debute je veux faire simple. A chaque coup d'un joueur je reimprime l'aire de jeu sur l'ecran( parce que je sais pas faire autrement).
    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
     
    program morpion
    var i,j : integer;
    var tab: Array[0..9,0..5] of char;
     
    procedure afichtab;
    begin
    for i:=1 to 9 do
    	begin
    	for j:=1 to 5 do
    		begin
    		write(tab[i,j]);
    		if j=5 then writeln();
    		end;
    	end;
    	readln;
    end
    Par quoi remplacer le writeln pour que le prog fasse un retour chariot apres avoir afficher la 5eme colonne ?( je sais ca a l'air bete mais j'en suis vraiment au debut)

    Comment remplir le tableau après avoir demander la case au joueurs ?
    Merci pour les pistes que vous pourriez me donner.

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Citation Envoyé par Yffick
    Par quoi remplacer le writeln pour que le prog fasse un retour chariot apres avoir afficher la 5eme colonne ?( je sais ca a l'air bete mais j'en suis vraiment au debut)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure afichtab; 
    begin 
    for i:=1 to 9 do 
    begin 
       for j:=1 to 5 do write(tab[i,j]); 
       writeln(); 
    end; 
    readln; 
    end;
    Citation Envoyé par Yffick
    Comment remplir le tableau après avoir demander la case au joueurs ?
    Tu peux par exemple coder 0 pour une case vide, 1 pour une croix et 2 pour un rond. Il faut en tout cas distinguer les trois cas possibles : vide, croix ou rond.

    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Merci pour les pistes.
    Maintenant j'ai un probleme de compilation dans le programme principal morpion après la procedure remplir il(tp7) me met "Error .expected". :

    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
     
    program morpion
    uses crt;
    var i,j : integer;
    var tab: Array[0..8,0..5] of integer;
    procedure afichtab;
    {remplit le tableau suivant qu'il y ait des croix ou des ronds ou des blancs}
    Procedure remplir;
     
    procedure afichtab;
    begin
    for i:=1 to 8 do
    	begin
    	for j:=1 to 5 do
    	begin
    	if tab[i,j]=0 then write(' ');
    	if tab[i,j]=1 then write(char(120));
    	if tab[i,j]=2 then write(char(1));
    	if tab[i,j]=3 then write(char(58));
    	if tab[i,J]=4 then write(char(240));
    	end;
    	writeln;
    readln;
    end;
     
    Procedure remplir;
    begin
    for i:=1 to 8 do
    	begin
    	for j:=1 to 5 do
    		begin
    		if i=3 or 6 then tab[i,j]:=3
    		else tab[i,j]:=0
    		if j=2 or 4 then tab[i,j]:=4
    		else tab[i,j]:=0
    		end;
    	end;
    end;
     
    begin morpion
    remplir;
    afichtab;
    end.
    Voila pour l'instant je veux juste afficher le tableau avant que les joueurs ne décident de leurs coups.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    J'ai compris mon erreur et maintenant ca compile...
    Mais j'ai un écran noir quand je lance avec run, je tape sur une touche et rien ne s'affiche alors que je voudrais un truc dans ce genre la..
    x | x| 0
    ----------
    0 | 0| x
    ---------
    0 | 0| x
    Sans les croix et les ronds car je veux juste afficher le tableau avant les premiers coups.
    J'ai besoin de
    Merci.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Le curseur s'affiche en bas à gauche de la fenetre.
    La je seche

  6. #6
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Ca vient sûrement de ta procédure affichage...
    Tu fais un transtypage d'un entier vers un char C'est pas très catholique... Utilise plutôt la fonction chr() prévue à cet effet !
    Par contre, je comprends pas très bien pourquoi tu as fait cette fonction affichage de cette manière (désolé !)... Redonne la version la plus récente de ton programme.

    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    je te donne ma derniere version.

    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
     
    program morpion
    uses crt;
    var i,j : integer;
    var tab: Array[0..8,0..5] of integer
     
    procedure afichtab;
    begin
    for i:=1 to 8 do
    	begin
    	for j:=1 to 5 do
    	begin
    	if tab[i,j]=0 then write(chr(0));
    	if tab[i,j]=1 then write(char(120));
    	if tab[i,j]=2 then write(char(1));
    	if tab[i,j]=3 then write(char(58));
    	if tab[i,J]=4 then write(char(240));
    	end;
    	writeln;
    readln;
    end;
     
    Procedure remplir;
    begin
    for i:=1 to 8 do
    	begin
    	for j:=1 to 5 do
    		begin
    		if i=3 or 6 then tab[i,j]:=3
    		else tab[i,j]:=0
    		if j=2 or 4 then tab[i,j]:=4
    		else tab[i,j]:=0
    		end;
    	end;
    end;
     
    begin morpion
    clrScr;
    remplir;
    afichtab;
    end.
    Pourquoi ca me met erreur de compilation avec Clrscr :

    Quand à la proc d'affichage je sais pas faire alors si il y a un meilleur moyen que le mien(j'en doute pas). Je suis tout ouie.

  8. #8
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Ma foi c'est un peu bizarre oui... Tu veux afficher le quadrillage avec affichtab ?

    Au début de ton programme, pas besoin de mettre begin morpion, car seul le begin suffit...


    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  9. #9
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    C'est pas que "y'a pas besoin", c'est qu'il ne faut pas !

    Sinon, pas de grosse erreur en vue.

    Un petit plus. Au lieu d'utiliser une batterie de "if" à la suite, utilise plutôt une structure "Case". Ca pourra t'apprendre à t'en servir en plus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    case Tab[i, j] of
    0: Write(#32);   
    1: Write(#120); 
    2: Write(#1); 
    3: Write(#58); 
    4: Write(#240); 
    end;
    Attention aussi, tu utilises un caractère de contrôle (#1). Il faut faire attention à ce qu'il ne fasse pas de bizarreries. Et pour l'espace, ce n'est pas #0, mais #32.

    A+

    PS: Sous Turbo Pascal, Chr(???) est équivalent à #??? où ??? représente un code numérique ASCII.
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Merci les Gars pour votre aide.
    Ca me touche beaucoup vu que ca me fait avancer. Vos conseils seront écouté et mon programme c'est un peu ameliorer aujourd'hui. J'arrive à afficher le tableau et j'essairai de penser à utiliser Case.
    A+

  11. #11
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Ravi de servir à qqch !

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Algorithme d'élagage alpha-beta en java appliqué au jeu du morpion 3*3
    Par sampaiX dans le forum Intelligence artificielle
    Réponses: 4
    Dernier message: 06/05/2010, 13h38
  2. Jeu du Morpion
    Par jujusous3 dans le forum Agents de placement/Fenêtres
    Réponses: 11
    Dernier message: 22/02/2010, 01h17
  3. Jeu de morpion
    Par saphire dans le forum Débuter
    Réponses: 4
    Dernier message: 02/11/2008, 00h26
  4. Besoin d'aide jeu du morpion
    Par narcis60floyjo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/02/2008, 15h14
  5. petit bog dans mon jeu de morpion
    Par 123quatre dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 19/06/2006, 11h10

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