CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Java]Design pattern

drew6
drew6
Niveau 3
05 juin 2014 à 10:43:55

Bonjour à tous !

1)qu'est ce qu'une entityComponent, à quoi sa sert et comment l'utiliser ?

2) je n'ai pas tres bien compris l'utilité des factory,un exemple concret pour un jeu par example

3)(Sans rapport avec les DP) je n'arrive pas à trouver la solution pour ce code, j'ai trové le probleme mais pas la solution, je fait un editeur de map MarioSokoban
http://pastebin.com/kZfcZB80

Merci

Bunyan sort de ton trou :noel:

Bunyan
Bunyan
Niveau 17
05 juin 2014 à 13:30:49

Merci d'avoir posté tes questions en public plutôt qu'en privé :p

1 :d) EntityComponent, première fois que je lis ce terme. Je peux difficilement aider dessus. De ce que je comprends, c'est un méta-pattern d'archi, cousin du MVC, qui semble se rapprocher du développement par aspect, domaine que je ne connais que très peu.
Là, pour le coup, à part rediriger vers la page Wikipedia (qui m'a l'air pas trop mal) je ne peux pas faire beaucoup plus : https://en.wikipedia.org/g/wiki/Entity_component_system

2 :d) Le pattern Factory est double. Tu as la Factory créatrice d'objet. C'est très utile pour créer des objets plus ou moins identique, ou avec une base commune. La seconde est plutôt réservé pour les projets complexes ayant besoin d'une bonne dose d'abstraction et de spécialisation.
Documentation : http://rpouiller.developpez.com/tutoriel/java/design-patterns-gang-of-four/?page=page_2#LIV-A

Un exemple pour les JV serait de faire un truc : Monster.createPopCorn(); Monster.createBoss();
Créant des monstres initialisés à certains niveaux de puissance avec divers facteurs.

3 :d) Je ne peux lancer ton code, je n'ai pas les images (et n'ai pas envie d'en créer des fausses pour l'occas'). Que se passe-t-il quand tu remplaces tes couples de coordonnées par X et Y ? Tu as une mauvaise correspondance coordonnées souris / zone ?

drew6
drew6
Niveau 3
05 juin 2014 à 14:38:40

Merci Bunyan :)

l'ECS (entityComponentSystem) c'est un design pattern qui permet d'eviter l'heritage, je sais juste ca :hap: , enfaite je crois que c'est un moyen de profiter de l'heritage mais sans l'utiliser ce qui est vraiment utile,car les heritages multiple n'existe pas en java.

2)Pour le factory merci , je commence à comprendre un peu :ok: je vais essayer de l'utiliser.

3) Alors voila pour l'editeur de map enfaite si je met x et y et bien le bloc va se poser à l'endroit ou je clique mais si je change de bloc et que je pose le block dans un autre endroit et bien le bloc precedent disparais,c'est tout à fait logique car X et Y sont variable elles ne sont pas fixe elles sont declenché dans l'evenement du keypressed et genre si il ya un autre evenment les cooordonées sont remplacé par les nouvelles coordonées de l'evenement ce qui fait que le bloc precedent disparait :ok: j'ai etudiez le probleme et je l'ai compris maintenant j'ai besoin de ton aide pour le resoudre car j'ai beau me creuser la tete je ne sais pas comment faire pour que ces Block reste, je n'arrive à faire de X et Y des variables fixe et en meme temps des variables d'evenements.

j'espere que tu vois ou est le probleme maintenant :)

Merci

Bunyan
Bunyan
Niveau 17
05 juin 2014 à 17:10:14

1 :d) Je n'ai actuellement pas le temps de creuser le sujet :/
Je me le note pour ne pas oublier.

2 :d) La seconde Factory est assez particulière à utiliser, et je ne pense pas que tu aies à le faire. Attarde-toi surtout sur l'Abstract et comprends-là bien.

3 :d) Hum, de ce que tu racontes, et au vu de ton code, le problème ne se situe pas où tu le pense, mais tu l'as tracé.
La cause de ton problème est de n'avoir qu'une seule instance de "bloc". Tu utilises toujours la même, donc poser un second bloc sera en fait remplacer le premier, vu que le second est le premier (ouais... c'est pas méga clair, mais l'idée y est).
Il ne faut pas réutiliser la même instance, mais ajouter un bloc en plus de ceux déjà existant, donc passer par une Collection.

Nota : attentions aux conventions Java :)
Les noms de package sont en minuscules.
Les noms de classes respectent le UpperCamelCase : débutent par une majuscule, chaque nouveau mot débute par une majuscule.
Les noms de variables respectent le lowerCamelCase : débutent par minuscule, chaque nouveau mot débute par une majuscule.
Les noms de constantes sont en MAJUSCULE_AVEC_SEPARATEUR.
Les noms doivent être parlant.

A côté de ça, pense bien à utiliser les generics pour tes Collections :)

[-Shana-]
[-Shana-]
Niveau 10
05 juin 2014 à 21:08:04

l'ECS (entityComponentSystem) c'est un design pattern qui permet d'eviter l'heritage, je sais juste ca :hap: , enfaite je crois que c'est un moyen de profiter de l'heritage mais sans l'utiliser ce qui est vraiment utile,car les heritages multiple n'existe pas en java.

:d) Presque. ça permet de faire abstraction de la spécialisation des classes. L'exemple le plus concret qui soit : http://uploads.gamedev.net/monthly_04_2013/ccs-191538-0-23879000-1364824618.png

Après c'est une autre façon de programmer objet que je trouve plus utile et rapide que l'héritage en soit. De plus, les plus gros jeux AAA commencent eux aussi à l'utiliser, donc pourquoi pas nous... :) .

drew6
drew6
Niveau 3
05 juin 2014 à 22:28:35

Merci Shana :)

1) imaginons que j'ai ma classe EvilTree je suppose que logiquement elle doit etre herité de tree et Ennemy ce qui est impossible en java,l'heritage multiple n'existe pas, donc c'est la ou l'ECS entre jeu donc maintenant j'aimerai savoir comment en fait "herité" cette classe sans l'herité ( :noel: ) en utilisant l'entity component dans le constructeur en faisant une surcharge ? je crois que je commence à realiser son efficacité :noel:

2) je parlais juste du pattern factory creatrice d'objet,je la trouve interessante :) , l'autre je n'ai rien compris :noel:

3)Bon et pour l'editeur de map merci beaucoup bunyan tu as trouvé la solution,c'etait exactement sa le probleme :ok:
mais j'utilise deja des collections,sinon j'ai solution,je fais une classe Items et genre dedans je fous toute les images des items avec des attributs privés, cette classe contiendra un draw avec une surcharge de l'object graphic et apres dans l'editor je fais une collection genre linkedlisr et jla met en generic ca donner LinkedList<Item> a=new Linkedlist<Item>(); et puis quandje veux ajouter je fais une methode addItems(Item e) qui contiendra une surcharge de la classe item puis dedans j'ajoute add(e) et apres dans quand j'utliserai cette methode je ferais a.addItems(new Items(1));
et ensuite dans le constructeut de la classe item je ferai

public Item(int nb){

switch(nb){

case 1:

//l'image sera donc le mur

breal;

//etc
}

}

qu'est ce que vous en pensez ? , j'ai hate d'essayer sa demain :noel:

[-Shana-]
[-Shana-]
Niveau 10
05 juin 2014 à 22:54:49

1) imaginons que j'ai ma classe EvilTree je suppose que logiquement elle doit etre herité de tree et Ennemy ce qui est impossible en java,l'heritage multiple n'existe pas, donc c'est la ou l'ECS entre jeu donc maintenant j'aimerai savoir comment en fait "herité" cette classe sans l'herité ( :noel: ) en utilisant l'entity component dans le constructeur en faisant une surcharge ? je crois que je commence à realiser son efficacité :noel:

:d) Oublie l'héritage. Tu attaches ce qu'on appelle des components à tes entités (Qui sont en soit des classes ultra simple comprenant en gros quelques voir qu'une seule valeur), et le tout est géré par un system, c'est lui qui va faire la logique de ton entité en se basant sur ses components :) .

drew6
drew6
Niveau 3
05 juin 2014 à 23:31:20

ok mais tu n'as pas repondu à ma question comment en code sa , juste un petit exemple tres simple pour comprendre le principe.
:)

Bunyan
Bunyan
Niveau 17
06 juin 2014 à 00:08:27

Merci pour les précisions [-Shana-] (ton pseudo me donne envie de refaire Legend of Dragoon...).

D'accord... donc si je comprends bien, le "entity component" n'est qu'un autre nom du pattern decorator en fait.
Pourquoi on a toujours besoin de renommer les trucs dans l'informatique ? x)

JustinienPibrac
JustinienPibrac
Niveau 10
06 juin 2014 à 11:25:28

"Bunyan Voir le profil de Bunyan
Posté le 6 juin 2014 à 00:08:27 Avertir un administrateur
Merci pour les précisions [-Shana-] (ton pseudo me donne envie de refaire Legend of Dragoon...). "

Le tien me donne envie de refaire Breath of Fire 3 :hap:

/hs

drew6
drew6
Niveau 3
06 juin 2014 à 14:16:49

Attention le hs,on est sur un sujet serieux la :noel: , enfin bref, j'ai regardé le design pattern decorator et tu as raisn c'est exactement l'entityComponent, enfaite je crois que dans le domaine du jeux video en utilise "entity component" et le reste pattern decorator.

[-Shana-]
[-Shana-]
Niveau 10
06 juin 2014 à 15:12:39

ok mais tu n'as pas repondu à ma question comment en code sa , juste un petit exemple tres simple pour comprendre le principe.
:)

:d) Perso j'utilise une lib qui fait les 3/4 pour moi : http://gamadu.com/artemis/

drew6
drew6
Niveau 3
06 juin 2014 à 20:28:50

Ok, pour mon idée sur mon probleme alors qu'est ce que vous en pensez ?

:d) 3)Bon et pour l'editeur de map merci beaucoup bunyan tu as trouvé la solution,c'etait exactement sa le probleme :ok:
mais j'utilise deja des collections,sinon j'ai solution,je fais une classe Items et genre dedans je fous toute les images des items avec des attributs privés, cette classe contiendra un draw avec une surcharge de l'object graphic et apres dans l'editor je fais une collection genre linkedlisr et jla met en generic ca donner LinkedList<Item> a=new Linkedlist<Item>(); et puis quandje veux ajouter je fais une methode addItems(Item e) qui contiendra une surcharge de la classe item puis dedans j'ajoute add(e) et apres dans quand j'utliserai cette methode je ferais a.addItems(new Items(1));
et ensuite dans le constructeut de la classe item je ferai

public Item(int nb){

switch(nb){

case 1:

//l'image sera donc le mur

break;

//etc
}

}

drew6
drew6
Niveau 3
07 juin 2014 à 15:51:00

down :noel:

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment