Problème de pointage d'une case d'un tableau vers une case d'un autre tableau
250386
Messages postés14Date d'inscriptionmercredi 12 mai 2004StatutMembreDernière intervention 9 juin 2009
-
27 janv. 2006 à 18:31
250386
Messages postés14Date d'inscriptionmercredi 12 mai 2004StatutMembreDerniè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:
Problème de pointage d'une case d'un tableau vers une case d'un autre tableau
PCPT
Messages postés13278Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 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 ;))
250386
Messages postés14Date d'inscriptionmercredi 12 mai 2004StatutMembreDerniè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
PCPT
Messages postés13278Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 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
250386
Messages postés14Date d'inscriptionmercredi 12 mai 2004StatutMembreDerniè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.