begin process at 2012 05 29 01:31:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

[C++][Classes]


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[C++][Classes]

samedi 25 novembre 2006 à 17:16:13 | [C++][Classes]

psychospire

  Bonjour à tous, j'ai un léger problème pour mon projet d'informatique (bataille navale) que je n'arrive pas à résoudre. J'ai créé une classe "CBateau" dans laquelle je rentre les coordonnées de mes bateaux (coordonnées fonctions de la place du bateau sur la grille 10x10 (un élément pour le numéro de la ligne et un pour le numéro de la colonne)) dans des tableaux (Un tableau par bateau). 
  J'ai également une classe "CEnsemble" représentant la grille de la bataille navale (matrice 10x10). Le problème, c'est que j'aimerai à présent poser mes bateaux sur la grille (représentés par des 1 sur une grille de 0), et donc créer une méthode dans CEnsemble qui contiendrait des éléments de la classe "CBateaux".
  En gros, j'aimerais faire quelquechose de la sorte pour enregistrer la coordonnée d'une case du bateau sur la grille :

void CEnsemble : : AjouterBateau(CBateau & UnBateau)
{
mGrille[  UnBateau[0] ] [ UnBateau[1] ] = 1;
}
(UnBateau[0]  et  UnBateau[1] forment la position d'une case du bateau sur la grille)

mais le logiciel me dit que je ne peut pas attribuer de [ ] à UnBateau, qui est pourtant un tableau...

  Voila je sais que c'est un peu brouillon, mais si quelqu'un à compris à peu pres de quoi je voulais parler et aurais une solution à me proposer je suis preneur. Merci.

samedi 25 novembre 2006 à 17:38:29 | Re : [C++][Classes]

KICcodeur

Salut,
il est important de bien comprendre ce qu'est un tableau. Quand UnBateau représente pour toi un tableau c'est en réalité un pointeur. Je m'explique: UnBateau[0] correspond a un élément du tableau tandis que UnBateau correspond a l'adresse qu premier élément. Je te conseil donc d'essayer : AjouterBateau(CBateau * UnBateau). Si je ne m'abuse sa devrait tourner comme sa ;-)
FRA
samedi 25 novembre 2006 à 19:11:50 | Re : [C++][Classes]

yann_lo_san

Il te suffit d'ajouter un accesseur/mutateur a ta classe bateau

void CEnsemble : : AjouterBateau(CBateau & UnBateau)
{
   mGrille[  UnBateau.getLigne() ] [ UnBateau.getColonne() ] = 1;
}

samedi 25 novembre 2006 à 19:24:08 | Re : [C++][Classes]

yann_lo_san

Ou de surcharger l'operator []

const CBateau::CBateau& operator [] (int indice) const
{
   if(indice == 0) return m_ligne;
   if(indice == 1) return m_colonne;
   throw new IndiceException("indice hors de portée");
}

samedi 25 novembre 2006 à 23:04:31 | Re : [C++][Classes]

psychospire

Salut, merci pour vos réponses.

