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

MATLAB Discussion :

Jeu du saute-mouton, probleme de boucle [Débutant]


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Jeu du saute-mouton, probleme de boucle
    Bonjour a tous,

    J'ai pour projet de réalisé le jeu du saute-mouton (pour ceux qui ne connaisse pas : http://kids.niehs.nih.gov/froggame.htm ou encore avec règle et solution :http://pagesperso-orange.fr/jeux.lul...on/mouton.htm#)

    Mon problème se situe au niveau de la boucle "While V~=W".En faite cela ne fonctionne pas pour certains déplacements, alors que pour d'autre la boucle fonctionne correctement. Par exemple pour passer de :
    1101222 à 1121022 Cela mets fin a la boucle.
    J'ai bien essayé de modifier le paramètre de la boucle mais pas moyen de résoudre le shmilblick.

    Je sais qu'il me manque beaucoup a faire dans le programme mais j'aimerai que mes déplacements marchent avant de faire la suite.


    Voila
    Si quelqu'un pouvait me donner des pistes ...

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Le problème vient du fait que tu fais une comparaison terme à terme de vecteurs.
    Derrière un WHILE on devrait avoir 0 ou 1, là on a un vecteur composé de 1 et de 0.
    Pour tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    V=[1 1 0 1 2 2 2];
    W=[1 1 2 1 0 2 2];
    V~=W
    Or toi tu veux vérifier que tous les éléments de V sont égaux à tous les éléments de W, non ?
    Une solution serait d'utiliser la fonction ALL.

  3. #3
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Tout d'abord merci de ta réponse rapide
    Je pensais bien que mon erreur venais de la, j'ai d'ailleurs essayé de faire un while V(1)~=W(1) & V(2)~=W(2) & V(3)~=W(3) & V(4)~=W(4) & etc ...
    qui ne marche pas non plus.

    En ce qui concerne la fonction all, j'ai fait une petite recherche pour savoir se que c'était et je ne vois pas en quoi elle peut me servir dans mon cas vue que j'ai toujours un zéro dans mon vecteur.
    J'ai peut être mal compris ton explication en faite (Désolé je débute vraiment sur matlab

    Edit : Je crois que je viens de trouver en faite, un truc tout simple, en faisant W-V pour voir si on obtient que des 0, mais donc ce serai avec la fonction any non ?

  4. #4
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Hum...Oui je e suis peut-être embrouillée, mais c'était une bonne piste non ? (les conditions négatives, j'aime pas )

    Donc oui il faut revoir ta condition.
    Si tu me la dit en français je dois y arriver...
    Moi j'avais compris tant que tous les éléments de V sont différents des éléments de W, c'est pas ça ?

    Ce serait alors :...ou pas...
    ça m'embrouille tous ces NOT.

    V-W ça peut être une solution aussi

  5. #5
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    J'avoue que je m'embrouille aussi

    Alors en bon français sa donne :On a le vecteur V=[1,1,1,0,2,2,2]
    Tant que le vecteur V n'est pas sous la forme : 2 2 2 0 1 1 1 alors on continue a faire des déplacements.
    Sachant que le vecteur W=[2,2,2,0,1,1,1] je pensais que je pouvais faire un while(V~=W) mais selon se que j'ai compris de t'es explication, il ne garderait que la derniere valeur que j'ai déplacé c'est sa ?

    J'ai essayé avec while ãll(V~=W) et sa ne change rien par contre, je vais tester avec le any. Si mon explication a éclairé ta lanterne n'hésite pas ! ^^

    EDIT : C'est bon, tout marche parfaitement avec la fonction any.

    je te mets le code si tu veux voir sa :



    Merci beaucoup pour l'aide en tout cas, je continue mon programme, et je reviendrai en cas de nouveau pépin !

  6. #6
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Bon nouveau problème, je ne vois aucune fonction pour m'aider la

    Voila j'aimerai sortir de ma boucle while quand plus aucun déplacement n'est possible et que c'est perdu.Cela sort déjà quand c'est gagné mais pas de solution pour quand c'est perdu, par exemple pour : [1 2 2 2 0 1 1] ou [0 1 1 1 2 2 2], j'ai pensé a les repertorié et j'ai pensé a cette solution :
    while any(V-W)~=0 | (V(1)~=0 & (V(2)~=1 & V(3)~=1)) pour le [0 1 1 1 2 2 2] ainsi de suite pour chaque cas, mais bien sur sa ne marche pas


    Revoilà mon code (le problème se situe au ici) :



    Voila, merci de vos éventuel coup de main (pas de coup de pied s'il vous plait!)

  7. #7
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    As-tu une liste complète des vecteurs pour le cas perdu ?
    Car dans ce cas tu crées aussi les vecteurs perdus et tu fais le même test de comparaison qu'entre V et W.
    Et pour le OU logique il est plus rapide de mettre || que | (dans le 1er cas MATLAB s'arrête des qu'il rencontre une condition vraie, dans le 2ème cas MATLAB évalue toutes les conditions et fait le OU entre elles)

  8. #8
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Ah ben oui, tout simplement ! Il suffit juste de ne pas en oublier ^^
    Merci beaucoup ! Après sa normalement c'est fini
    Merci encore pour ton aide, toujours très rapide !

  9. #9
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Bon petit probleme encore en faite, sa ne marche pas.Sa ne sors toujours pas de la boucle malgré le :



    J'ai du mal a saisir pourquoi sa ne marche pas pour le cas ou on arrive a V =[1,1,2,2,2,0,1]...

    EDIT : C'est bon probleme résolu et programme fini, enfiiiiiiiin !

    Merci pour l'aide encore

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

Discussions similaires

  1. Probleme de boucle a s arracher les cheuveux
    Par calimero642 dans le forum Langage
    Réponses: 6
    Dernier message: 16/03/2006, 14h44
  2. Probleme de boucle avec des processus sous UNIX
    Par sebastieng dans le forum POSIX
    Réponses: 6
    Dernier message: 15/10/2005, 18h57
  3. [Language]Problème de boucle
    Par marc_dd dans le forum Langage
    Réponses: 11
    Dernier message: 06/10/2005, 14h24
  4. Problem de boucle.....
    Par skad dans le forum C++
    Réponses: 6
    Dernier message: 29/09/2005, 16h28
  5. [C#] Probleme de boucle for et random
    Par Freeman166 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 09/01/2005, 14h34

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