LAJ 1 (projet) le main du jeu de dame.

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

LAJ 1 (projet) le main du jeu de dame.

Message  karemkadidola le Sam 17 Avr 2010, 23:00

Bonjour à tous,
je n'arrive pas à comprendre ceci.
j'ai écrit mon main, après avoir jouer un coup, j'ai remarqué que le joueurCourant ne changait pas automatiquement de un et de deux quand le jeu était fini mon println (joueurGagnant) m'affichait null au lieu de m'afficher le joueurCourant (un peu comme si quelque part j'avais encore à faire à l'état initial ) pourtant dans le méthode "jouer" de "Coup" on signale bien que si on joue un coup il faut changer le joueurCourant -si le jeu n'est pas fini- et si c'est le cas le joueuGagnant devient le joueurCourant- pour que ça marche normalement j'étais obligé après chaque coup d'utiliser la méthode changeJoueurCourant du clone de l'Etat initial (avec lequel je travaille) , et si le jeu est fini d'utiliser encore la méthode setJoueurGagnant du clone,
Je ne comprends pas pourquoi je devrais faire ça....il me semble que ça devrait se faire automatiquement tout ça...c'est à dire changer le joueurCourant après chaque coup et "setté" le joueurGagnant si jeu fini. (après une prisepion)

karemkadidola

Nombre de messages : 244
Prénom : aimé
Date d'inscription : 13/10/2009

Revenir en haut Aller en bas

Re: LAJ 1 (projet) le main du jeu de dame.

Message  DjMan42 le Sam 17 Avr 2010, 23:02

J'ai eu presque le même problème faut voir dans la méthode clone.

DjMan42

Nombre de messages : 219
Prénom : Eden
Statut : Etudiant 1er Indu
Localisation : Bruxelles
Date d'inscription : 28/10/2008

Revenir en haut Aller en bas

Re: LAJ 1 (projet) le main du jeu de dame.

Message  mba le Dim 18 Avr 2010, 20:50

karemkadidola a écrit: pour que ça marche normalement j'étais obligé après chaque coup d'utiliser la méthode changeJoueurCourant du clone de l'Etat initial (avec lequel je travaille) , et si le jeu est fini d'utiliser encore la méthode setJoueurGagnant du clone

Normalement appeler les méthodes de Jeu doit suffire, c'est en effet la seule manière d'agir sur l'état du jeu.
L'état que tu obtiens par le clone (en appelant getEtat()) n'est qu'une photo de ton jeu à un instant donné, c'est donc normal qu'elle n'évolue pas avec le jeu, si tu veux voir le nouvel état de ton jeu après une action, il faudra redemander un nouveau clone de l'état actuel.

Rien ne sert d'agir sur cette image, car elle n'a aucun impact sur ton jeu.

mba

Nombre de messages : 1493
Statut : prof
Localisation : Lessines
Date d'inscription : 07/10/2006

Revenir en haut Aller en bas

Re: LAJ 1 (projet) le main du jeu de dame.

Message  karemkadidola le Lun 19 Avr 2010, 06:40

Merci beaucoup madame pour ces explications!!!! ce qui m'a empêché de voir clair est ceci.
D'un côté le joueurCourant ne changait pas, ni le joueurGagnant après la fin d'une partie. (j'avais forcement à faire à une image ou photo comme vous le dites) mais d'un autre côté les Pions de l'étatClone evoluaient eux avec le jeu sans problème et là de premier abord il n'était pas du tout question d'une image à un moment donné.
Mais je viens de me rappeler d'une chose essentielle dans le clonage..malgré un clonage en profondeur les éléments d'un tableau du clone référencent toujours les éléments du tableau de l'original c'est juste les tableaux en eux même qui n'ont plus la même référence (voir lien posté par Mr Pbt, dans notre cours de 1ere année on en parle pas) et c'est la seule raison qui fait que mes pions évoluent avec le jeu même si je travaille avec un état clone depuis le début du jeu; puisque mon plateau que je présente après chaque coup, c'est quand même un tableau des tableaux de Pions et c'est là que je me suis fais avoir !!! Vos explications mon aidé à voir plus clair - un petit changement d'algo de mon main comme vous suggérer devrait faire l'affaire encore une fois merci beaucoup pour ces explications on ne peut plus clair!!!!!!!

karemkadidola

Nombre de messages : 244
Prénom : aimé
Date d'inscription : 13/10/2009

Revenir en haut Aller en bas

Re: LAJ 1 (projet) le main du jeu de dame.

Message  mba le Lun 19 Avr 2010, 20:41

Bon bon,
du moment que tu t'y retrouves :-).

mba

Nombre de messages : 1493
Statut : prof
Localisation : Lessines
Date d'inscription : 07/10/2006

Revenir en haut Aller en bas

Re: LAJ 1 (projet) le main du jeu de dame.

Message  pbt le Mar 20 Avr 2010, 09:42

Au sujet de clone (qui pose pas mal de questions), je rappelle que l'on peut cloner un tableau sans soucis ... mais il faut rélféchir au cas du tableau de tableau.

Un peu en détail,
Code:
Pion[] pions = ...
Pion[] rePions = pions.clone()
ne pose pas de problème puisque les pions sont immuables.

Par contre
Code:
Pion[][] pionss = ...
Pion[][] rePionss = pionss.clone()
ne copie que "la première dimension". Il est donc utile de faire un clone de chaque ligne ensuite, sinon vous êtes dans le jus.

_________________
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: LAJ 1 (projet) le main du jeu de dame.

Message  karemkadidola le Ven 23 Avr 2010, 19:03

pbt a écrit:
ne pose pas de problème puisque les pions sont immuables.

Monsieur, je ne comprends pas pourquoi vous dites que les pions sont immuables...

karemkadidola

Nombre de messages : 244
Prénom : aimé
Date d'inscription : 13/10/2009

Revenir en haut Aller en bas

Re: LAJ 1 (projet) le main du jeu de dame.

Message  mba le Ven 23 Avr 2010, 21:08

karemkadidola a écrit:
pbt a écrit:
ne pose pas de problème puisque les pions sont immuables.

Monsieur, je ne comprends pas pourquoi vous dites que les pions sont immuables...

Un Pion est un objet qui n'a pas de méthodes publiques permettant de le modifier.

Si lors d'un clone on partage une référence à un objet, on donne la possibilité de le modifier au moyen de ses méthodes publiques.
Si mon Pion avait une méthode setDame, et que le clone donnait l'adresse des pions du jeu, on pourrait facilement promouvoir un pion du jeu à Dame sans passer par la méthode Jouer.

monJeu.getEtat().getPion(l,c).setDame();

mba

Nombre de messages : 1493
Statut : prof
Localisation : Lessines
Date d'inscription : 07/10/2006

Revenir en haut Aller en bas

Re: LAJ 1 (projet) le main du jeu de dame.

Message  karemkadidola le Sam 24 Avr 2010, 17:36

Okay je vois maintenant!! merci

karemkadidola

Nombre de messages : 244
Prénom : aimé
Date d'inscription : 13/10/2009

Revenir en haut Aller en bas

Re: LAJ 1 (projet) le main du jeu de dame.

Message  Contenu sponsorisé Aujourd'hui à 05:27


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