Partage
  • Partager sur Facebook
  • Partager sur Twitter

TP - MasterMind Objective C

Sujet résolu
    3 février 2013 à 10:54:28

    Bonjour

    Je me suis mis au langage Objective C et j'ai pu  terminer le TP de Mateo et le comprendre.

    Maintenant j'aimerai l'ameliorer sur un point qui me parrai important ...

    En effet lors de la comparaison des deux char, le code ne nous permet selement de nous dire combien de chiffres sont bien placé. En revanche, ce qu'il ne nous dit pas c'est si un des chiffres entrer est bien present dans le chiffre proposer par la machine.

    Et la je me heurte a beaucoup de probleme ....

    au final je pense que si j'arrive a comparer le premier caracter  du chiffre entrer avec tous les caractere du chiffre de la machine.

    ex:

    nombre de la machine : 1424

    nombre entrer : 4154

    1 chiffre bien placer et 3 chiffres sont bien present

    deja la premiere difficultée si on compar les caractere le premier chiffre entrer "4" va nous renvoyer 2 chiffre present puisqu'il sera comparer a tous les caracteres du nombre de la machine et il en va de meme pour le dernier "4".

    Du couple nombre de chiffre présent montte a 5 au lieu de 3 .... meme probleme si la comparaison comprend 3 ou 4 chiffres identique.

    j'ai penser à utiliser une grosse floper de if et de for mais, le code devien enorme juste pour sortir une info en plus dans l'application ...

    J'ai essayer de reflechir toute la nuit mais impossible de trouver comment m'en sortir.

    Si vous n'avez pas compris faites le moi savoir ^^.

    • Partager sur Facebook
    • Partager sur Twitter
      3 février 2013 à 17:18:26

      Après quelques heures de réflexions j'en suis arriver à une solution toute simple ... 

      je depose le code pour ceux qui seraient intéressés.

      -(IBAction)saisieReturn:(id)sender
      {
              [sender resignFirstResponder];
              int bienPlace = 0;
              int chiffresBon = 0;
              int charIndex; //Index de boucle pour parcourir tous les caractères des chaînes à comparer
              unichar testChar1, testChar2; //Les caractères à comparer :testChar1 dans le nombre proposé, testChar2 dans le nombre trouver
              unichar test1 = [_saisie.text characterAtIndex:0];
              unichar test2 = [_saisie.text characterAtIndex:1];
              unichar test3 = [_saisie.text characterAtIndex:2];
              unichar test4 = [_saisie.text characterAtIndex:3];
          
          for (charIndex = 0; charIndex < 4; charIndex++)
              {
                  testChar1 = [_saisie.text characterAtIndex:charIndex];
                  testChar2 = [[NSString stringWithFormat:@"%d", nombreChoisi] characterAtIndex:charIndex];
                  if (testChar1 == testChar2)
                  bienPlace++;
              
                  unichar test0 = [[NSString stringWithFormat:@"%d", nombreChoisi] characterAtIndex:charIndex];
                  
                  
                  if (test0 == test1 || test0 == test2 || test0 == test3 || test0 == test4) //on teste lepremier caractere du nombreChoisi avec tous les caractere dela saisie
                      {
                          chiffresBon++;
                      }
              
              }
          chiffresBon = chiffresBon - bienPlace;
          
          _resultats.text = [NSString stringWithFormat:@"%@%@%d%@%d%@%@", _saisie.text, @" : Bien placés : ", bienPlace, @" | Mal placés : ", chiffresBon, @"\r",_resultats.text];
          
          if (bienPlace == 4)
                  _resultats.text = [NSString stringWithFormat:@"%@%d", @"Bravo, le résultat était ", nombreChoisi];
      }


      On suit donc le TP et on insert, dans la boucle for, un teste pour determiner si le premier caractère du nombre choisi par la machine est présent dans les quatre chiffres entrer par l'utilisateur.

      Si en effet le caractère est présent alors on incrémente la valeur chiffreBon de 1.

      La boucle recommence et répète le teste avec le deuxième caractère, et ainsi de suite jusqu'au quatrième.

      On terminer en mettant à jour la valeur chiffreBon en fonction de la valeur bienPlace, afin d'afficher le nombre de chiffre mal placé.

      on oubli pas de mettre a jour l'affichage de _resultats.text pour afficher la nouvelle valeur.

      Normalement ceci est fonctionnelle.

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        4 février 2013 à 12:46:27

        Bonjour

        Je me suis mis au langage Objective C et j'ai pu  terminer le TP de Mateo et le comprendre.

        Maintenant j'aimerai l'ameliorer sur un point qui me parrai important ...

        En effet lors de la comparaison des deux char, le code ne nous permet selement de nous dire combien de chiffres sont bien placé. En revanche, ce qu'il ne nous dit pas c'est si un des chiffres entrer est bien present dans le chiffre proposer par la machine.

        Et la je me heurte a beaucoup de probleme ....

        henri claude MALATIA

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          15 février 2013 à 10:52:48

          Bonjour,

          Je cherche à me perfectionner dans le langage C.

          Si vous avez des conseils à me donner, n'hésitez pas.

          Merci.

          Henri Claude MALATIA

          • Partager sur Facebook
          • Partager sur Twitter
            15 février 2013 à 12:37:48

            Se perfectionner en C  ou en Obj-C?

            Tout dépend de ce que tu recherches comme expérience. Personnellement je fais des simulations de systèmes économiques d'un point de vue macroscopique. Après évidemment je met l'info comme un support et non une discipline.

            Quel est ton niveau? Qu'est ce que tu aimes faire? 

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              20 février 2013 à 13:40:17

              J'ai un niveau intermédiaire.

              Je voudrais me perfectionner dans les interfaces graphiques. Je suis sous Linux.

              Des conseils?

              • Partager sur Facebook
              • Partager sur Twitter
                20 février 2013 à 19:32:55

                Il faut aller dans la section pour le C dans ce cas ;)
                • Partager sur Facebook
                • Partager sur Twitter

                TP - MasterMind Objective C

                × 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