Accueil > Forum > > > > [C++][Classes]
[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...
|
|
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
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|