Partage
  • Partager sur Facebook
  • Partager sur Twitter

mastermind en pascal

faire jouer l'ordinateur contre un humain

    11 mai 2006 à 14:57:52

    bonjour, voici un algo que j'ai écrit pour faire jouer l'ordi contre un humain, . je souhaiterai avoir votre avis en cas d'erreur. merci


    pour i:= 1 à 4 faire
            tb_secret[i]:=0;
            écrire ('entrer la combinaison secrete');
            demander(tb_secret[i]);
        fin pour

    pour a:=1 à 4 faire
            tb_place[a]:='xxx';
        fin pour

    pour j:=1 à 4 faire
            tb_essai[j]:=0;
            tb_essai[j]:= random(9);
            ecrire (tb_essai[j]);
         fin pour

    pour a:=1 à 4 faire
             pour f1:=1 à 9 faire
                            tb_val[a,f1]:=f1; // ici j'initialise le tbableau 2D, chaque colonne sera remplit de 0 à 8, ce sont les valeurs possibles des autres essais.
                      fin pour
        fin pour

    pour j:=1 à 4 faire
             f:=tb_essai[j];
          fin pour

    correct:=0;
    essai:=0;
    tant que ((correct=0) et (essai<=5)) faire;
            essai:=essai+1;
            pour a:=1 à 4 faire
                    demander ('donner les indices');
                    écrire (tb_place[a]);
                fin pour
    // ici "j'apprend" à l'ordinateur à lire le tableau d'indice, ainsi à chaque indice rencontrer l'ordinateur réagira en conséquence, pour cette instruction ci dessous, il affectera -1 dans tb_val à toutes valeurs du tablleau d'essai correspondant à xxx dans le tableau d'indice.
            pour a:= 1 à 4 faire
                    si (tb_place[a]='xxx') alors
                            pour f:=1 à 4 faire
                                    tb_val[a,f]:=-1;
                                 fin pour
                  fin si
                           
                    si (tb_place[a]='non') alors
                            pour f:=1 to 4 do
                                    tb_val[a,f]:=-1;
                                 fin pour
                  fin si
    // ici j'essai de faire en sorte que l'ordinateur garde le bonne valeur et affecte -1 à toutes les autres de la colonne corresponde.             
                    si (tb_place[a]='oui') alors
                            pour f:=1 à 4 faire
                                    tb_val[a,f]:=f;
                                 fin pour
                            pour f1:=1 à 9 faire
                                    tb_val[a,f1]:=-1;
                                 fin pour
                  fin si
                fin pour

            pour a:=1 à 4 alors
                    f:=1;
    // cette instruction permet à l'ordinateur de ne pas choisir une valeur interdite. c'est un choix pas élimination dans les cas ou il rencontre dans tb_place un non ou un xxx.
                    tant que (tb_val[a,f]=-1) faire
                            f:=f+1;
                         fin tant que
                    pour i:=1 à 4 faire
                            tb_essai[i]:=tb_val[a,f];
                         fin pour
                fin pour
       fin tant que



    • Partager sur Facebook
    • Partager sur Twitter
      13 mai 2006 à 8:31:04

      j'ai modifier mon sujet car il n'était pas trop compréhensible il me semble, j'ai donc ajouté quelques commentaires afin qu'il vous apporte une meilleur compréhension de mon raisonnement sur cet algorithme.
      • Partager sur Facebook
      • Partager sur Twitter

      mastermind en pascal

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown