JEU D'ÉCHEC

cs_mulambasylvain Messages postés 6 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 24 juillet 2011 - 7 janv. 2011 à 15:13
 anonymous - 1 sept. 2018 à 01:04
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52698-jeu-d-echec

personnelement, je trouve que la programmation POO réalisée certes est très bien, mais niveau très débutant.
l'utilisation de la méthode MVC sera très recommandé (extraire la logique du jeu depuis la vue)
Bonjour,
Comment ajouter le roque svp ?
et interdire une piece de bouger quand on est en echec ?
enfin , une horloge ?

Merci bcp
cs_loloof64 Messages postés 342 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 6 novembre 2012
10 avril 2013 à 19:06
Bonjour cedric59500, le plus simple serait (étant donné que c'est un projet Eclipse) de télécharger le programme Eclipse (version pour les développeurs Java), d'importer le projet dans Eclipse, puis de lancer avec la commande Run. Si tu n'y arrives pas, je pourrais t'aider (éventuellement par MP histoire d'éviter de "flooder" la discussion du projet).
bonjour comment compiler vous car j'utilise le terminal mais il me met cela comme erreur
Exception in thread "main" java.lang.NoClassDefFoundError: TestEchecsPartie2/class
Caused by: java.lang.ClassNotFoundException: TestEchecsPartie2.class
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
22 mai 2011 à 00:57
pour la note(pas l habitude) ;o)
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
22 mai 2011 à 00:55
Ce programme à le mérite d'etre bien commenté ;o) ...
Pour la valeur du prog : null, sans IA la source a trop peu d'intéret...

Pour le code: il est un peu fait à l'envers ;o) ... beaucoup trop de code dans l'adapter et pas asser dans les autres class l'utilisation des mécanisme MVC aurraient été tout à fait adapté à ce genre de programme...
les class ne sont pas trop mal sentie et chacune d'elle devrait donc avoir son renderer et son model de donné.. ;o) je ne vois donc pas trop l'utilité de la class Deplacement!!?
pour ce qui est de l adapter ;o) l'utilisation de "instanceof" n'est en effet as tres heureuse ;o) ... j ai apris avec le temps et les differente version java ;o) à ne pas faire confiance à cette fonction ;o) ... il vaut mieu utiliser les mécanismes objet ;o)... et positionner une méthode au niveau de la classe piéce par exemple ;o) ...

Bonne note qd meme ;o) ... C'est pas si mal ;o)
cs_loloof64 Messages postés 342 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 6 novembre 2012
27 janv. 2011 à 19:24
Salut Provenzano24, content de remarquer que quelqu'un partage mon avis sur les énumérations :)
provenzano24 Messages postés 12 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 28 janvier 2009
27 janv. 2011 à 11:18
Salut,

bien bien tout ça

juste un truc que j'aime pas dans ton code, c'est de faire des "instance of" pour vérifier
le type d'une classe
Vu que toutes tes pièces étendent la classe "Piece", tu peux avoir un attribut
Protected TypePiece qui est une énumeration des differents types de pièce, et pour chaque pièce une méthode qui retourne son type

ca évite de faire l'instance of, et a la place, tu peux faire un truc genre
if (piece.getType==TypePiece.ROI) ...

@+
frankladen11 Messages postés 14 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 23 janvier 2010
10 janv. 2011 à 17:04
Oui il y aurait moyen, mais je ne le ferais car ou est le plaisir de programmer si l'on ne fatvquebrecuperere du coee deja produit par d'autre :p je prefere et de loin tout faire moi meme
cs_loloof64 Messages postés 342 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 6 novembre 2012
10 janv. 2011 à 09:17
Je te rassure : moi non plus :D
Mais il doit sûrement avoir un moyen de récupérer des algotihmes à partir d'autres sources
frankladen11 Messages postés 14 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 23 janvier 2010
10 janv. 2011 à 05:51
eh bien, je ne connaissais pas ce coup hacha

Pour se qui est de l'intelligence artificielle, le projet n'était que de représenter le fonctionnement d'un jeu d'échec, coder un intelligence artificielle est d'un tout autre niveau que je n'ai pas atteint !
cs_loloof64 Messages postés 342 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 6 novembre 2012
8 janv. 2011 à 20:58
Merci pour les images :)

La prise en passant c'est quand un pion avance de deux cases directement à partir de sa position de départ, alors qu'un pion adverse aurait pu le manger s'il n'avait avancé que d'une case

Je pense qu'ici ce sera mieux expliqué que moi :
http://echec.jeu.free.fr/regles/speciaux.php#prise_en_passant
frankladen11 Messages postés 14 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 23 janvier 2010
8 janv. 2011 à 15:21
Oui tu peux utiliser les images, et c'est quoi au juste la prise en passant ?
kayis06s Messages postés 52 Date d'inscription jeudi 4 novembre 2010 Statut Membre Dernière intervention 3 mars 2011
8 janv. 2011 à 14:06
superbe!
9/10 aussi
cs_loloof64 Messages postés 342 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 6 novembre 2012
8 janv. 2011 à 12:37
Ah oui au fait :
-> on n'a pas le droit de déplacer une pièce quand on est en échec
-> tu ne gères pas la prise en passant
-> tu ne gères pas le roque

Sinon, tu m'autorise à utiliser tes images pour un programme personnel ?
cs_loloof64 Messages postés 342 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 6 novembre 2012
8 janv. 2011 à 12:06
Oubli de la note ( :S )
cs_loloof64 Messages postés 342 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 6 novembre 2012
8 janv. 2011 à 12:05
Salut,

J'apprécie beaucoup ta source (j'ai mis 9/10) :). Seul regret, que tu n'aies pas précisé que cela ne se joue qu'à deux joueurs (Donc que l'Intelligence Artificielle n'a pas été fournie).

Si tu veux améliorer
-> le code : sache qu'au lieu d'utiliser une String pour les couleurs, tu peux utiliser les enumérations.
(Par exemple dans la classe piece, utilise public static enum Couleur { BLANC, NOIR }. A ce moment-là, si tu figures dans une classe ou sous-classe de Piece, utilise la syntaxe Couleur.BLANC ou Couleur.NOIR pour utiliser les valeurs, et déclare des paramètres de type Couleur. Sinon, si tu es à l'extérieur de ces classes, préfixe tout cela par "Piece." => public fct1(Piece.Couleur couleur) { couleur = Piece.Couleur.BLANC; })
-> l'interface utilisateur : sâches qu'il est possible, avec un peu de tatônements, de changer le texte et la couleur d'un Label ou JTextField, pour un laps de temps donné (au lieu de définitivement). Pour cela, utilise par exemple la méthode suivante dans ta classe FenetreJeu :
private void printDynamicMessage(final String message) {
new Thread() {
public void run() {
final int SLEEP_TIME_MILLIS = 900;
final String oldMessage = champTexte.getText();
final Color oldTextColor = champTexte.getForeground();
champTexte.setForeground(Color.RED);
champTexte.setText(message);
try {
Thread.sleep(SLEEP_TIME_MILLIS);
} catch (InterruptedException exception) {
exception.printStackTrace();
}
champTexte.setForeground(oldTextColor);
champTexte.setText(oldMessage);
}
}.start();
}
Ainsi par exemple, un appel à printDynamicMessage("Mouvement illegal !!!");, changera le contenu du JTextField en rouge et avec le texte "Mouvement Illegal !!!", et rétablira l'ancien contenu au bout de 900 millisecondes. (Si tu essaie de coder cela sans passer par un Thread, comme je l'ai fait, tu n'obtiendras pas l'effet voulu).
frankladen11 Messages postés 14 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 23 janvier 2010
7 janv. 2011 à 17:14
Et bien merci :) une note serais appréciée !
cs_mulambasylvain Messages postés 6 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 24 juillet 2011
7 janv. 2011 à 15:13
wouh, je suis debutant en Java et je t assure que ça me surpasse de voir un tel source, la conception mais tu es genialllllllllllllllllllllllll
Rejoignez-nous