Pb de vraiables quis'effacent s'en qu'on leur demande leur avis
cs_FuSe
Messages postés18Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention10 juillet 2003
-
29 déc. 2002 à 23:48
cs_FuSe
Messages postés18Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention10 juillet 2003
-
30 déc. 2002 à 12:25
j'ai un problème, j'attribue des valeurs a une case de tableau et juste après je passe dans une fonction et ensuite la case qui a une valeur est effacée ( elle a une valeur 0). Vous sauriez c'est quoi le pb ?
/* et dès que ça sort de la fonction et bien le precedent 2,2 est égal à 0
/*fonction appellée :
Function maptouche(tirordx As Integer, tirordy As Integer)
Dim ind As Integer
tirordx = tirordx - navire(valcarte, 1, 1)
tirordy = tirordy - navire(valcarte, 1, 2)
bateau( valcarte ).Circle (((tirordx + 1 ) * 300) - 150, (( tirordy + 1 ) * 300) - 150), 150
End Function
ps: le *.circle est gentil mais ça n'affiche plus si on réduit la form, est ce que vous connaissez un autre moyen pour générer un graphisme qui ne s'efface pas pas mais qui se génére facilement ?
precedent(1, 2) est passé à la fonction par référence et sa valeur est modifiée dans la fonction par la ligne
tirordy = tirordy - navire(valcarte, 1, 2)
SupraDolph
Messages postés196Date d'inscriptionsamedi 12 janvier 2002StatutMembreDernière intervention 1 septembre 20081 30 déc. 2002 à 02:15
tout d'abord pour ton probleme de cercle, pour qu'il ne s'efface pas , met l'AutoRedraw de ta form sur true
ex : Me.AutoRedraw = True
aprés pour ce qui est de ta variable qui s"efface je ne peut pas t'aider, je ne sais pas comment elle est declarée ... Mais ca ne doit pas venir de ta fonction car tu ne l'utilise pas dedans
bonne chance pour ton prog (si je ne me trompe pas c un jeu de bataille navale )
cs_rene38
Messages postés1858Date d'inscriptionsamedi 29 juin 2002StatutMembreDernière intervention17 octobre 201311 30 déc. 2002 à 02:24
-------------------------------
Réponse au message :
-------------------------------
> precedent(2, 2) = precedent(1, 2)
> Call maptouche(precedent(1, 1) - 1, precedent(1, 2) )
>
> precedent(1, 2) est passé à la fonction par référence > et sa valeur est modifiée dans la fonction par la ligne
> tirordy = tirordy - navire(valcarte, 1, 2)
>
> Essaie ceci :
>
> Call maptouche(ByVal precedent(1, 1) - 1, ByVal precedent(1, 2))
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > j'ai un problème, j'attribue des valeurs a une case de tableau et juste après je passe dans une fonction et ensuite la case qui a une valeur est effacée ( elle a une valeur 0). Vous sauriez c'est quoi le pb ?
> >
> > /*précédent vaut bien entendu une valeur quelconque....
> > precedent(2, 1) = precedent(1, 1) - 1
> > precedent(2, 2) = precedent(1, 2)
> > Call maptouche(precedent(1, 1) - 1, precedent(1, 2))
> >
> > /* et dès que ça sort de la fonction et bien le precedent 2,2 est égal à 0
> >
> > /*fonction appellée :
> >
> > Function maptouche(tirordx As Integer, tirordy As Integer)
> > Dim ind As Integer
> > tirordx = tirordx - navire(valcarte, 1, 1)
> > tirordy = tirordy - navire(valcarte, 1, 2)
> > bateau( valcarte ).Circle (((tirordx + 1 ) * 300) - 150, (( tirordy + 1 ) * 300) - 150), 150
> > End Function
> >
> >
> >
> > ps: le *.circle est gentil mais ça n'affiche plus si on réduit la form, est ce que vous connaissez un autre moyen pour générer un graphisme qui ne s'efface pas pas mais qui se génére facilement ?
> >
> > Merci beaucoup !!
>
cs_rene38
Messages postés1858Date d'inscriptionsamedi 29 juin 2002StatutMembreDernière intervention17 octobre 201311 30 déc. 2002 à 02:31
"ca ne doit pas venir de ta fonction car tu ne l'utilise pas dedans" Eh bien SI !
precedent(2, 2) = precedent(1, 2)
et precedent(1, 2) est le second paramètre passé à la fonction. Dans cette fonction, il s'appelle tirordy.
tirordy est modifié dans la fonction par tirordy = tirordy - navire(valcarte, 1, 2)
et comme la valeur est passée par référence (option par défaut de VB), precedent(1, 2) a changé de valeur au retour de la fonction.
et comme precedent(2, 2) = precedent(1, 2), ....!
Vous n’avez pas trouvé la réponse que vous recherchez ?