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és342Date d'inscriptionvendredi 1 septembre 2006StatutMembreDerniè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és2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 22 mai 2011 à 00:57
pour la note(pas l habitude) ;o)
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 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és342Date d'inscriptionvendredi 1 septembre 2006StatutMembreDerniè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és12Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention28 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és14Date d'inscriptiondimanche 27 décembre 2009StatutMembreDernière intervention23 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és342Date d'inscriptionvendredi 1 septembre 2006StatutMembreDerniè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és14Date d'inscriptiondimanche 27 décembre 2009StatutMembreDernière intervention23 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és342Date d'inscriptionvendredi 1 septembre 2006StatutMembreDerniè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
frankladen11
Messages postés14Date d'inscriptiondimanche 27 décembre 2009StatutMembreDernière intervention23 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és52Date d'inscriptionjeudi 4 novembre 2010StatutMembreDernière intervention 3 mars 2011 8 janv. 2011 à 14:06
superbe!
9/10 aussi
cs_loloof64
Messages postés342Date d'inscriptionvendredi 1 septembre 2006StatutMembreDerniè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és342Date d'inscriptionvendredi 1 septembre 2006StatutMembreDernière intervention 6 novembre 2012 8 janv. 2011 à 12:06
Oubli de la note ( :S )
cs_loloof64
Messages postés342Date d'inscriptionvendredi 1 septembre 2006StatutMembreDerniè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és14Date d'inscriptiondimanche 27 décembre 2009StatutMembreDernière intervention23 janvier 2010 7 janv. 2011 à 17:14
Et bien merci :) une note serais appréciée !
cs_mulambasylvain
Messages postés6Date d'inscriptionmercredi 14 avril 2010StatutMembreDernière intervention24 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
1 sept. 2018 à 01:04
l'utilisation de la méthode MVC sera très recommandé (extraire la logique du jeu depuis la vue)
29 avril 2013 à 18:36
Comment ajouter le roque svp ?
et interdire une piece de bouger quand on est en echec ?
enfin , une horloge ?
Merci bcp
10 avril 2013 à 19:06
10 avril 2013 à 17:27
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)
22 mai 2011 à 00:57
22 mai 2011 à 00:55
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)
27 janv. 2011 à 19:24
27 janv. 2011 à 11:18
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) ...
@+
10 janv. 2011 à 17:04
10 janv. 2011 à 09:17
Mais il doit sûrement avoir un moyen de récupérer des algotihmes à partir d'autres sources
10 janv. 2011 à 05:51
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 !
8 janv. 2011 à 20:58
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
8 janv. 2011 à 15:21
8 janv. 2011 à 14:06
9/10 aussi
8 janv. 2011 à 12:37
-> 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 ?
8 janv. 2011 à 12:06
8 janv. 2011 à 12:05
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).
7 janv. 2011 à 17:14
7 janv. 2011 à 15:13