Problème d'exécution de boucle
Fermé
deadangel04
Messages postés
112
Date d'inscription
vendredi 28 mars 2014
Statut
Membre
Dernière intervention
2 août 2015
-
23 mai 2015 à 11:29
pp25770 Messages postés 15 Date d'inscription samedi 8 septembre 2012 Statut Membre Dernière intervention 11 juin 2015 - 28 mai 2015 à 22:26
pp25770 Messages postés 15 Date d'inscription samedi 8 septembre 2012 Statut Membre Dernière intervention 11 juin 2015 - 28 mai 2015 à 22:26
A voir également:
- Problème d'exécution de boucle
- Processus d'execution client serveur - Forum Windows 10
- Erreur d'exécution 1004 ✓ - Forum Excel
- Erreur d'éxecution 1004 - Forum Programmation
- Erreur d'execution '1004' ✓ - Forum VB / VBA
1 réponse
pp25770
Messages postés
15
Date d'inscription
samedi 8 septembre 2012
Statut
Membre
Dernière intervention
11 juin 2015
1
28 mai 2015 à 22:26
28 mai 2015 à 22:26
Bonsoir,
Je suppose que c'est un Arduino qui est connecté.
Pour rappel, la fonction setup() est appelée une et une seule fois lorsque le programme se lance.
Ensuite, et tu ne le vois pas dans ton programme final compilé, il y a en quelque sorte une seconde boucle qui va appeler TOUT le temps la fonction loop().
Donc à priori, b2 et b4 permettent de fixer un nombre de joueur et cela devrait fonctionner.
Ensuite si tu appuies sur b1, tu entres dans la fonction jeu() qui va afficher le texte "Type de jeu ?" et attendre 2 secondes.
La condition while(b1 == LOW || b2 == LOW || b3 == LOW || b4 == LOW) est vrai car b2 est LOW. Mais à ce moment b1 est toujours sur HIGH même si tu as relâché b1. Donc tu vas aller dans bataille() et y rester tout le temps puisque tu ré-utilises les mêmes valeurs des boutons.
Tu as tout simplement oublié de relire l'état des 4 boutons dans jeu() mais également dans bataille().
Il faudrait remplacer les while() par
do
{
b1 = digitalRead(5);
b2 = digitalRead(4);
b3 = digitalRead(3);
b4 = digitalRead(2);
// toutes les instructions lcd....
}while (b1 == LOW && b2 == LOW && b3 == LOW && b4 == LOW);
//et ensuite
if (b1 == HIGH) bataille();
if (b2 == HIGH) poker();
...
Et cette boucle te servira dans tes autres fonctions de jeu. En faire une fonction.
Bon développement et bon jeu.
Je suppose que c'est un Arduino qui est connecté.
Pour rappel, la fonction setup() est appelée une et une seule fois lorsque le programme se lance.
Ensuite, et tu ne le vois pas dans ton programme final compilé, il y a en quelque sorte une seconde boucle qui va appeler TOUT le temps la fonction loop().
Donc à priori, b2 et b4 permettent de fixer un nombre de joueur et cela devrait fonctionner.
Ensuite si tu appuies sur b1, tu entres dans la fonction jeu() qui va afficher le texte "Type de jeu ?" et attendre 2 secondes.
La condition while(b1 == LOW || b2 == LOW || b3 == LOW || b4 == LOW) est vrai car b2 est LOW. Mais à ce moment b1 est toujours sur HIGH même si tu as relâché b1. Donc tu vas aller dans bataille() et y rester tout le temps puisque tu ré-utilises les mêmes valeurs des boutons.
Tu as tout simplement oublié de relire l'état des 4 boutons dans jeu() mais également dans bataille().
Il faudrait remplacer les while() par
do
{
b1 = digitalRead(5);
b2 = digitalRead(4);
b3 = digitalRead(3);
b4 = digitalRead(2);
// toutes les instructions lcd....
}while (b1 == LOW && b2 == LOW && b3 == LOW && b4 == LOW);
//et ensuite
if (b1 == HIGH) bataille();
if (b2 == HIGH) poker();
...
Et cette boucle te servira dans tes autres fonctions de jeu. En faire une fonction.
Bon développement et bon jeu.