none
Variable non constante dans une énumération RRS feed

  • Question

  • Bonjour, j'aimerai savoir si il possible de mettre variable non constante dans une énumération, j'ai bien essayé cependant le compilateur me demande une variable constante, or cette variable ne peut être constante. Peut-on contourner ce problème?


    Cordialement, maxkun ;)

    mercredi 4 juillet 2012 08:48

Réponses

  • Le souci c'est que dans le code toutes les variables varient, pour contourner le problème j'ai utilisé une variable tampon que j'ai déclaré en tant que shared, et ça l'air de passé.

    Cordialement, maxkun ;)

    • Marqué comme réponse maxkun mercredi 4 juillet 2012 14:21
    mercredi 4 juillet 2012 09:46

Toutes les réponses

  • Bonjour,

    Ce qui ressemblerait le plus est une variable ReadOnly : http://msdn.microsoft.com/fr-fr/library/z2b2c2ka.aspx

    Mais je ne pense pas que cela soit possible dans une énumération. Normalement toutes les valeurs des énumérations sont constantes (car la valeur sous-jacente est inséré directement dans le code à la compilation). Donc il faudrait peut-être utiliser autre chose qu'une énumération (mais je ne sais pas pourquoi cette valeur n'est pas constante alors qu'elle serait utilisée dans une énumération ?)


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    mercredi 4 juillet 2012 09:04
    Modérateur
  • Je vais regarder du coté des structures, cela peut éventuellement passé.

    J'ai essayé avec une structure mais j'ai l'erreur suivante : Une référence à un membre non partagé requiert une référence d'objet.

    Voici mon code :

    Public Class personnage
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        'stats joueur
        Public attaque_physique As Integer = 0
        Public dex_joueur As Integer
        Public str_joueur As Integer
        Public vit_joueur As Integer
        Public int_joueur As Integer
        Public skill_guerrier As Boolean = False
    
        Sub New(ByVal type As String)
            'attribution des stats pour guerrier
            If type = "guerrier" Then
                vit_joueur = 7
                int_joueur = 1
                str_joueur = 7
                dex_joueur = 2
                skill_guerrier = True
            End If
       
            'calcul de l'attaque physique
            attaque_physique = 1 * str_joueur
        End Sub
    
        Public Structure skills_guerrier
            'skill guerrier 1
            Shared consommation_skill1_guerrier As Integer = 20
            Shared attaque_skill1_guerrier As Integer = attaque_physique
           
        End Structure
    
        
    End Class
    
    L'erreur est à la ligne : 
    Shared attaque_skill1_guerrier As Integer = attaque_physique


    Cordialement, maxkun ;)


    • Modifié maxkun mercredi 4 juillet 2012 09:17
    mercredi 4 juillet 2012 09:07
  • Attaque_physique est une propriété d'un objet et on l'affecte à une autre valeur dans un contexte ou on n'a pas d'objet courant.

    Pas sûr de bien comprendre ce que l'on cherche à faire. Si on crée une classe Guerrier qui hérite de personnage on pourrait peut-être avoir une propriété Attaque_physique calculée en fonction de "str_joueur" (et qui demain pourrait ne pas être la même pour tous les guerriers par exemple si le personnage est blessé ou acquiert de l'expérience ?)

    Cela doit vraiment être une valeur globale à tous les guerriers qui est calculée depuis une autre valeur qui n'est pas constante  ?

    Sinon si str_joueur pour un guerrier est une valeur constante, on devrait pouvoir calculer attaque_physique (sauf erreur de ma part on peut déclarer une constante dont la valeur est un calcul fait à partir d'autres valeurs constantes, le compilateur pouvant alors faire ce calcul).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    mercredi 4 juillet 2012 09:36
    Modérateur
  • Le souci c'est que dans le code toutes les variables varient, pour contourner le problème j'ai utilisé une variable tampon que j'ai déclaré en tant que shared, et ça l'air de passé.

    Cordialement, maxkun ;)

    • Marqué comme réponse maxkun mercredi 4 juillet 2012 14:21
    mercredi 4 juillet 2012 09:46
  • Si la solution actuelle marche c'est le principal, mais il y a sans doute un petit problème d'architecture. Apparemment on calcule une valeur globale à tous les guerriers à partir d'une valeur spécifique à un guerrier en particulier ce qui semble curieux (ou il faudrait peut-être introduire un valeur globale qui serait la valeur par défaut de la variable pour un nouveau guerrier ?)...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    mercredi 4 juillet 2012 11:36
    Modérateur
  • Ouais la solution marche, après question architecture je reviendrai dessus.

    Cordialement, maxkun ;)

    mercredi 4 juillet 2012 14:21