[Java1] Projet2 Classe EtatPartie

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

[Java1] Projet2 Classe EtatPartie

Message  bigmax le Jeu 19 Mar 2009, 11:48

Bonjour, je n'arrive pas bien à comprendre et à mettre en œuvre la classe EtatPartie et donc j'ai quelques questions à poser :
Je pense qu'elle est juste chargée de créer le plateau et l'afficher , créer les 2 joueurs et afficher des détails du style :

Joueur Courant : joueur Sud
Position Pion Courant : (2,2)
...
Est que c'est correcte ou bien j'ai vraiment rien compris?

Pour le constructeur, on demande :
Code:
EtatPartie()
le constructeur va créer tout ce qui est nécessaire au démarrage d'une
nouvelle partie entre 2 joueurs Humain. C'est toujours le joueurSud qui
commence.
Est ce que ça ne serait pas plutôt à la méthode main de Gyges de le faire?

Enfin dernière chose, je ne vois pas trop le lien entre la Classe EtatPartie et l'Interface Coup car je ne comprend pas en quoi l'état EtatPartie sera modifié.?

Merci d'avance à ceux prendront le temps de me répondre.

bigmax

Nombre de messages : 132
Age : 27
Prénom : Gilles
Statut : 3ème Réseaux
Date d'inscription : 17/11/2007

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  pbt le Jeu 19 Mar 2009, 12:02

bigmax a écrit:Bonjour, je n'arrive pas bien à comprendre et à mettre en œuvre la classe EtatPartie et donc j'ai quelques questions à poser :
Je pense qu'elle est juste chargée de créer le plateau et l'afficher , créer les 2 joueurs et afficher des détails du style :
...
Oui, elle initialise toute une série d'attributs dont elle aura besoin (un plateau, le joueur Sud, le joueur Nord, le joueur courant,...). Note bien qu'elle possède le plateau de jeu par exemple.

bigmax a écrit:
Pour le constructeur, on demande :
Code:
EtatPartie()
le constructeur va créer tout ce qui est nécessaire au démarrage d'une
nouvelle partie entre 2 joueurs Humain. C'est toujours le joueurSud qui
commence.
Est ce que ça ne serait pas plutôt à la méthode main de Gyges de le faire?
Non, la classe Gygès se contentera d'instancier un EtatPartie initial ...

bigmax a écrit:
Enfin dernière chose, je ne vois pas trop le lien entre la Classe EtatPartie et l'Interface Coup car je ne comprend pas en quoi l'état EtatPartie sera modifié.?
... l'état partie de la classe Gygès évoluera au fur et à mesure de la partie puisque cet Etat sera passe en arguement de chacun des coups. Un coup modifiera le plateau qui est un attribut d'EtatPArtie.








cyclops

_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  mcd le Jeu 19 Mar 2009, 15:06

La seule et unique ressonsabilité de la classe EtatPartie est de retenir dans quel état est la partie. Smile
C'est grâce à elle qu'on sait où on en est dans le cours du jeu.
L'affichage ne fait pas partie de ses responsabilités.

mcd

Nombre de messages : 1548
Prénom : Marco
Statut : prof
Localisation : Molenbeek
Date d'inscription : 29/09/2006

http://mcd.namok.be

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  bigmax le Sam 21 Mar 2009, 15:35

Merci pour les explications j'y vois plus clair maintenant Smile

Par contre nouvelle question, je ne vois pas comment représenter la position courante Mad
Cette position doit varier en fonction du joueur nord ou sud non ? 1ere ligne pour nord et 5eme pour sud
et comme le tableau est " à l'envers " ça m'embrouille complètement pour faire les méthodes isNord,Sud,Est,Ouest
alors si quelqu'un sait me mettre sur une bonne voie, je suis preneur!

Merci et d'avance et bon weekend

bigmax

Nombre de messages : 132
Age : 27
Prénom : Gilles
Statut : 3ème Réseaux
Date d'inscription : 17/11/2007

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  mcd le Sam 21 Mar 2009, 19:43

Une position s'exprime toujours de la même façon quel que soit le joueur courant.
La ligne 0 est au sud, la ligne 5 est au nord.

mcd

Nombre de messages : 1548
Prénom : Marco
Statut : prof
Localisation : Molenbeek
Date d'inscription : 29/09/2006

http://mcd.namok.be

Revenir en haut Aller en bas

classe EtatPartie

Message  snake27 le Sam 21 Mar 2009, 20:33

Bonjour,

Vous dites que l'affichage ne fait pas partie des responsabilité de la classe EtatPartie.

j'ai creer une methode displayEtat() dans la classe EtatPartie qui affiche l'etat du jeu... Est-ce incorrect ?

snake27

Nombre de messages : 17
Age : 28
Prénom : Michael
Date d'inscription : 08/03/2009

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  XzZy le Sam 21 Mar 2009, 21:02

snake27 a écrit:Bonjour,

Vous dites que l'affichage ne fait pas partie des responsabilité de la classe EtatPartie.

j'ai creer une methode displayEtat() dans la classe EtatPartie qui affiche l'etat du jeu... Est-ce incorrect ?

Salut ,

Je ne sais pas si c'est obligatoire , mais une bonne façon de contourner cette restriction est de créer une méthode toString() dans la classe EtatPartie et d'afficher l'état de la partie grâce à un System.out.println() dans la classe Gyges.

Personnellement je vois la classe EtatPartie plus comme "des données" qui définissent où en est la partie.A mon avis a part des getteurs et des setteurs elle ne doit pas contenir beaucoup de méthodes.

XzZy

Nombre de messages : 14
Prénom : A
Date d'inscription : 18/10/2008

Revenir en haut Aller en bas

RE : Classe EtatPartie

Message  snake27 le Sam 21 Mar 2009, 21:33

Cela revient au meme de creer une methode toString ou une methode autre qu'on appelerait dans la classe Gyges.

il n'est pas clairement defini la facon dont l'on doit afficher l'etat d'une partie...

snake27

Nombre de messages : 17
Age : 28
Prénom : Michael
Date d'inscription : 08/03/2009

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  XzZy le Dim 22 Mar 2009, 00:35

Il est noté au début du projet que les interactions avec l'utilisateur ne peuvent se faire que vie les classes du package gxxxxx.p2.console. J'en déduis donc que seul ces classes là (Gyges et Humain) peuvent contenir des System.out.println(), des Scanner(System.in) ,etc...

Enfin , peut-être que je me trompe et que que j'ai mal compris cette consigne du projet.

XzZy

Nombre de messages : 14
Prénom : A
Date d'inscription : 18/10/2008

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  aquavirius le Dim 22 Mar 2009, 00:51

XzZy a écrit:Il est noté au début du projet que les interactions avec l'utilisateur ne peuvent se faire que vie les classes du package gxxxxx.p2.console. J'en déduis donc que seul ces classes là (Gyges et Humain) peuvent contenir des System.out.println(), des Scanner(System.in) ,etc...

Enfin , peut-être que je me trompe et que que j'ai mal compris cette consigne du projet.

D’accord avec toi et cela en vue de créer une interface graphique par la suite.

Ce qui me dérange dans cette classe c’est de savoir quelle classe va lui donner la valeur du pion courant, la position du pion courant et si il faut tester si la position est correct.

aquavirius

Nombre de messages : 34
Age : 28
Prénom : Laurent
Statut : Ancien
Date d'inscription : 29/09/2008

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  Wark le Dim 22 Mar 2009, 10:21

aquavirius a écrit:
XzZy a écrit:Il est noté au début du projet que les interactions avec l'utilisateur ne peuvent se faire que vie les classes du package gxxxxx.p2.console. J'en déduis donc que seul ces classes là (Gyges et Humain) peuvent contenir des System.out.println(), des Scanner(System.in) ,etc...

Enfin , peut-être que je me trompe et que que j'ai mal compris cette consigne du projet.

D’accord avec toi et cela en vue de créer une interface graphique par la suite.

Ce qui me dérange dans cette classe c’est de savoir quelle classe va lui donner la valeur du pion courant, la position du pion courant et si il faut tester si la position est correct.

C'est votre toString() qui gère tout ça. Une classe console ne fait que de l'affichage et de la récupération des valeurs encodées au clavier. ;-) (Dans votre cas hein..)

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  XzZy le Dim 22 Mar 2009, 11:46

aquavirius a écrit:
XzZy a écrit:Il est noté au début du projet que les interactions avec l'utilisateur ne peuvent se faire que vie les classes du package gxxxxx.p2.console. J'en déduis donc que seul ces classes là (Gyges et Humain) peuvent contenir des System.out.println(), des Scanner(System.in) ,etc...

Enfin , peut-être que je me trompe et que que j'ai mal compris cette consigne du projet.

D’accord avec toi et cela en vue de créer une interface graphique par la suite.

Ce qui me dérange dans cette classe c’est de savoir quelle classe va lui donner la valeur du pion courant, la position du pion courant et si il faut tester si la position est correct.

Dans mon code j'ai mis des getteurs et des setteurs pour tous les attributs , ma classes EtatPartie ne sert qu'a contenir les données utilisées lors d'une partie. La positionCourante et le pionCourant sont modifiés lors de certains coups.

XzZy

Nombre de messages : 14
Prénom : A
Date d'inscription : 18/10/2008

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  mcd le Dim 22 Mar 2009, 12:10

Une méthode toString() ne sert qu'à un affichage basique de débogage pas pour un bel affichage dans un programe précis.
Si dans Gygès vous appelez la méthode toString() de EtatPartie pour ensuite l'afficher alors ce n'est pas correct.
Pourquoi ? La partie essentielle est toujours dans EtatPartie. Si on passe à une version graphique, ce code qui n'a de sens que pour la version console va rester et polluer le code.

Une classe a 1 (une, UNE, una, one, een) responsabilité. EtatPartie s'occupe de gérer l'état d'une partie et pas de l'IHM (interface homme-machine). Tout ce qui concerne la version console va dans le package console.

mcd

Nombre de messages : 1548
Prénom : Marco
Statut : prof
Localisation : Molenbeek
Date d'inscription : 29/09/2006

http://mcd.namok.be

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  aquavirius le Dim 22 Mar 2009, 12:39

Pour mon problème avec la position courante. Pouvez-vous me dire si ma logique est correcte ?

Dans la classe Gygès :

[…]
Demande le pion que le joueur veut jouer.
Donne la valeur et la position de ce pion à la classe état partie.
Fait appelle à proposer coup de la classe Humain.
[…]

Dans la classe Humain :

[…]
On propose les différents coups au joueur.
Dans le cas d’un déplacement :
On demande, la position d’arrivée.
On créer un déplacement avec les données de la position du pion courant de la classe état partie et la position d'arrivée.
[…]

Merci d'avance pour vos réponses.

aquavirius

Nombre de messages : 34
Age : 28
Prénom : Laurent
Statut : Ancien
Date d'inscription : 29/09/2008

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  mcd le Dim 22 Mar 2009, 12:55

Dans EtatPartie, positionCourante désigne la position courante du pion en train de se déplacer.
Ca n'a de sens qu'après un déplacement. En effet, si un pion a été déplacé et qu'il arrive sur une case occupée, le joueur peut continuer à jouer. Mais son pion n'est PLUS sur la plateau. Il faut donc retenir où il est arrivé au coup précédent.

Toute lo logique des coups se fait dans les classes Coup.
Gygès ne sait tien là dessus, il n'a pas a modifié l'état d'une partie, c'est pas sa responsabilité.

mcd

Nombre de messages : 1548
Prénom : Marco
Statut : prof
Localisation : Molenbeek
Date d'inscription : 29/09/2006

http://mcd.namok.be

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  bigmax le Mer 25 Mar 2009, 19:41

Dans la classe Position, comment peut on accéder à la positionCourante de EtatPartie?

bigmax

Nombre de messages : 132
Age : 27
Prénom : Gilles
Statut : 3ème Réseaux
Date d'inscription : 17/11/2007

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  snake27 le Mer 25 Mar 2009, 20:27

mcd a écrit:Une méthode toString() ne sert qu'à un affichage basique de débogage pas pour un bel affichage dans un programe précis.
Si dans Gygès vous appelez la méthode toString() de EtatPartie pour ensuite l'afficher alors ce n'est pas correct.
Pourquoi ? La partie essentielle est toujours dans EtatPartie. Si on passe à une version graphique, ce code qui n'a de sens que pour la version console va rester et polluer le code.

Une classe a 1 (une, UNE, una, one, een) responsabilité. EtatPartie s'occupe de gérer l'état d'une partie et pas de l'IHM (interface homme-machine). Tout ce qui concerne la version console va dans le package console.

Je suis perdu à present. Après avoir demandé conseil a d'autres etudiant, je suis arrivé a creer une methode toString pour mon plateau ainsi que toString pour l'etat d'une partie. Je les utilise dans Gyces par un System.out.println()..... C'est donc incorrect et il vaut mieux passer par une methode display() ???

Est-ce que dans EtatPartie, on ne doit avoir que des getteurs ? ou est-ce qu'on peut ajouter d'autre methode telle qu'une display() ?

Michael

snake27

Nombre de messages : 17
Age : 28
Prénom : Michael
Date d'inscription : 08/03/2009

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  mcd le Mer 25 Mar 2009, 20:34

bigmax a écrit:Dans la classe Position, comment peut on accéder à la positionCourante de EtatPartie?
C'est pas possible !
Explique un peu pourquoi tu en aurais besoin...

mcd

Nombre de messages : 1548
Prénom : Marco
Statut : prof
Localisation : Molenbeek
Date d'inscription : 29/09/2006

http://mcd.namok.be

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  mcd le Mer 25 Mar 2009, 20:49

snake27 a écrit:Je suis perdu à present. Après avoir demandé conseil a d'autres etudiant, je suis arrivé a creer une methode toString pour mon plateau ainsi que toString pour l'etat d'une partie. Je les utilise dans Gyces par un System.out.println()..... C'est donc incorrect et il vaut mieux passer par une methode display() ???
Est-ce que dans EtatPartie, on ne doit avoir que des getteurs ? ou est-ce qu'on peut ajouter d'autre methode telle qu'une display() ?
- Le but de toString() est d'afficher clairement mais sans mise en page l'état de l'objet. Utile pour des traces.
- A coté, il doit y avoir la possibilité d'afficher clairement un état à l'utilisateur. Les contraintes ne sont pas les mêmes (belle mise en page, couleurs, langue, ...)

Prenons bêtement le cas des entiers. On peut l'afficher simplement (bon ok, c'est pas un objet mais c'est tout comme) et il existe une classe qui permet l'affichage dans les habitudes de l'utilisateur.

Dans notre cas, prenons Plateau. Pour faire au mieux :
- on définit une méthode toString() qui affiche sommairement le plateau
- une méthode display() affiche le plateau de façon jolie et adaptée à l'utilisation qu'on faut on faire. Cette méthode ne doit pas être dans la classe Plateau pour les raisons que j'ai déjà énoncées.

Maintenant, par paresse, on peut écrire que la méthode display() se contente d'afficher le résultat de toString() parce qu'on le juge suffisant masi ce n'est pas le plus élégant...

Si vous êtes parti sur la voir d'un toString(), vous pouvez :
- copier le code toString() dans une méthode display() dans le package xxxxx.console
- Maintenant, vous ne touchez plus au code de toString() et vous améliorez la beauté de l'affichage dans la méthode display() en fonction de vos envies et du temps qu'il vous restera à la fin.

mcd

Nombre de messages : 1548
Prénom : Marco
Statut : prof
Localisation : Molenbeek
Date d'inscription : 29/09/2006

http://mcd.namok.be

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  bigmax le Jeu 26 Mar 2009, 14:04

Je voulais m'en servir afin de pouvoir faire les méthodes de Position V2
Par exemple pour la méthode int distance (Position autre), je ne vois pas comment obtenir la position courante autrement que par EtatPartie
Et comme vous me dite que ça n'est pas possible, alors je suis assez perdu.
Alors si quelqu'un peut me mettre sur la bonne voie ça m'aiderai beaucoup.

Merci

bigmax

Nombre de messages : 132
Age : 27
Prénom : Gilles
Statut : 3ème Réseaux
Date d'inscription : 17/11/2007

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  aquavirius le Jeu 26 Mar 2009, 22:07

Corrigez-moi si je me plante mais pour faire les méthodes de la classe Position (V2) tu n’as pas besoin de la position courante d’EtatPartie.
Cela est 2 choses différentes :
- Dans la classe Position(V2) la position courante est l’Object courant qui est instancié et qui appel sa méthode.
- Dans EtatPartie, la postions courante est la position du pion avec le qu’elle on réalise un coup.

aquavirius

Nombre de messages : 34
Age : 28
Prénom : Laurent
Statut : Ancien
Date d'inscription : 29/09/2008

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  mcd le Ven 27 Mar 2009, 00:30

Tout juste Wink

mcd

Nombre de messages : 1548
Prénom : Marco
Statut : prof
Localisation : Molenbeek
Date d'inscription : 29/09/2006

http://mcd.namok.be

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  bigmax le Lun 06 Avr 2009, 23:11

Bonsoir, j'aimerais savoir si mon bout de code suivant est correcte.?
Pour info, il s'agit de la méhode estValide(EtatPartie etat) de la classe Deplacement.

Code:
   public boolean estValide(EtatPartie etat){
      boolean estVal = false;
      if(etat.getPremierCoup() == false || etat.getPartieFinie()== true)
         return false;
      else
         if(Chemin.estCheminPossible(etat.getplateau(), positionDepart, positionArrivee,
                etat.getPionCourant().getVal()))
            if(etat.getJoueurCourant().getNom() == NordSud.NORD){
               if(etat.getPosCourante().getLigne() == etat.getplateau().premiereLigneOccupee(NordSud.NORD)){
                  return true;
               }
            }
            else if(etat.getJoueurCourant().getNom() == NordSud.SUD){
               if(etat.getPosCourante().getLigne() == etat.getplateau().premiereLigneOccupee(NordSud.SUD)){
                  return true;
               }
            }
      return estVal;
 }
Merci d'avance.

bigmax

Nombre de messages : 132
Age : 27
Prénom : Gilles
Statut : 3ème Réseaux
Date d'inscription : 17/11/2007

Revenir en haut Aller en bas

Re: [Java1] Projet2 Classe EtatPartie

Message  Contenu sponsorisé Aujourd'hui à 05:24


Contenu sponsorisé


Revenir en haut Aller en bas

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