Bonjour,
L'article programmez un Snake avec Java2D est en ligne, n'hésitez pas à poster vos avis.
Merci.
Bonjour,
L'article programmez un Snake avec Java2D est en ligne, n'hésitez pas à poster vos avis.
Merci.
Bonjour,
Je lit l'article en travers, pour apprendre a faire un affichage dans Java.
Mais j'ai remarque, dans la section "L'affichage du serpent" que le code suivant:
Le "xIndice" et "yIndice" ne necessite ni getter, ni setter, si on les met en public.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 public class Case implements Constantes { private int xIndice; private int yIndice; public Case(int xIndice, int yIndice) { this.xIndice = xIndice; this.yIndice = yIndice; } // indice horizontal public void setIndiceX(int x) { this.xIndice = x; } // indice horizontal public int getIndiceX() { return this.xIndice; } // indice vertical public void setIndiceY(int y) { this.yIndice = y; } // indice vertical public int getIndiceY() { return this.yIndice; } // coordonnée horizontale en pixels public int getX() { return this.xIndice * CASE_EN_PIXELS; } // coordonnée verticale en pixels public int getY() { return this.yIndice * CASE_EN_PIXELS; } public int getLargeur() { return CASE_EN_PIXELS; } public int getHauteur() { return CASE_EN_PIXELS; } }
En fait, si vous faites un getter et setter ... pourquoi ne pas mettre en public? car cela reviendrai au meme (sauf que vous gagnez un appel, et puis vous faites votre code encore plus lisible)
Voila tout![]()
Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi
Ma page sur DVP
Mon Portfolio
Qui connaît l'erreur, connaît la solution.
L'ajout de getter/setter pour l'attribut d'une classe fait partie des bonnes pratiques fortement répendu dans le monde java.
Ces pratiques ne sont pas forcément très utiles dans tous les cas mais ont le mérite de produire un code qui est toujours semblable d'un projet à l'autre et qui par conséquent, sera plus facilement lisible et maintenable (surtout lorsque l'on doit reprendre le code d'autre personne) lorsque ces pratiques sont partagé par le plus grand nombre.
Tu n'as pas prévu une version pdf de ton article ?
Thierry Leriche-Dessirier
Consultant Java JEE Web Agile freelance
Rédacteur pour Developpez
Professeur de Génie Logiciel à l'ESIEA
Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche
Bonjour,
Et bien non... l'article à été directement écrit en HTML.
Ah bon ? Sans passer par l'éditeur ? pourquoi ?
Thierry Leriche-Dessirier
Consultant Java JEE Web Agile freelance
Rédacteur pour Developpez
Professeur de Génie Logiciel à l'ESIEA
Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche
Alors je viens carrément de dévorer ton article et je trouve qu'il est super. Toutefois j'ai quelques propositions que j'espère constructives.
* Utilise du franglais : "estValide" --> "isValide"
* Utilise les enum pour éviter de faire des switch, par exemple dans la méthode getNextCase() je te propose un truc du style :
Et c'est dans l'enum que tu fait le cas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 private Case getNextCase() { Case tete = ... Case next = this.direction.getNext(tete); }
* Pense à factoriser ton code, ex: even.getKeyCode()...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 enum Direction { VERS_LE_HAUT(0, 1); VERS_LA_DROITE(1, 0), VERS_LE_BAS(0, -1), VERS_LA_GAUCHE(-1, 0); final int horizontalChange; final int verticalChange; public Direction(int horizontal, int vertical) { this.horizontalChange = horizontal; this.verticalChange = vertical; } public Case getNext(final Case old) { return new Case(old.getXIndice() + horizontalChange, old.getYIndice() + verticalChange); } }
* Tu lance getNextCase() trop de fois. Ca devrait être lancé une seule fois.
* C'est quoi les valeurs 2 et 4 dans la méthode affichage() de grenouille ?
* Perso j'aurais utilisé des exceptions pour le game over, genre GameOverException, et éventuellement j'aurais créé SerpentMortException extends GameOver et BordureException extends GameOver...
Et surtout :
* une grenouille, c'est plutôt vert, non ?
Thierry Leriche-Dessirier
Consultant Java JEE Web Agile freelance
Rédacteur pour Developpez
Professeur de Génie Logiciel à l'ESIEA
Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche
3 points encore :
* Pourrais-tu expliquer un peu pourquoi 40fps ?
* A chaque itération de la boucle, tu appelles repaint() et si j'ai bien compris, ça va donc vider l'écran (ie. la zone d'affichage du jeu) puis tout redessiner. Comment faire pour ne dessiner que les pixels qui ont changé ?
* Dans l'article tu te mélanges entre getXIndice et getIndiceX... Je suppose que tu as du le réécrire en cours de route.
Thierry Leriche-Dessirier
Consultant Java JEE Web Agile freelance
Rédacteur pour Developpez
Professeur de Génie Logiciel à l'ESIEA
Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche
Bonjour,
Merci de t'intéresser à mon travail, et pour tes remarques pertinentes.
Et bien merci, ça fait plaisirs
De quel éditeur parle-tu ? J'ai l'habitude d'écrire du HTML/CSS et cela ne me pose pas de problème.
D'expérience, c'est une bonne vitesse pour pouvoir faire des animations sympa.
Il existe une méthode repaint avec des arguments permettant de spécifier une zone à repeindre. Mais dans le cas présent, cela n'offre pas d'intérêt pratique.
Oui, l'article a été réécrit plusieurs fois, de même que le code, et c'est une erreur que je corrigerais, merci.
Oui, c'est encore une erreur. J'ai fait l'effort d'écrire des noms de méthode en français, j'ai plus l'habitude de les écrire en anglais. Pareil, le changement a été incomplet, je corrigerais aussi.
Ca ne changerait pas grand chose, mais le code est plus clair me semble-t-il avec un simple switch...
Je suis d'accord, mais dans ce cas, cela n'a pas d'importance, c'est une optimisation.
Toujours d'accord, mais c'est aussi une optimisation. Bon, elle est grosse celle là, j'en conviens.
C'est pour afficher un rectangle plus petit que ceux du serpent, pour une raison esthétique lorsque la grenouille apparait sur le serpent. Mais j'aurais pu écrire une phrase pour le dire.
Je ne suis pas d'accord. Les exceptions ne sont pas faites pour gérer le flux "naturel" du programme.
Lol. Hé bien je suis daltonien, alors je pense toujours que les autres le sont aussiA moins que ce ne sois par anti-conformisme
![]()
Je parle de l'éditeur d'article de developpez, qui permet de générer automatiquement le layout et le pdf, etc.
Pour le switch, l'idée est surtout d'éviter de faire un switch, d'autant que le code peut être déterminé par simple calcul.
Pour le 2 et le 4, du coup tu peux faire une constante comme pour la taille du serpent
Pour les exceptions, je te propose un DepassementDeBordureException completée par un GameOverEvent
Thierry Leriche-Dessirier
Consultant Java JEE Web Agile freelance
Rédacteur pour Developpez
Professeur de Génie Logiciel à l'ESIEA
Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche
Cet outil, malheureusement, semble ne pas fonctionner avec Eclipse/Linux (ou certaines config), d'autres personnes ont le même problème. Apparemment, il n'y a pas de solution postée sur le forum. Pour le moins, je n'ai pas eu envie de passer trop de temps sur ce point, sans garantie de fonctionnement à la clef. En outre, l'article existait déjà en HTML.
Oui, ta façon de faire est sans doute meilleure. Mais en revanche je trouve l'utilisation du swicth plus simple : l'article s'adresse aussi à ceux qui débutent. Comme cela ne remet aucunement le fonctionnement du jeu en question, et que l'utilisation du switch n'est pas abominable, je préfère que le code reste le plus simple possible.
Bonjour visiwi,
J'ai parcouru un peu ton article, c'est très intéressant et bien écrit. Les illustrations sont placées au bon endroit.
C'est dommage que tu ne puisses pas utiliser les outils pour placer ton article sous le gabarit Developpez.com.
Mickael
Responsable Java de Developpez.com (Twitter et Facebook)
Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
--------
Ingénieur de Recherche en informatique au LIAS / ISAE-ENSMA
Page de Developpez.com : mbaron.developpez.com
Twitter : www.twitter.com/mickaelbaron
Blog : mickael-baron.fr
LinkedIn : www.linkedin.com/in/mickaelbaron
DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l
Partager