KICcodeur, j'ai essayé en mettant * com tu le dit mais ca ne fonctionne pas, il me marque toujours : "error C2676: binary '[' : 'class CBateau' does not define this operator or a conversion to a type acceptable to the predefined operator".

Yann, pourrais tu me dire ce que UnBateau.getLigne() doit renvoyer exactement? De plus, je ne l'ai pas précisé dans mon premier post pour une question de clarté mais j'ai défini le tableau de mon bateau comme une matrice [N][2], c'est-à-dire que je doit entrer un numéro de ligne et un numéro de colonne pour afficher un élément du tableau. Ce que je veux se rapproche plus de ca :
mGrille[  UnBateau[0][0] ] [ UnBateau[0][1] ] = 1; 
 Est-ce la meme méthode que celle que tu as décrite?

Enfin, je ne comprend pas tres bien ce que tu veux dire par "surcharger l'opérateur" ni ce que c'est censé faire .
 Pourrais-tu préciser ta pensée? Merci d'avance.


samedi 25 novembre 2006 à 23:46:12 | Re : [C++][Classes]

yann_lo_san

Réponse acceptée !

A oui, tu veux dire qu'1 bateau est composé d'un tab de ligne et d'un tab de colonne formant une matrice.

#define LIGNE 0
#define COLONNE 1

class CBateau
{
   const int tailleBateau = 3;      // ex : bateau de 3 cases
   unsigned char m_coords[3][2];   // les coords ligne et colonnes

   // defini coords
   CBateau()
   {
      m_coords[0][LIGNE] = 2; m_coords[0][COLONNE] = 3;
      m_coords[1][LIGNE] = 3; m_coords[1][COLONNE] = 3;
      m_coords[2][LIGNE] = 4; m_coords[2][COLONNE] = 3;
   }

   unsigned char GetCoordLigne(int partieBateau)
   {
      return m_coords[partieBateau][LIGNE];
   }
   unsigned char GetCoordColonne(int partieBateau)
   {
      return m_coords[partieBateau][COLONNE];
   }
};


// placer un bateau

CEnsemble unEnsemble;
CBateau monBateau;
unEnsemble.AjouterBateau(monBateau);

void CEnsemble : : AjouterBateau(CBateau & UnBateau)
{
   for(int i=0; i<CBateau::tailleBateau; i++)
   {
   mGrille[UnBateau.getCoordLigne(i)][UnBateau.getCoordColonne(i)] = 1; 
   }
}

// bien sur la taille bateau n'est pas constante et il y a plus efficace.

dimanche 26 novembre 2006 à 01:55:46 | Re : [C++][Classes]

psychospire

Ok je commence à comprendre ton idée, ca m'a l'air impec, à part que je ne connais pas du tout la syntaxe "unsigned", quel est sa fonction exactement??
Merci pour ta réponse en tout cas, ca va surement m'etre tres utile.
dimanche 26 novembre 2006 à 02:06:19 | Re : [C++][Classes]

psychospire

Problème à la ligne :
mGrille[UnBateau.getCoordLigne(i)][UnBateau.getCoordColonne(i)] = 1; 
Il me dit que getCoordLigne et getCoordColonne ne sont pas des membres de CBateau...
dimanche 26 novembre 2006 à 02:09:04 | Re : [C++][Classes]

yann_lo_san


il faut rajouter public: au debut de la classe
dimanche 26 novembre 2006 à 02:13:05 | Re : [C++][Classes]

psychospire

Réponse rapide merci! Mais j'ai deja mis les "unsigned" derriere un public: je ne vois pas ce qui cloche...

1 2

Cette discussion est classée dans : grille, classe, bateau, unbateau, censemble


Répondre à ce message

Sujets en rapport avec ce message

projet bataille navale problème!!! [ par krimoluv ] Bonsoir à tous,voila j'ai mon projet bataille navalle qui approche les 1900 lignes. Malheuresement je n'ai pas eu le resultat esconté car en compilant Appel non conforme d'une fonction membre non static [ par nourhene4 ] Bonjour/Bonsoir J'ai appeler dans une classe une fonction membre d'une autre classe , mais une erreur survient ''appel non conforme d'une fonction mem Client/Server [ par andoid ] Bonjour Je un souci dans mon programme au faite j'ai deux clients pirate et justicier et un serveur, les pirates doivent voir la position des justici vecteur-matrice [ par hjr2610 ] bonsoir, en fait j'ai un petit projet sur les matrices et vecteurs où je dois faire apparaitre l'héritage. j'ai pensé à ce que la classe mère soit cla Probleme de classe, conventions d'appel (MFC) [ par Taurnil ] Bonjour à tous, j'ai posté un topic sur les MFC il y a quelques temps et je m'étonnais de n'avoir aucune réponse, la raison en était toute simple, je tableau [ par MBALHOUSSE ] bonjour 1) au fait, je veux programmer une fonction en C qui renvoie une valeur entier pour chaque motcad j'ai besoin d'un tableau de caractere comme problème avec vtk [ par eldana ] Bonjour à tous.J'ai un petit souci avec la librairie vtk. Je dois faire différents graphes, donc jusqu'a la aucun souci, vu qu'il y a une classe vtkGr ziparchive [ par faucheuse ] Bonjour ami(e)s programmeurs et programmeuzes, Je cherche depuis un petit moment si il existe une version de la classe ZipArchive disponible en C/C++ Probleme fermeture de Thread!!! [ par Dryko ] Bonjour, Je suis en train de programmer une application MFC dans lequel je créer un thread (avec CreateThread) dans le constructeur de ma classe. Dans Nombre aleatoire [ par BastienL21 ] Bonjour à tous,    Je développe actuellement une bataille navale en console. Pour placer les bateaux du PC et les tirs du pc, il faut que je crer un n


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales