[c++][2IR] Projet 1 : Othello

Page 1 sur 2 1, 2  Suivant

Voir le sujet précédent Voir le sujet suivant Aller en bas

[c++][2IR] Projet 1 : Othello

Message  galaeron le Mer 23 Nov 2011, 15:32

Bonjour,

J'ai commencé à coder le projet susmentionné et je suis confronté à une difficulté lors de l'utilisation des méthodes fournies.

A savoir :
Code:


static bool estPlacementPossible(bool pionBlanc, char rangee, char colonne,
   const std::vector < std::vector<OthelloOutils::Etat> > & othellier )
            throw (std::logic_error) ;

static unsigned int pionsEncadres(char rangee, char colonne, OthelloOutils::Dir direction,
            const std::vector < std::vector<OthelloOutils::Etat> > & othellier )
          throw (std::logic_error);


Contexte :

  • bool joueurB;
    JoueurB est un simple booleen, vérifié via cout & printf

  • Othellier est un vecteur de vecteur d'OthelloOutils::Etat
    Qui est remplit lors de l'appel au constructeur de OthelloOutils::VIDE à l'exception des 4 pièces de bases ...
    tester via ma methode toString() ou d'une autre facon comme ici
    if (Othellier[x][y] == OthelloOutils::VIDE){cout << "ok" << endl;}

  • char x,y;
    x et y contiennent les valeurs désirées ... (testé via printf & cout)

  • OthelloOutils::Dir dir;
    dir est une direction testée via
    if (dir == OthelloOutils::HAUT){cout << "ok" << endl;}


Appel à la fonction:

  1. return (estPlacementPossible(joueurB,x,y,Othellier));

    Aurais je mal compris le fonctionnement ?

  2. les rangées commencent à '0' ou '1' ?



Dernière édition par galaeron le Ven 09 Déc 2011, 20:45, édité 4 fois

galaeron

Nombre de messages : 113
Age : 28
Prénom : Arthur
Statut : 3IR12
Date d'inscription : 29/06/2011

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  nvs le Mer 23 Nov 2011, 15:47

galaeron a écrit:Appel à la fonction:

  • return (estPlacementPossible(joueurB,x,y,Othellier));

    Aurais je mal compris le fonctionnement ?
si ta question porte sur l'appel d'une méthode statique, je réponds oui Smile

galaeron a écrit:
  • les rangées commencent à '0' ou '1' ?
as-tu lu la doc avant de poser ta question ?





study

_________________

nvs

Nombre de messages : 5238
Age : 43
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  galaeron le Mer 23 Nov 2011, 16:12

EDIT :
Je me suis trompé en ecrivant ma question la formulation exact dans mon code est
return (OthelloOutils::estPlacementPossible(joueurB,x,y,Othellier));

si ta question porte sur l'appel d'une méthode statique, je réponds oui

http://www.siteduzero.com/tutoriel-3-11231-elements-statiques-et-amitie.html a écrit:
C'est justement ça la particularité des méthodes statiques. Pour les utiliser, pas besoin de créer un objet. Il suffit juste de faire précéder le nom de la méthode par le nom de la classe suivi de deux deux-points.
D'où le : MaClasse::maMethode();

Cette méthode, comme je vous le disais, ne peut pas accéder aux attributs de la classe. C'est vraiment une bête fonction, mais rangée dans une classe. Ça permet de regrouper les fonctions dans des classes, par thème, et aussi d'éviter des conflits de nom.

galaeron

Nombre de messages : 113
Age : 28
Prénom : Arthur
Statut : 3IR12
Date d'inscription : 29/06/2011

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  nvs le Mer 23 Nov 2011, 16:19

ok.

et quel est le problème alors ?









Question

_________________

nvs

Nombre de messages : 5238
Age : 43
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  galaeron le Mer 23 Nov 2011, 16:42

Lors de cet appel estPlacementPossible(..) me renvois toujours 0 quel que soit la position passée en paramètre, valide ou non ...
Donc par conséquent j'aurais voulu savoir si mon appel était correct ...

galaeron

Nombre de messages : 113
Age : 28
Prénom : Arthur
Statut : 3IR12
Date d'inscription : 29/06/2011

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  galaeron le Mer 23 Nov 2011, 23:42

Après (quelques) heures de recherches, j'ai finis par découvrir que le problème venait de ma transformation de char en int , l'inverse ainsi que de la vérification des entrées claviers ...
Ceci met donc un terme à cette v1 du projet.
*passage mode optimisation*
cheers


PS : Voila pourquoi malgré ma demande personne n'a voulu me donner une correction de l'examen de juin de l'année passée j'imagine ? x)

galaeron

Nombre de messages : 113
Age : 28
Prénom : Arthur
Statut : 3IR12
Date d'inscription : 29/06/2011

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  smb le Jeu 24 Nov 2011, 06:25

galaeron a écrit:(...)

PS : Voila pourquoi malgré ma demande personne n'a voulu me donner une correction de l'examen de juin de l'année passée j'imagine ? x)

Effectivement, les questions d'examens de laboratoire c++ sont souvent recyclées en projet d'où la réticence des profs à donner des corrigés ! De plus, comme les examens de laboratoire sont difficiles*, il n'y a quasi personne qui réussisse à faire un examen correct et il ne risque donc pas d'y avoir des solutions qui traînent dans les entrailles "esi"ciennes du net.

*Pour rappel, les laboratoires sont là pour que les étudiants assimilent régulièrement la matière en la travaillant tout aussi régulièrement. Si les examens de laboratoire étaient faciles, plus personne ne travaillerait aux laboratoires.

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  Jaune le Jeu 24 Nov 2011, 22:32

Une question additionnelle sur les règles du jeu...

Doit-on laisser le joueur choisir les mesures de l'othellier ou non ? Et donc a lui d'initialiser sois même son othellier entre 4 et 12...
L'othellier doit être obligatoirement carré? c'est a dire que le joueur ne peux pas dire 4 rangée 8 colonnes exemple ou bien non ?

Merci d'avance...

Jaune

Nombre de messages : 7
Prénom : Tuan
Date d'inscription : 08/05/2011

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  LoopinG le Sam 26 Nov 2011, 13:16

Bonjour,

J'ai une autre question de compréhension :

J'ai du mal à comprendre la structure Position surtout avec ce type de notation :

Position(int r=-1 int c=-1) : numR(r), numC(c) {}

Pourriez vous m'expliquer ce que veulent dire les : et la suite !


Merci

LoopinG

Nombre de messages : 100
Prénom : Laurent
Statut : Étudiant en Réseaux et Télécoms
Localisation : L'hôpital de l'armée !
Date d'inscription : 24/03/2011

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  smb le Sam 26 Nov 2011, 15:55

LoopinG a écrit:Bonjour,

J'ai une autre question de compréhension :

J'ai du mal à comprendre la structure Position surtout avec ce type de notation :

Position(int r=-1 int c=-1) : numR(r), numC(c) {}

Pourriez vous m'expliquer ce que veulent dire les : et la suite !


Merci

La notation dont tu parles s'appelle la liste d'initiation, qui est une façon d'initialiser les attributs de la classe.
Dans ce cas-ci on aurait pu faire d'une autre façon :
Code:
Position (int r=-1, int c=-1 ) {
numR=r;
numC=c;
}


Dernière édition par smb le Sam 26 Nov 2011, 16:19, édité 1 fois

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  LoopinG le Sam 26 Nov 2011, 15:58

Merci pour vos informations, cela met très utile Smile

LoopinG

Nombre de messages : 100
Prénom : Laurent
Statut : Étudiant en Réseaux et Télécoms
Localisation : L'hôpital de l'armée !
Date d'inscription : 24/03/2011

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  galaeron le Dim 27 Nov 2011, 10:59

Je trouve quand même bizarre de devoir passer ';' à estPionsEncadres si on veut lui passer 11 non?

galaeron

Nombre de messages : 113
Age : 28
Prénom : Arthur
Statut : 3IR12
Date d'inscription : 29/06/2011

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  LoopinG le Dim 27 Nov 2011, 13:19

Bonjour à tous, j'ai un soucis avec la méthode estPlacementPossible()

Code:
bool OthelloOutils::estPlacementPossible    (    bool     pionBlanc,
      char     rangee,
      char     colonne,
      const std::vector< std::vector< OthelloOutils::Etat > > &     othellier
   )       throw (std::logic_error) [static]

Elle dispose de 4 paramètres dans son prototype non ?



Pourquoi eclipse m'en sort un 5ème ?

De plus que signifie le & du 4ème paramètre !

Merci pour vos futurs reponses Smile

LoopinG

Nombre de messages : 100
Prénom : Laurent
Statut : Étudiant en Réseaux et Télécoms
Localisation : L'hôpital de l'armée !
Date d'inscription : 24/03/2011

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  galaeron le Dim 27 Nov 2011, 13:53

Deux choses d'abord:
1. estPlacementPossible va "jeter" une exception de type std::logic_error dans certains cas donc il faut que tu la gères sinon ça va planter
Va voir du coter de
try{...}
catch (){}
http://www.siteduzero.com/tutoriel-3-480723-la-gestion-des-erreurs-avec-les-exceptions.html

2. tab est un tableau? Si oui, regarde ce que le prototype te demande ... Il te demande un vecteur de vecteur d OthelloOutils::Etat.
http://www.siteduzero.com/tutoriel-3-473855-les-conteneurs.html#ss_part_1

Pour le "&" je m avance peux être mais ça signifie qu'il reçoit une référence, cad que la fonction va pouvoir modifie l objet reçus et non pas une copie
Tu peux allez chercher des infos la bas ...
http://www.siteduzero.com/tutoriel-3-420464-decouper-son-programme-en-fonctions.html#ss_part_3

galaeron

Nombre de messages : 113
Age : 28
Prénom : Arthur
Statut : 3IR12
Date d'inscription : 29/06/2011

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  nvs le Dim 27 Nov 2011, 13:56

galaeron a écrit:Pour le "&" je m avance peux être mais ça signifie qu'il reçoit une référence, cad que la fonction va pouvoir modifie l objet reçus et non pas une copie
mais le const empêche la modification Smile

plus de détails au cours ou ailleurs pour les impatients !







pirat

_________________

nvs

Nombre de messages : 5238
Age : 43
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  galaeron le Dim 27 Nov 2011, 13:59

En effet je l'avais oublié celui là ! Rolling Eyes

galaeron

Nombre de messages : 113
Age : 28
Prénom : Arthur
Statut : 3IR12
Date d'inscription : 29/06/2011

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  LoopinG le Dim 27 Nov 2011, 14:10

nvs a écrit:

plus de détails au cours ou ailleurs pour les impatients !


Arf !!!

galaeron a écrit:

2. tab est un tableau


C'est un vecteur de vecteur tkt pas Smile

LoopinG

Nombre de messages : 100
Prénom : Laurent
Statut : Étudiant en Réseaux et Télécoms
Localisation : L'hôpital de l'armée !
Date d'inscription : 24/03/2011

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  smb le Dim 27 Nov 2011, 17:55

galaeron a écrit:Je trouve quand même bizarre de devoir passer ';' à estPionsEncadres si on veut lui passer 11 non?

Non seulement ta remarque est judicieuse mais en plus elle est pertinente (pléonasme, bien sûr) !

En attendant d'autres nouvelles, considère que la taille de l'othellier doit être parmi :
4x4 , 4x6 , 4x8 , 6x4 , 6x6 , 6x8 , 8x4 , 8x6 , 8x8

Merci Arthur Embarassed

Si tu étais un de mes étudiants tu aurais droit à des points de bonus.


smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  galaeron le Dim 27 Nov 2011, 23:08

Au pire je rechangerais mon projet parce que j'ai déjà "contourné le problème" et ça fonctionne parfaitement comme ça, même si c'est un peux moche je le reconnais =)

galaeron

Nombre de messages : 113
Age : 28
Prénom : Arthur
Statut : 3IR12
Date d'inscription : 29/06/2011

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  smb le Lun 28 Nov 2011, 16:31

galaeron a écrit:Au pire je rechangerais mon projet parce que j'ai déjà "contourné le problème" et ça fonctionne parfaitement comme ça, même si c'est un peux moche je le reconnais =)

Une nouvelle version de la librairie (+ .h et aide.html) est disponible sur poESI.
Les paramètres "rangee" et "colonne" deviennent des int

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  galaeron le Lun 28 Nov 2011, 21:27

La question que je me pose du coup c'est :
"Est ce que rangees commence à 0 du coup et quid de colonne?"


Dernière édition par galaeron le Lun 28 Nov 2011, 21:36, édité 2 fois

galaeron

Nombre de messages : 113
Age : 28
Prénom : Arthur
Statut : 3IR12
Date d'inscription : 29/06/2011

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  smb le Lun 28 Nov 2011, 21:35

galaeron a écrit:La question que je me pose du coup c'est :
"Est ce que rangees commence à 0 du coup et quid de colonne?"

Tu as lu la doc ?

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  galaeron le Lun 28 Nov 2011, 21:37

/*!
* \brief Méthode qui vérifie si un placement d'un pion
* est possible dans la case donnée par [rangee,colonne].
* Attention, elle ne place pas le pion!
*
* \param pionBlanc <tt>true</tt> si placement d'un pion blanc,
* <tt>false</tt> si placement d'un pion noir
*
* \param rangee numéro de la rangée où placer le pion,
* parmi une des valeurs entières 1, 2, 3, ...
*
* \param colonne lettre de la colonne où placer le pion,
* parmi 'a', 'b', 'c', ...
*
* \param othellier plateau du jeu
*
* \return <tt>true</tt> si le placement est possible,
* <tt>false</tt> sinon
*
* \exception std::logic_error si un des arguments est invalide
*/
static bool estPlacementPossible(bool pionBlanc, int rangee, int colonne,
const std::vector < std::vector<OthelloOutils::Etat> > & othellier )
throw (std::logic_error) ;
Je dois dire que j'ai du mal a comprendre "int colonne" \param colonne lettre de la colonne où placer le pion parmi 'a','b','c'



EDIT : J'ai compris ... mais faire
Code:
char b;b='a';b+=y;
sum+= OthelloOutils::pionsEncadres((x+1),b,dir,Othellier);
Ca me parait quand même bizarre maintenant c'est peux etre moi au quel cas désolé Embarassed

galaeron

Nombre de messages : 113
Age : 28
Prénom : Arthur
Statut : 3IR12
Date d'inscription : 29/06/2011

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  smb le Lun 28 Nov 2011, 21:50

galaeron a écrit:
(...)
Je dois dire que j'ai du mal a comprendre "int colonne" \param colonne lettre de la colonne où placer le pion parmi 'a','b','c'

EDIT : J'ai compris ... mais faire
Code:
char b;b='a';b+=y;
sum+= OthelloOutils::pionsEncadres((x+1),b,dir,Othellier);
Ca me parait quand même bizarre maintenant c'est peux etre moi au quel cas désolé Embarassed

Tu as du mal à comprendre quoi et tu trouves bizarre quoi ?

D'un côté tu as deux méthodes dont l'implémentation respecte les notations "officielles" de l'othellier et de l'autre tu as ta propre implémentation. Il faut bien à un moment donné faire une petite transformation pour passer de l'une à l'autre, non ?

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  galaeron le Lun 28 Nov 2011, 21:57

Tout à fait ! La conversion est clairement à faire de mon coté !
Mais je ne comprends pas dans la doc quand vous dites :
"colonne lettre de la colonne où placer le pion, parmi 'a', 'b', 'c', ..."
Si j'ai bien compris je dois passer l'int correspondant à 'a' à la méthode?
(edit : cf ascii table?)

galaeron

Nombre de messages : 113
Age : 28
Prénom : Arthur
Statut : 3IR12
Date d'inscription : 29/06/2011

Revenir en haut Aller en bas

Re: [c++][2IR] Projet 1 : Othello

Message  Contenu sponsorisé Aujourd'hui à 21:06


Contenu sponsorisé


Revenir en haut Aller en bas

Page 1 sur 2 1, 2  Suivant

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum