queqtion sur image.gif - Divers - Programmation
Marsh Posté le 21-04-2014 à 11:51:00
pilaau a écrit : Bonjour, |
Plusieurs approches existent, par exemple un unique Canvas ou composant sur lequel on dessine les 8x8 cases et les pièces.
Mais pour moi, la solution la plus simple est d'utiliser un layout qui va gérer directement. Par exemple un GridLayout pour le damier et un JLabel pour afficher les images. L'inconvénient est que les images ne sont pas redimensionnées si on modifie la taille de la fenêtre.
Code :
|
Sinon, une solution possible est de créer une classe qui hérite de JPanel et de dessiner sur le composant.
On a un GridLayout composé de 8x8 JPanel sur lesquels on dessine. Par exemple quelque chose comme le squelette suivant :
Code :
|
Pas de problème de redimensionnement si l'on effectue les calculs.
Marsh Posté le 21-04-2014 à 16:36:57
Bonjour,
Merci Honrisse,
Mais, il va me falloir un peu de temps (2, 3 jours)pour exploiter ta réponse, n'étant pas encore très familier de la programmation graphique en java.
Dans tous les cas je te tiendrais au courant.
Juste une petite question, quand tu dis "dessiner", tu veux dire, placer une image récupérée quelque part ?
Merci à nouveau,
Philippe
Marsh Posté le 21-04-2014 à 17:26:46
pilaau a écrit : |
Par dessiner, je veux dire que l'on manipule directement les coordonnées pour placer les images plutôt que d'utiliser un layout par exemple, même si l'on peut faire les deux comme dans le 2e exemple (GridLayout + redéfinitition de paintComponent).
Marsh Posté le 21-04-2014 à 17:54:27
Bonjour,
Merci Honrisse,
J'ai cherché à exploiter de façon "liminaire" tes réponses, j'ai écarté ta deuxième proposition, ne connaissant pas Graphics2D,
j'ai donc choisis la première proposition, j'ai cherché à la compiler en ligne de commande, j'ai imaginer que le fichier s'appelait "Main.java" ??
La compilation est bien passée,
Mais à l'exexcution,
java main, j'ai eu :
|
Quelle erreur sis bien pu faire ?
Hypoyhèse :je déduis habituellement le nom des fichier depuis le nom de la classe principale, ici, je n'ai trouvé que Main.
S'il s'agit d'un piège du labyrinthe de OSX, je compterais que tu préfère te laisser du temps.
Merci,
Pilaau
Marsh Posté le 21-04-2014 à 17:58:03
je voulais dire " je comprendrais que tu veuilles te laisser du temps"
Désolé !
Pilaau
Marsh Posté le 22-04-2014 à 08:11:54
pilaau a écrit : Bonjour,
|
Cela semble être un problème de chemin d'accès des images :
Code :
|
J'utilise getResource http://docs.oracle.com/javase/tuto [...] /icon.html et mes images sont comme ceci :
Pas très important mais je conseille l'IDE Eclipse, ça permet quelques facilités (auto complétion, soulignement des erreurs, ...).
Marsh Posté le 22-04-2014 à 12:17:27
Bonjour,
J'ai suivi ton conseil, j'utilise eclipse avec :
Create a Hello World SWT application
Voici le dource que j'ai crée :
Code :
|
et j'ai droit à un panneau vide (une fenêtre sans rien,)
Je pense que tu as raison, c'est bien le probleme d'importation d'image, le chemin,
J'ai cherché sur le net pour récupérer des jeux d'images d'échecs, je n'y arrive pas et j'ai l'impression que ce que fais, c'est tout juste ça, je ne met aucune image à l'endroit indiqué par le chemin.
Si je veux faire un programme qui m'affiche une image du net dans une fenêtre, j'y arrive, je m'amuse en ce moment avec des images hypnotiques,
mais là, je ne sais pas faire.
Pilaau
P.S.
Dans eclipse : create a hello world SWT application n'est-il pas un mauvais choix ?
Marsh Posté le 22-04-2014 à 12:54:36
pilaau a écrit : |
J'utilise Eclipse IDE for Java Developers et ensuite New > Java Project.
Je ne connais pas SWT.
Pour les images des pièces, je les ai trouvé là : http://www.iconarchive.com/tag/chess et en plus classique il y a aussi : https://en.wikipedia.org/wiki/Chess#Rules (en cliquant sur les pièces on a les images png : https://en.wikipedia.org/wiki/File:Chess_rdt45.svg) ou sinon http://www.virtualpieces.net/icons.
Qu'est ce que cela donne en utilisant le chemin absolu vers les images sans getResource ?
Code :
|
Marsh Posté le 22-04-2014 à 21:11:26
Bonjour,
Je te remercie, j'ai enfin mon échiquier, avec les pièces prise sur le site que tu m'as indiqué.
Je n'ai pas utilisé eclipse pour programmeur java, il me joue les pires des tours et à l'installation, je dois zapper l'installation de tas de fichiers qui demandent un mot de passe.
A la question peut-on le faire sans GetRessource, en indiquant le chemin absolue, oui.
Merci encore et peut-être à +, j'espère
Pilaau
Marsh Posté le 22-04-2014 à 22:24:39
Je reprend la main :
voici donc ce code que j'ai eu tant de mal à écrire !
Code :
|
Les commentaires intempestifs sur la définition des pièces me serviront à faire les 2 couleurs pour chaque camp.
Pilaau
Marsh Posté le 25-04-2014 à 02:33:22
Rebonjour,
Je ne souhaitais pas te brancher à nouveau sur mon problème, mais à la lecture d'un post qui ressemblait un peu au mien, je me suis rappelé que je ny étais pas arriver :
Je te propose mon code,
si tu vois quelque chose de notoire, n'hésites pas en me le dire !!!
Code :
|
Peut-être à bientôt, merci !
Pilaau
Marsh Posté le 25-04-2014 à 09:33:41
pilaau a écrit : Rebonjour,
|
L'agencement des classes n'est pas bon (la classe principale est ici GridCell avec une classe interne Main). Le mieux pour débuter est de garder une classe par fichier.
La méthode statique public static void main(String[] args) est le point d'entrée du programme (s'il y en a plusieurs, Eclipse demande à choisir lequel exécuter), elle ne peut pas être dans une classe interne.
La méthode private void paintComponent(Graphics g) redéfinie le comportement du "dessin" du composant et ne peut pas appartenir à la classe Main mais à GridCell qui hérite ou étend la classe JPanel qui elle-même hérite de la classe JComponent.
Comme on peut le voir ici : http://docs.oracle.com/javase/7/do [...] Panel.html, tout est basé sur le concept d'objet en Java (toutes les classes héritent d'Object, sans exceptions).
Citation : |
J'ai essayé de mettre des commentaires :
Code :
|
Code :
|
Je mets en lien un tutoriel sur Java et les gui : http://jmdoudoux.developpez.com/co [...] /index.php et http://jmdoudoux.developpez.com/co [...] artie2.php
Je ne connais pas Mac OS mais pour Windows, Eclipse est une simple archive à dézipper et il n'y a pas d'installation à faire. Eclipse est vraiment utile pour voir les erreurs de syntaxe, gérer les imports et pour avoir la documentation d'une méthode lorsqu'on laisse le curseur sur le nom d'une méthode du jdk Java par exemple.
Je mets aussi en lien un code qui affiche un jeu d'échec : https://stackoverflow.com/questions [...] -chess-gui en compléments des tutoriels.
Marsh Posté le 25-04-2014 à 11:19:32
Merci,
Je pensais avoir compris, au début, j'affichais les pièces, mais quand j'ai voulu les placer dans un échiquier, ça a été catastrophique.
Je vais faire attention à ta réponse, c'est plus difficile pur moi que prévu, (je suis autodidacte en java), mais avec un DUT informatique (sans java scolaire).
Je ferais en sorte de de ne te joindre que lorsque que j'aurais enfin réussi (et à comprendre tout cet ensemble).
Encore merci,
Philippe
Marsh Posté le 21-04-2014 à 01:39:29
Bonjour,
Je souhaite reprendre la programmation d'un jeu d'échecs.
Le premier, je l'ai interrompu à une finale roi+cavalier <-->roi +cavalier, il jouait tout seul, sans s'interrompre, en effet pas de mat pour cette finale.
Pourquoi me suis-je arrêter ?
Je programmais le dessin des pièces en utilisant les API de Windows du livre de Petzold ("Remarquable, ceci dit" ), vous voyez, c'est pas d'hier.
Mais c'est abominablement pénible de faire comme ça.
Alors, voila ma question :
Si je récupère les images des pièces d'échec en .gif ou .jpeg (je programme en java), comment les placer à un endroit précis de l'échiquier, et changer leurs dimensions, si elles sont trop grandes ou trop petites.
J'ai fait un programme qui récupère via un menu des images et les affiche, mais telles qu'elles existent, et là où le gestionnaire de positionnement choisit doit les placer,
auriez vous un conseil,
Merci,
Pilaau