CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C++] classe

myhideout
myhideout
Niveau 7
14 juin 2012 à 10:46:10

Salut,

Alors en fait, je code un genre de tamagochi en c++.
J'ai créé la classe bonhomme:

class bonhomme
{
public:
int faim, energie, divert; /* (1) */
string nom;
};

pour définir les différentes caractéristiques des bonhommes(exemple: niveau de faim).

Je voudrais crééer une classe action où je pourrai associer une action à un état, c'est à dire pouvoir faire ceci après la création de la classe 'action' :

manger.etat_associe = faim;

Donc ma question, comment est ce que je dois crééer la variable "etat_associe" dans ma classe action ? donc faire l'étape (1) (voir code plus haut) mais pour l'état associé :(

chris_27
chris_27
Niveau 10
14 juin 2012 à 19:14:28

Bonjour,

Je te propose la solution tableau :

1/ Au dessus de la classe bonhomme :
enum caracteristique { faim, energie, divers, nb_carac };

2/ Dans la classe bonhomme :
int faim, energie, divers; :d) int caracteristiques[nb_carac];

3/ Déclare manger comme étant de type caracteristique (ça empêchera de pouvoir lui donner des valeurs autres que faim/energie/divers/nb_carac/leurs pendants entiers (0 à 3 ici).
Bien sûr, si tu écris gus.caracteristiques[energie], la convertion de energie vers 1 sera automatique comme voulue.

Notes:
- j'ai mis nb_carac dans le enum par comodité (ça aide le jour où tu ajoutes une caractéristique, car il suffit juste de la mettre avant nb_carac). Tu peux aussi definir nb_carac en dehors, mais attention à bien mettre la bonne valeur. :-)))
- j'ai gardé des noms en minuscule dans le enum, mais je te suggère plutôt genre FAIM pour éviter les conflits dans les noms.

myhideout
myhideout
Niveau 7
14 juin 2012 à 21:50:07

Ouai voila c'est ce qu'il me fallait, par contre je comprends pas comment ça marche

J'ai créé la méthode manger toute simple pour tester :

void manger()
{
caracteristiques[faim] += 5;
}

ce "caracteristiques" c'est celui qui a été créé dans la classe? je vois pas comment le lien est fait avec le enum{...},en plus avec caracteristiques qui est un entier avec des [] à la fin :hap: j'ai jamais vu ça .

enum c'est comme les listes en python ?

Et aussi,

  1. Déclare manger comme étant de type caracteristique

pardon ???

tbop2
tbop2
Niveau 10
14 juin 2012 à 22:10:52

Un Enum c'est juste un int caste avec un peu plus de sens, ca permet de "meta-indexer" quelques elements dans ton code de maniere simple (mais pas toujours tres securisee cependant).

Savoir ce qu'est un Enum c'est le basique du basique en programmation si tu ne sais pas encore ca et que tu t'attaques deja aux classes mon petit doigt me dit que tu as peut-etre etait un peu trop vite sur certains points fondamentaux de ton apprentissage.
Et pas sur que tu aies compris ce qu'etait un tableau non plus...

chris_27
chris_27
Niveau 10
14 juin 2012 à 22:47:45

myhideout: ton manger doit prendre un bonhomme en argument. Il n'y a pas d'action sans acteur. :-)))

myhideout
myhideout
Niveau 7
15 juin 2012 à 11:20:11

J'avais fait le même programme en python avec des classes à la pelle :hap:
Je vais aller Read The Friendly Manual :hap:

chris_27
chris_27
Niveau 10
15 juin 2012 à 21:11:46

Juste pour qu'on soit bien clair, ce n'est pas python qui t'aidera à faire du C++, en aucun cas. :-)))

Par contre, une maîtrise de la base du C s'impose.

myhideout
myhideout
Niveau 7
16 juin 2012 à 13:23:13
  1. Juste pour qu'on soit bien clair, ce n'est pas python qui t'aidera à faire du C++, en aucun cas.

Ouai je m'en suis rendu compte quand je voyais que j'oubliais (entre autres) de mettre des types lors des déclarations de variables.

Sinon j'ai cherché enum dans mon cours de c++, et il arrivait seulement à la page 660 sur 667 je pouvais attendre avant de le découvrir .. :hap:

Livre du site du zéro spotted :hap:

chris_27
chris_27
Niveau 10
16 juin 2012 à 15:42:27

Les enum, c'est le genre de choses dont on peut parler des la deuxième séance de cours sur le C. :(

Au pire, ça devrait être abordé en même temps que le structures (vu que ça permet de faire la même chose : définir ses propres types) et donc bien avant de parler de classes.

laliloulila
laliloulila
Niveau 7
08 juillet 2012 à 12:42:04

Peut être que je me trompe mais tu met tes arguments en public ? Et l'encapsulation dans tout ça ? Préfère des accesseurs et met tes arguments en private

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment