Problème de pointage d'une case d'un tableau vers une case d'un autre tableau

250386 Messages postés 14 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 9 juin 2009 - 27 janv. 2006 à 18:31
250386 Messages postés 14 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 9 juin 2009 - 27 janv. 2006 à 22:33
Bonjour,

voila, je suis sous VB6 et j'ai un petit probleme.

J'ai un tableau : joug(10 to 109) as ???????
et 7 autres de la forme : adv(1 to 5) as boolean
adv2(1 to 4) as boolean
etc...

Je voudrait savoir comment je peux faire pointer joug(35) sur adv(1) par exemple.
J'ai essayé de mettre joug en string et de faire : joug(35)="adv(1)", mais le problème est que je ne peux plus récupérer la valeur booleénne de adv(1) après. Je pourrais faire des tests pour savoir
si joug(35)="adv(1)" alors adv(1)=true, mais ces tests seraient vraiment trop longs....

Si vous avez une idée, merci!!

250386
A voir également:

5 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
27 janv. 2006 à 19:47
salut,

il faudrait que tu expliques le but.

là, juste mettre le nom d'une variable en string dans une tableau, çà
ne sert pas à grand chose, puisque VB ne gère pas une string par
rapport à son équivalent nommé... (c'est pas du PHP ;))
0
250386 Messages postés 14 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 9 juin 2009
27 janv. 2006 à 20:06
Ben en faite, je fait une sorte de "bataille navale".
Les petits tableaux représente les bateaux. je me sert d'un tableau pour savoir si la bateau a été coulé (tableau plein) : booleen (touché ou pas)
Lorsque je vais jouer, si je touche un bateau, je veux que la partie du tableau correspondante a la partie du bateau touché passe a True.
Ma grille est faite avec des picturebox indexées, donc, lors que je place mes bateau, le seul moyen de savoir quelle partie de quel bateau est sur quelle case est de déclarer un tableau.
Et donc, le tableau ayant les mem indices que les picturebox, il me faut un moyen de faire un lien entre ce tableau et les tableaux correspondants aux bateaux.
Ci ce n'est pas encore assez claire, dite-le, j'essayerais d'expliqué autrement.
merci
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
27 janv. 2006 à 21:07
non, c'est compris, mais je ne vois pas l'intérêt des petits tableaux (les bateaux).



puisqu'une fois une case touchée, vide ou non, tu dois regarder si elle
contient un bateau, si oui lequel, et si tout ce bateau est touché,
pourquoi ne pas tout stoquer dans cette même case...



voici le principe :




'une Form, 5 boutons par défaut

Option Explicit

'

'

Private Type tBateau

tNomBateau As String

tTailleBateau As Integer

tTouche As Boolean

End Type

'

Dim aCases(10 To 109) As tBateau

'

'

Private Sub Form_Load()

' init le tableau

Dim i As Integer

For i = 10 To 109

aCases(i).tNomBateau = ""

aCases(i).tTailleBateau = 0

aCases(i).tTouche = False

Next i



' ta routine d'attribution aléatoire sans (surement utilisateur vs PC..)



' disons Porte-Avion (5) sur la première ligne horizontale

For i = 10 To 14

aCases(i).tNomBateau = "Porte-Avion"

aCases(i).tTailleBateau = 5

Next i



' et un de 3 vertical

aCases(20).tNomBateau = "Navire"

aCases(20).tTailleBateau = 3

aCases(30).tNomBateau = "Navire"

aCases(30).tTailleBateau = 3

aCases(40).tNomBateau = "Navire"

aCases(40).tTailleBateau = 3



' les boutons pour le test

Command1.Caption = "Petit"

Command2.Caption = "Petit"

Command3.Caption = "Grand"

Command4.Caption = "Rien"

Command5.Caption = "Petit"



End Sub

'

'

'

Private Sub Command1_Click()

' on touche le petit bateau

Call VerifImpact(20)

End Sub

Private Sub Command2_Click()

' on touche le petit bateau

Call VerifImpact(30)

End Sub

Private Sub Command3_Click()

' on touche le grand

Call VerifImpact(14)

End Sub

Private Sub Command4_Click()

' on touche rien

Call VerifImpact(60)

End Sub

Private Sub Command5_Click()

' on touche (coule?) le petit

Call VerifImpact(40)

End Sub

'

'

'

Private Sub VerifImpact(ByVal iCase As Integer)

' on vérifie qu'il y a un bateau (donc taille>0 ou nom <>"", l'un des 2)

' on va même gérer une case déjà jouée



If aCases(iCase).tTailleBateau = 0 Then

' rien, on marque jouée

MsgBox "Plouff", vbInformation

aCases(iCase).tTailleBateau = -1



ElseIf aCases(iCase).tTailleBateau = -1 Then

' jouée mais vide

MsgBox "Case déjà jouée !!", vbInformation



Else

' là il y a un bateau. touché?

If aCases(iCase).tTouche Then

MsgBox "Case déjà jouée!!", vbInformation

Else

' touche bateau!!!

MsgBox aCases(iCase).tNomBateau & " touché !!!"



' on enregistre le touché (et tu gères pour la coucleur de la Pic correspondante)

aCases(iCase).tTouche = True



' et on vérifie si il reste des cases libres au bateau

If Not VerifBateauOK(aCases(iCase).tNomBateau) Then

MsgBox aCases(iCase).tNomBateau & " coulé !!", vbCritical

End If

End If

End If

End Sub

'

'

'

Private Function VerifBateauOK(ByVal sName As String) As Boolean

Dim i As Integer

Dim bCoule As Boolean

bCoule = True



For i = 10 To 109

If (aCases(i).tNomBateau = sName) And Not aCases(i).tTouche) Then

bCoule = False

Exit For

End If

Next i



VerifBateauOK = Not bCoule

End Function





<small> Coloration
syntaxique automatique [AFCK]</small>



qu'est-ce que tu en dis?



++

PCPT [AFCK]
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
27 janv. 2006 à 21:12
If (aCases(i).tNomBateau = sName) And (Not aCases(i).tTouche) Then
0

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

Posez votre question
250386 Messages postés 14 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 9 juin 2009
27 janv. 2006 à 22:33
Il est bien pensé comme code. C'est vrai qu'il est intéresant, mais le truc que je lui reproche, c'est que contrairement a mon idée (meme si elle ne marche pas lol), c'est que pour la vérification des bateaux, tu as besoin de te repalucher tout le tableau.
C'est domage qu'il n'y ait pas moyen de pointer vers une adresse commen en C, ça serait bien pratique.
Ben j'y réfléchiré mieux demain.

Merci a toi PCPT pour ton aide
0
Rejoignez-nous