1. #1
    Membre actif
    Avatar de exe2bin
    Inscrit en
    mars 2009
    Messages
    419
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 419
    Points : 246
    Points
    246
    Billets dans le blog
    3

    Par défaut récupérer les valeurs d'une énumération

    Bonjour à tous et toutes ,
    j'ai une énumération :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    enum Classe {
        case Guerrier(nomDuPerso: String,ptDeVie: Int)
        case Archer(nomDuPerso: String,ptDeVie: Int)
        case Mage(nomDuPerso: String,ptDeVie: Int)
    }
    Je veux m'en servir pour initialiser une classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    class Personnage {
        var nom = ""
        var classe: Classe
        var arme: Arme
        var vie = 0
     
        init(arme: Arme,classe: Classe) {
            self.classe = classe
            self.arme = arme
        }
        func setDegat(hitPoints: Int) { self.vie += hitPoints }
        func affiche() {
            print("nom : \(self.nom)")
            print("points de vie : \(self.vie)")
            print("dégâts de l'arme : \(self.arme.getDegats())")
        }
    }
    Maintenant lorsque je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var perso1 = Personnage(arme: Epee(), classe: .Guerrier(nomDuPerso: "Marcel",ptDeVie: 50))
    perso1.affiche()
    j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    nom : 
    points de vie : 0
    dégâts de l'arme : 20
    Comment faire pour initialiser les variables "nom" et "vie" avec la variable "classe" ??

  2. #2
    Membre à l'essai
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    juin 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : juin 2017
    Messages : 14
    Points : 19
    Points
    19

    Par défaut Une possibilité

    Bonsoir exe2Bin

    J'ai modifié un peu votre code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    import Foundation
     
    enum Classe {
     case Guerrier(nomDuPerso: String, ptDeVie: Int)
     case Archer(nomDuPerso: String, ptDeVie: Int)
     case Mage(nomDuPerso: String, ptDeVie: Int)
     
     var valeurs: (nom: String, pointDeVie: Int) {
     
      var nom_résultat: Texte = ""
      var pointDeVie_résultat: Int = 0
     
      switch self {
     
      case .Guerrier(let nom,let pointDeVie):
       nom_résultat = nom
       pointDeVie_résultat = pointDeVie
     
      case .Archer(let nom,let pointDeVie):
       nom_résultat = nom
       pointDeVie_résultat = pointDeVie
     
      case .Mage(let nom,let pointDeVie):
       nom_résultat = nom
       pointDeVie_résultat = pointDeVie
      }
      return (nom: nom_résultat, pointDeVie: pointDeVie_résultat)
     }
    }
     
    struct Arme {
     let dégats = 20
    }
     
    class Personnage {
     
     var nom = ""
     var vie = 0
     var arme: Arme
     var classe: Classe
     
     init(arme : Arme, classe: Classe) {
      self.arme = arme
      self.classe = classe
      self.nom = classe.valeurs.nom
      self.vie = classe.valeurs.pointDeVie
     }
     
     func setDegat(hitPoints: Int) { self.vie += hitPoints }
     
     func affiche() {
      print("nom : \(self.nom)")
      print("points de vie : \(self.vie)")
      print("dégâts de l'arme : \(self.arme.dégats)")
     }
     
    }
     
    // MARK: - Début du programme
     
    var perso1 = Personnage(arme: Arme(),classe: Classe.Guerrier(nomDuPerso: "Marcel", ptDeVie: 50))
    let perso2 = Personnage(arme: Arme(),classe: Classe.Mage(nomDuPerso: "Pauline", ptDeVie: 90))
    perso1.affiche()
    print()
    perso2.affiche()
     
    // MARK: - Fin du programme

    ==== Résultat ====
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /* ==== Résultat ====
     
    nom : Marcel
    points de vie : 50
    dégâts de l'arme : 20
     
    nom : Pauline
    points de vie : 90
    dégâts de l'arme : 20
     
    */
    Bonne lecture. En espérant avoir répondu à votre demande.

    Cordialement
    coderEnSwift

Discussions similaires

  1. Récupérer les valeurs dans une fonction
    Par matmay dans le forum MATLAB
    Réponses: 3
    Dernier message: 04/05/2007, 16h50
  2. Réponses: 11
    Dernier message: 26/04/2007, 10h40
  3. Récupérer les éléments d'une énumération
    Par The eye dans le forum VB.NET
    Réponses: 3
    Dernier message: 11/01/2007, 09h45
  4. Réponses: 4
    Dernier message: 13/11/2006, 17h49
  5. Récupérer les valeurs d'une collection de checkbox
    Par licorne dans le forum Formulaires
    Réponses: 4
    Dernier message: 27/10/2006, 12h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo