Virtual FMAN forum
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Virtual FMAN forum

Virtual FMAN forum
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le deal à ne pas rater :
Display Pokémon japonaise Terastal Festival Ex : où la ...
Voir le deal

 

 Les classes

Aller en bas 
3 participants
AuteurMessage
countag




Nombre de messages : 57
Date d'inscription : 10/02/2006

Les classes Empty
MessageSujet: Les classes   Les classes EmptyDim 19 Fév à 12:38

Bonjour,

voila j ai une petit question, pourquoi rentre des membres d une classe prive, pour creer une methode d acces qui va lire et changer ces valeur ?
autant les rendre public direct non ? je comprend pas trop la :/
Revenir en haut Aller en bas
le_duche

le_duche


Nombre de messages : 60
Age : 39
Localisation : Bruxelles
Date d'inscription : 07/12/2005

Les classes Empty
MessageSujet: Re: Les classes   Les classes EmptyLun 20 Fév à 4:13

Comme ca l'utilisateur de ta classe ne peut pas modifier certaine valeurs autrement que par les fonctions que tu lui permet...

Immagine que ton four à micro-onde n'aie pas tous ce boutons devant sa face, mais que tu doivents chaque fois connecter les fils entre eux... D'abord, c'est plus compliqué, et puis ca augmente les risques que ca ne marche plus... affraid
Revenir en haut Aller en bas
FVIRTMAN
Admin
FVIRTMAN


Nombre de messages : 78
Date d'inscription : 11/11/2005

Les classes Empty
MessageSujet: Re: Les classes   Les classes EmptyLun 20 Fév à 14:41

Un bon exemple le micro ondes Smile

Oui, c'est exactement ça : l'utilisateur de la classe n'a d'ailleurs meme pas a savoir ce qu'il y a en "private"
Revenir en haut Aller en bas
http://perso.numericable.fr/fvirtman
countag




Nombre de messages : 57
Date d'inscription : 10/02/2006

Les classes Empty
MessageSujet: Re: Les classes   Les classes EmptyMar 21 Fév à 12:40

J ai decider de faire des classes sur mon editeur pour mieux comprendre, je voudrais que vous critiquiez ce qui ne va pas et expliquez pourquoi si possible pour que je comprenne :

MAIN.H
Code:
#ifndef MAP_H
# define MAP_H


#include <sdl/sdl.h>

class Cchipset
{
public:
    void DefX(int x); 
    void DefY(int y);
    int LitX();
    int LitY();
private:     
    int pos_x;
    int pos_y;     
};

class Cmap
{
public:
    SDL_Surface *s_chipset;
    Cchipset *c_chipset;
    void Map(int largeur, int longueur, char *chipset);
    void Map_Affiche(int Xoffset, int Yoffset);
    void DefX(int x); 
    void DefY(int y);
    void DefLongueur(int DefLongueur); 
    void DefLargeur(int DefLargeur);
    void DefOffsetX(int DefOffsetX); 
    void DefOffsetY(int DefOffsetY);   
    int LitX();
    int LitY(); 
    int LitLongueur();
    int LitLargeur();
    int LitOffsetX();
    int LitOffsetY();     
private:     
    unsigned int longueur;       
    unsigned int largeur;               
    unsigned int offsetX;     
    unsigned int offsetY; 
    unsigned int pos_x;
    unsigned int pos_y;         
};

SDL_Rect Rect(int x,int y,int w,int h);

#endif

MAP.CPP
Code:
#include <iostream>
#include <stdlib.h>
#include "map.h"
#define TILE_TAILLE 32

using namespace std;

void Cchipset::DefX(int x){ pos_x=x; }
void Cchipset::DefY(int y){ pos_y=y; }
int Cchipset::LitX(){ return pos_x; }
int Cchipset::LitY(){ return pos_y; }


void Cmap::DefX(int x){ pos_x=x; }
void Cmap::DefY(int y){ pos_y=y; }
void Cmap::DefLongueur(int DefLongueur){ longueur=DefLongueur; }
void Cmap::DefLargeur(int DefLargeur){ largeur=DefLargeur; }
void Cmap::DefOffsetX(int DefOffsetX){ offsetX=DefOffsetX; }
void Cmap::DefOffsetY(int DefOffsetY){ offsetY=DefOffsetY; }
int Cmap::LitX(){ return pos_x; }
   
int Cmap::LitY(){ return pos_y; }
int Cmap::LitLongueur(){ return longueur; }
int Cmap::LitLargeur(){ return largeur; }
int Cmap::LitOffsetX(){ return offsetX; }
int Cmap::LitOffsetY(){ return offsetY; }
   
void Cmap::Map(int largeur, int longueur, char *chipset)
{
    int i,j,x,y;
   
    s_chipset=SDL_LoadBMP(chipset); 
    DefLongueur(longueur);
    DefLargeur(largeur);

    x=y=0;
     
//Pour mettre les chipsets dans un tableau.

    for(i=0; i<s_chipset->h/TILE_TAILLE; i++){
        c_chipset[i].DefY(y);   
        for(j=0; j<s_chipset->w/TILE_TAILLE; j++){ 
            c_chipset[i].DefX(x);
            x += TILE_TAILLE;                       
        }
        y += TILE_TAILLE;
        x = 0;
    }                                             
}

void Cmap::Map_Affiche(int Xoffset, int Yoffset)
{
    SDL_Rect src=Rect(0,0,32,32);
    SDL_Rect dest=Rect(0,0,32,32);
   
    int y,x;
    int x1,y1;

    DefOffsetX(Xoffset);
    DefOffsetY(Yoffset);
    x1 = LitOffsetX()+160;
    y1 = LitOffsetY();
    for(y=0; y<LitLargeur(); y++){
        for(x=0; x<LitLongueur(); x++){ 
            dest=Rect(x*TILE_TAILLE+x1 , y*TILE_TAILLE+y1 , TILE_TAILLE, TILE_TAILLE);                 
            SDL_BlitSurface(s_chipset,&src,SDL_GetVideoSurface(),&dest);
        }
    }
    src=Rect(0,0,32,32);
    dest=Rect(0,0,32,32);
    for(y=0; y<(s_chipset->h/TILE_TAILLE); y++){
        for(x=0; x<(s_chipset->w/TILE_TAILLE); x++){ 
            src=Rect(x*TILE_TAILLE , y*TILE_TAILLE, TILE_TAILLE, TILE_TAILLE);
            dest=Rect(x*TILE_TAILLE , y*TILE_TAILLE, TILE_TAILLE, TILE_TAILLE);
            SDL_BlitSurface(s_chipset,&src,SDL_GetVideoSurface(),&dest);
        }
    }       
}




voila, on m as dit ca :

Citation :
Par contre, tu devrais revoir certaines choses dans ton code. Le principe des classes, des fonctions membres, etc.

je suis d accord mais le probleme il explique pas, et les explications sur le web font 5pages pour rien dire et celle de 1pages ne sont pas vraiment explicite.

si quelqu un d aimable voudrai bien m aider merci Smile
Revenir en haut Aller en bas
countag




Nombre de messages : 57
Date d'inscription : 10/02/2006

Les classes Empty
MessageSujet: Re: Les classes   Les classes EmptyMer 22 Fév à 11:26

TUER MOI MDR, allez je refais mon code, personne avait remarque que je croyais qu on pouvais pas acceder au membre prive meme dans la classe, quel boulet je fais, ca va reduire le code a fond, ca y est je commence a comprendre Smile
Revenir en haut Aller en bas
countag




Nombre de messages : 57
Date d'inscription : 10/02/2006

Les classes Empty
MessageSujet: Re: Les classes   Les classes EmptyMer 22 Fév à 12:46

MAP.H :

Code:
#ifndef MAP_H
# define MAP_H


#include <sdl/sdl.h>

class Cmap
{
public:
    Cmap();
    ~Cmap();     
    SDL_Surface *s_chipset;
    void Map(int,int,char *chipset);
    void Map_Affiche(int,int);
     
private:     
    int LoMap;       
    int LaMap;               
    int MoffsetX;     
    int MoffsetY; 
    int Mpos_x;
    int Mpos_y;
    int Cpos_x[50];
    int Cpos_y[50];         
};

SDL_Rect Rect(int x,int y,int w,int h);

#endif

MAP.CPP

Code:
#include <iostream>
#include <stdlib.h>
#include "map.h"
#define TILE_TAILLE 32

using namespace std;
 
Cmap::Cmap(){       
    LoMap=LaMap=MoffsetX=MoffsetY=Mpos_x=Mpos_y=0;
}
   
void Cmap::Map(int Largeur, int Longueur, char *chipset)
{
    int i,j,x,y;
   
    s_chipset=SDL_LoadBMP(chipset); 
    LoMap=Longueur;
    LaMap=Largeur;
    x=y=0;
     
//Pour mettre les chipsets dans un tableau.

    for(i=0; i<s_chipset->h/TILE_TAILLE; i++){ 
        Cpos_y[i] = y;   
        for(j=0; j<s_chipset->w/TILE_TAILLE; j++){     
            Cpos_x[j] = x;
            x += TILE_TAILLE;                     
        }
        y += TILE_TAILLE;
        x = 0;
    }                                             
}

void Cmap::Map_Affiche(int Xoffset, int Yoffset)
{
    SDL_Rect src=Rect(Cpos_x[0],Cpos_y[0],32,32);
    SDL_Rect dest=Rect(0,0,32,32);
   
    int y,x,x1,y1=0;
    MoffsetX = Xoffset;
    MoffsetY = Yoffset;
    x1 = MoffsetX+160;
    y1 = MoffsetY;
   
    for(y=0; y<LaMap; y++){
        for(x=0; x<LoMap; x++){ 
            dest=Rect(x*TILE_TAILLE+x1 , y*TILE_TAILLE+y1 , TILE_TAILLE, TILE_TAILLE);                 
            SDL_BlitSurface(s_chipset,&src,SDL_GetVideoSurface(),&dest);
        }
    }
   
  src=Rect(0,0,32,32);
  dest=Rect(0,0,32,32);
   
    for(y=0; y<(s_chipset->h/TILE_TAILLE); y++){
        for(x=0; x<(s_chipset->w/TILE_TAILLE); x++){ 
            src=Rect(x*TILE_TAILLE , y*TILE_TAILLE, TILE_TAILLE, TILE_TAILLE);
            dest=Rect(x*TILE_TAILLE , y*TILE_TAILLE, TILE_TAILLE, TILE_TAILLE);
            SDL_BlitSurface(s_chipset,&src,SDL_GetVideoSurface(),&dest);
        }
    }     
}

//Destructeur du chipset et de map
Cmap::~Cmap(){     
    SDL_FreeSurface(s_chipset);     
}



comment simplifiez Smile bon maintenant fo que je m occupe de la carte la partie la plus dur je pense avec les collisions
Revenir en haut Aller en bas
Contenu sponsorisé





Les classes Empty
MessageSujet: Re: Les classes   Les classes Empty

Revenir en haut Aller en bas
 
Les classes
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Virtual FMAN forum :: Tutorial C++ :: Debutants en C++-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser