[LAJ1] Historique et undo

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

[LAJ1] Historique et undo

Message  snake27 le Lun 06 Avr 2009, 15:24

Bonjour,

Je ne comprends pas trop comment doit se comporter la methode EtatPartie copie() de la classe EtatPartie. Pour le moment, j'ai l'ai ecrite comme cela mais je suis absolument pas sur du bien fondé de cette facon de faire ...

public EtatPartie copie(){
EtatPartie hist = new EtatPartie(plateau.copie(),joueurCourant, premierCoup,pionCourant,posCourante,partieFinie,joueurGagnant);
return hist;
}

j'utilise l'EtatPartie retournée pour la mettre sur la pile d'historique.

autre soucis : dans la methode effectuer de la classe Deplacement, je change le premierCoup du joueur a faux dans le cas ou je ne finis pas le deplacement sur une case libre. des lors , je propose au joueur de rebondir, remplacer, annuler le dernier coup. Mais lorsque je fais effectuer Undo, le premierCoup du joueur reste a faux, alors qu'il devrait redevenir vrai puisqu'il est retourner au debut de son tour.

Cette partie du projet me pose problème. je n'arrive pas a gerer l'annulation d'un coup ou plus...

Avez-vous des pistes ?

Michael

snake27

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

Revenir en haut Aller en bas

Re: [LAJ1] Historique et undo

Message  pbt le Lun 06 Avr 2009, 20:46

La copie de l'état permet de faire une copie de l'état ... je ne sais pas vraiment en dire plus et ce que tu écris me semble cohérent.

Pour ce qui est de ton coup déplacement, ce n'est pas normal qu'un coup propose un autre coup ... Lorsque tu effectues le déplacement, tu positionnes les attribut de ÉtatPartie, tu modifies le plateau, ... mais tu ne proposes pas un autre coup.

Fais bien attention de bien découper, compartimenter lorsque tu codes. Une classe a une responsabilité ...

_________________
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: [LAJ1] Historique et undo

Message  snake27 le Lun 06 Avr 2009, 20:57

Je ne vois pas trop alors, dans quelle classe je propose un rebond ou un remplacement... Pour moi, si le deplacement du joueur arrive sur une case libre, il me semble normal de proposer a ce moment la au joueur ce qu'il souhaite faire...

if(etat.getPlateau().isLibre(this.positionArrivee)){
etat.getPlateau().deplacerPion(this.positionDepart,this.positionArrivee);
etat.changerJoueurCourant();
etat.setPositionCourante(positionArrivee);

}else{
etat.changePremierCoup();
etat.setPositionCourante(positionArrivee);
etat.setPionCourant(etat.getPlateau().getPion(positionDepart));
etat.getPlateau().enleverPion(positionDepart);
Action coup1 = etat.getJoueurCourant().proposerCoup(etat); // je demande si je joueur veut rebondir...
coup1.effectuer(etat);

Michael

snake27

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

Revenir en haut Aller en bas

Re: [LAJ1] Historique et undo

Message  pbt le Mar 07 Avr 2009, 00:52

Regarde la logique de la classe Gyges qui boucle sur "proposer coup" tant que l 'on n'a pas gagné. La particularité c'est que c'est la responsabilité d'un coup de passer au joueur suivant. Donc un déplacement sur une case vide fera passer au joueur suivant tandis qu'un déplacement sur une case non vide ne fera pas passer au joueur suivant ...

_________________
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: [LAJ1] Historique et undo

Message  snake27 le Mar 07 Avr 2009, 09:39

Merci, en effet, j'ai supprimer ma proposition de coup dans le deplacement. Et le jeu se comporte de la meme manière....

Mais j'ai encore un petit soucis. Comment gerer correctement les annulation de coups ?

je teste un peu par un deplacement sur une case non libre. le jeu me propose alors de rebondir, remplacer, ou annuler l'operation. a ce moment, ce n'est pas le premier coup du joueur. Mais si j'annule mon coup ( donc le deplacement), le jeu considere que je ne suis pas a mon premier coup. est-ce normal ? ou est ce que ca devrait rechanger (redevenir mon premier coup ? ). Les options disponible pour le joueur s'affiche en fonction de si c'est son premier coup ou pas.

Pour le moment, si un joueur annule un coup autre que son premier, je n'ai pas de soucis. Mais si il annule son premier coup, pour remettre l'etat de la partie avant qu'il n'ait jouer son premier, cela ne marche pas...

J'ai suivi les indications du projet. Mais je stagne un peu. Pouvez-vous me reexpliquer a quel moment un joueur peut annuler son coup ?

Merci

Michael

snake27

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

Revenir en haut Aller en bas

Re: [LAJ1] Historique et undo

Message  Contenu sponsorisé Aujourd'hui à 14:48


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