IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement 2D, 3D et Jeux Discussion :

Jeu de gestion en java


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 263
    Points : 255
    Points
    255
    Par défaut Jeu de gestion en java
    Bonjour, je suis en train d'essayer de faire un petit jeu de gestion de colonie marsienne...
    J'ai plusieurs questions:

    pour la sélection d'un batiment/bouton je ne sais pas quelle technique choisir:
    - mettre tout mes objets dans une liste, et lorsque je clique, je parcours la liste et je teste pour savoir si la position du clic est au-dessus du batiment voulu.

    - mettre mes objets dans un tableau qui représente le terrain, une fois que je clique, je calcule la case que le joueur à voulu sélectionner ( (clickX / largeur_d_une_case) pour connaitre la colonne...)

    - assigner à chacun des objets selectionnable un MouseListener qui me permettrai de savoir quand la souris est au-dessus du batiment


    chacune de ses technique à des inconvéniants: la première peut-être la plus lente (chaque fois, passer la quasi-totalité des éléments en revue)
    la deuxième demande beaucoup d'espace de mémoire si je veux un tableau de 1000*1000 unités (ou un batiment peut prendre plus qu'une unité de place)
    et la troisième demanderai à ce qu'à chaque élément selectionnable soit associé un composant...



    et au passage, une autre question: pour l'affichage des éléments, j'utilise uniquement des simples rectangles (je m'intéresse pas à la beauté, je m'exerce juste à la programmation) lorsque je veux afficher un rectangle via la méthode drawRect d'un java.awt.Graphics, j'utilise cette ligne de commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g.drawRect(x*scale,y*scale,length*scale, height*scale)
    où scale est un entier strictement supérieur à 0. Ainsi, celà me permet de zoomer-dézoomer. Je me suis apperçu que lorsque scale valait 1, le programme tourne plus vite que lorsqu'il est > 1. Comment celà se fait? la JVM 'saute' l'opération si on multiplie par 1?

    D'avance, je vous remercie...

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par luckyvae
    pour la sélection d'un batiment/bouton je ne sais pas quelle technique choisir:
    - mettre tout mes objets dans une liste, et lorsque je clique, je parcours la liste et je teste pour savoir si la position du clic est au-dessus du batiment voulu.

    - mettre mes objets dans un tableau qui représente le terrain, une fois que je clique, je calcule la case que le joueur à voulu sélectionner ( (clickX / largeur_d_une_case) pour connaitre la colonne...)

    - assigner à chacun des objets selectionnable un MouseListener qui me permettrai de savoir quand la souris est au-dessus du batiment
    Cela dépend de ce que tu veux faire. En supposant que tu n'as pas beaucoup d'objets, les solutions 1 et 3 sont ceux à envisager.

    Sinon ce serait plutôt la solution 2 qui serait la plus utile. A savoir, que la solution 2 sera plus facile pour gérer les collisions entre objets (lorsque tu voudras construire un batiment faudra savoir où se trouve les autres)...

    et au passage, une autre question: pour l'affichage des éléments, j'utilise uniquement des simples rectangles (je m'intéresse pas à la beauté, je m'exerce juste à la programmation) lorsque je veux afficher un rectangle via la méthode drawRect d'un java.awt.Graphics, j'utilise cette ligne de commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g.drawRect(x*scale,y*scale,length*scale, height*scale)
    où scale est un entier strictement supérieur à 0. Ainsi, celà me permet de zoomer-dézoomer. Je me suis apperçu que lorsque scale valait 1, le programme tourne plus vite que lorsqu'il est > 1. Comment celà se fait? la JVM 'saute' l'opération si on multiplie par 1?
    Est-ce que tu prends la peine de seulement dessiner ce qui est visible à l'écran, je ne me souviens plus trop de drawRect mais, à mon avis, il dessinera même si ce n'est pas dans la fenêtre...

    Jc

  3. #3
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 87
    Points : 90
    Points
    90
    Par défaut
    Je pense que ce choix dépend de pas mal de choses :

    - est-ce que tu vas pouvoir sélectionner des martiens aussi??
    - est-ce que tu veux pouvoir faire des sélection de plusieurs batiments ou unités en maintenant le bouton enfoncé?? < dans ce cas, la solution 3 risque d'être compliquée...
    - si tu veux qu'un personnage, un vaisseau ou autre contourne tout seul un batiment, la deuxième solution serait elle plus simple? ça revient à la remarque faite sur la gestion des collisions.

    Je verrais bien la solution 2 pour les batiments et la 1 pour les personnages.

    Sachant que ton tableau représentant le terrain comportera des tiles. Ensuite si tu places un batiments sur un tile tu dois le remplacer. Si tu fais ça, tu ne peux pas détruire le batiments car la case mémoire ne comportera plus le tile qui devait être en-dessous.
    Il te faut donc 2 tableaux : les tiles du terrain, les batiments.

    Si tu fais ça, le deuxième tableau sera bien vide, tu peux donc envisager de les mettres dans une liste avec leur position dans sur le terrain (le tableau de tiles) et non pas en pixels..

    Je suis p'tet pas très clair . Dsl.

    Bon courage

  4. #4
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par luckyvae
    Je me suis apperçu que lorsque scale valait 1, le programme tourne plus vite que lorsqu'il est > 1. Comment celà se fait? la JVM 'saute' l'opération si on multiplie par 1?
    Euuh 1 c'est la taille standard sans zoom ?
    C'est normal la JVM doit traiter l'image pour la zoomer ou dézoomer donc + d'opérations !

    Sans vouloir troller si tu veux faire des animations prend C++ et SDL
    J'avais développé un petit jeu avec Direct X et j'ai tenté de le mettre dans un applet.
    J'ai carrément abandonné

  5. #5
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par luckyvae
    Bonjour, je suis en train d'essayer de faire un petit jeu de gestion de colonie marsienne...
    J'ai plusieurs questions:

    pour la sélection d'un batiment/bouton je ne sais pas quelle technique choisir:
    - mettre tout mes objets dans une liste, et lorsque je clique, je parcours la liste et je teste pour savoir si la position du clic est au-dessus du batiment voulu.

    - mettre mes objets dans un tableau qui représente le terrain, une fois que je clique, je calcule la case que le joueur à voulu sélectionner ( (clickX / largeur_d_une_case) pour connaitre la colonne...)

    - assigner à chacun des objets selectionnable un MouseListener qui me permettrai de savoir quand la souris est au-dessus du batiment
    Programmation et méthodes on ne peut plus classiques
    Par contre un MouseListener pour chaque objet cela risque de ralentir l'action
    ( traitement des messages par la JVM )
    Y'a pas une méthode de graphics pour ça ? ( si click souris dans rectangle ? )

  6. #6
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 263
    Points : 255
    Points
    255
    Par défaut
    Bonjour,
    merci pour vos réponses. Je répond pas très vite du fait que je n'ai pas un accès à internet du lundi au vendredi...

    Citation Envoyé par fearyourself
    Est-ce que tu prends la peine de seulement dessiner ce qui est visible à l'écran, je ne me souviens plus trop de drawRect mais, à mon avis, il dessinera même si ce n'est pas dans la fenêtre...
    Tient, je n'avais pas pensé à ça. ça pourra me faire gagner de la vitesse...

    Citation Envoyé par fearyourself
    A savoir, que la solution 2 sera plus facile pour gérer les collisions entre objets (lorsque tu voudras construire un batiment faudra savoir où se trouve les autres)...
    Citation Envoyé par FCDB
    si tu veux qu'un personnage, un vaisseau ou autre contourne tout seul un batiment, la deuxième solution serait elle plus simple?
    En effet. Je devrai pas ainsi parcourir toute ma liste d'objet afin de savoir si je croise un autre batiment...


    Citation Envoyé par mat.M
    Sans vouloir troller si tu veux faire des animations prend C++ et SDL
    J'avais développé un petit jeu avec Direct X et j'ai tenté de le mettre dans un applet.
    J'ai carrément abandonné
    Je suis conscient qu'un langage comme java sera toujours plus lent que le C++ par exemple, mais, l'avantage, c'est que j'ai mis en place une structure de manière à avoir le code du jeu bien séparé de l'affichage sur une fenêtre ou applet, ce qui fait qu'avec le même code, je peux jouer avec un applet ou une fenêtre. Si ça vous tente, je peux vous poster ce que j'ai fait.


    Citation Envoyé par mat.M
    Programmation et méthodes on ne peut plus classiques
    Je me doute bien. Mais je vais faire classique pour commencer, puis essayer de trouver des solutions plus exotiques qui seraient mieux adaptées.

    Citation Envoyé par mat.M
    Par contre un MouseListener pour chaque objet cela risque de ralentir l'action
    ( traitement des messages par la JVM )
    Y'a pas une méthode de graphics pour ça ? ( si click souris dans rectangle ? )
    Pour le MouseListener, c'est bien ce qu'il me semble aussi...
    Quant à une méthode dans la classe graphics, je pense pas qu'il en existe (en tout cas, j'en ai jamais trouvé) Ce que je faisais avant, je récupérais la position (x,y) du click, je crée un java.awt.Point puis je teste avec la méthode java.awt.Rectangle.contains( Point a).

    Encore merci pour vos réponses...

  7. #7
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par luckyvae
    Je me doute bien. Mais je vais faire classique pour commencer, puis essayer de trouver des solutions plus exotiques qui seraient mieux adaptées.

    ..
    Attention c'était une bonne critique ; toujours rechercher les solutions les + simples possibles !

Discussions similaires

  1. Jeu de Go en Java
    Par Grand sorcier dans le forum Développement 2D, 3D et Jeux
    Réponses: 8
    Dernier message: 06/04/2007, 13h21
  2. Développement d'un jeu de poker en java.
    Par SmileAndFly dans le forum Développement 2D, 3D et Jeux
    Réponses: 15
    Dernier message: 02/04/2007, 20h02
  3. Jeu 2D / gestion de saut d'un personnage
    Par scarface56 dans le forum Physique
    Réponses: 9
    Dernier message: 23/01/2007, 10h52
  4. gestion dbase java
    Par am.adnane dans le forum JDBC
    Réponses: 1
    Dernier message: 10/10/2006, 08h05
  5. Réponses: 4
    Dernier message: 13/02/2006, 21h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo