Détecter une suite

grosjoueur Messages postés 2 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 31 janvier 2009 - 31 janv. 2009 à 15:13
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 - 1 févr. 2009 à 14:58
Bonjour,

Je suis un train de développer une application de jeu et dans le cadre de ce développement j'ai besoin de détecter une suite de signes.

Pour faire simple j'aimerais créer une boucle sans limite permettant de faire une même action jusqu'à que l'application arrive à détecter une suite d'un même signe 03 fois de suite.

Le système permettant de détecter le signe à déjà été programmé mais ce que je n'arrive pas c'est à détecter si il y à une suite.

pour le moment je fais quelque chose comme ça :

boucle de X à X

détection du signe

fin de boucle

Pour information le signe n'est pas présent dans le programme même ; je vais le chercher dans une autre application donc c'est pas possible de gérer directement le signe avec la source.

La seule chose que l'on peut voir dans le code source directement c'est par exemple :

Rond
Rond
Carré
Triangle
Carré
Carré
Carré

Ces résultats représentent la recherche de signes 07 fois sur l'application cible.

Par exemple dans cette exemple la boucle peut être arrêtée car il y à une suite de 03 signes : carré.

J'espère avoir été clair,

Si quelqu'un peut m'aider,...

G.J

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
31 janv. 2009 à 16:15
Salut
Lecture perturbée par tes termes assez troublant :
Sur un site dédié à la programmation, tes termes désignent bien d'autres choses. Les termes exacts seraient :
   Suite = Répétition
   Signe = Symboles, Objets

Bref, tu as les infos de 7 synboles et tu veux détecter quand 3 symboles identiques se suivent (version courte de ton explication)
Le fait que tu veuilles faire ce test par répétition n'est pas difficile et on l'enlèvera de l'équation : Toujours résoudre le coeur du problème d'abord.

En supposant que tes 7 symboles soient rangés dans un tableau :
   Dim aSymboles(1 To 7) As String
Que tu définisses une variable qui soit témoin de la recherche :
   Dim iRépétitions As Integer
Il te suffit de faire une simple boucle :
   Dim r As Integer
   iRépétitions = 0
   For r = 2 To 7
      If aSymboles(r) = aSymboles(r - 1) Then
         iRépétitions = iRépétitions + 1
      Else
         iRépétitions = 0
      End If
      If iRépétitions = 3 Then Exit For
   Next r
   If iRépétitions = 3 Then MsgBox "Eureka !"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
grosjoueur Messages postés 2 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 31 janvier 2009
31 janv. 2009 à 16:21
Merci pour cette réponse,

Par contre il faut savoir que les symboles ne sont pas dans un tableau c'est récupéré en temps réel.

J'imagine que ça change tout non ?

G.J
0
Profil bloqué
31 janv. 2009 à 17:04
Salut

tu crées un tableau de 3 éléments vides au début
1° récupération : élément(1) = "Rond"    ' on ne fait rien
2° récupération : élément(2) = "Rond"    ' on ne fait rien
3° récupération : élément(3) = "Carré"    ' on teste si les 3 éléments sont identiques

ensuite 2 solutions selon ce que tu veux faire si tu as 3 éléments identiques
1° solution : on vide les 3 éléments et on récupère un nouvel élément comme 1° récupération, un second comme 2° récupération et un troisième comme 3° récupération. A partir de la on teste

2° solution
élément(1) devient élément(2) et élément(2) devient élément(3)
On récupère de nouveau un 3° élémént dans élément(3) et on test si 3 éléments identiques

Explication de la seconde solution

1 :Rond
2 :Rond
3 :Carré
4 :Triangle
5 :Carré
6 :Carré
7 :Carré
8 :Carré
9 :Rond

on peut avoir 2 suites de 3 éléments identiques : 5-6-7  et 6 -7- 8

C'est à toi de voir si après le détection d'un suite 5-6-7 tu continues à 8 ( dans ce cas-la tu vides les 3 éléments avant et tu récupères 3 éléments avent le nouveau test) ou tu continues à 8 (6 devient l'élément1, 7 devient l'élément2 et 8 devient l'élément3 et dans ce cas on ne récupères qu'un élément et on fait le test)

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
31 janv. 2009 à 18:58
Re
Tout dépend où tu en es de ta programmation.
Le but du forum est de répondre à des questions précises, une question à chaque fois pour simplifier les réponses.
A toi de découper ce que tu as à faire et de résoudre chaque problème individuellement.
"c'est récupéré en temps réel." : dans quoi ? comment ? quelle forme ?
On n'a aucune indication !
En faisant le découpage, tu trouveras aussi les mots clés qui représentent ton problème --> Commence par faire une recherche parmi les codes du site, il y a de fortes chance que tu trouves des débuts d'explications.
Revient nous voir quand tu auras un problème précis.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
1 févr. 2009 à 14:58
Bonjour tout le monde


Je ne suis pas sûr qu'on ait besoin de passer par un tableau. Le but du jeu est de détecter si on reçoit un même signe trois fois de suite. Ce que l'on a besoin de savoir, c'est si le signe détecté est identique au précédent, et, le cas échéant, d'incrémenter un compteur, ou de le remettre à zéro dans le cas contraire.

Ce code ne fait-il pas l'affaire ?

Dim signe As String
Dim exSigne As String
Dim suite As Integer
Do
   signe = <detection signe>
   If signe = exSigne Then
      suite = suite + 1
   Else
      exSigne = signe
      suite = 1
   End If
Loop Until suite = 3

Qu'en penses-tu ?

Amicalement
0
Rejoignez-nous