Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Qt] Quelle méthode utiliser pour afficher une map ?

    3 avril 2008 à 10:20:19

    Salut à tous,

    J'imagine que cette question a déjà été posée 1000 fois mais de tout ce que j'ai lu sur le forum ça correspond souvent pas à ce que je dois faire.

    Un bref exposé de la situation :

    Je dois réaliser un jeu avec Qt qui met en scène des pingouins sur la banquise (une map faite d'hexagones) qui doivent se déplacer sur celle-ci pour attraper des poissons.

    Ceci étant dit, passons à mes compétences, disons que j'assimile assez vite tout ce que j'essaie d'apprendre donc c'est bien mais ça n'empêche que je viens de commencer Qt parce qu'on a eu aucun cours là-dessus (j'ai réussi à faire ça : www.ixamaxi.be/release.rar je donne pas le code source parce que comme c'est un projet pour l'université, j'ai pas envie qu'on me pique trop mes supers idées :-° ).

    Passons maintenant à la question proprement dite :

    J'aimerais savoir quelle est la meilleure solution pour afficher ma map. En effet, la vue en 2D de haut ne me convient pas tellement vu qu'on va pas voir grand chose en fait donc j'aimerais quelque chose d'autre.

    J'ai pensé à la 3D (en utilisant OpenGL par exemple) mais comme j'ai jamais fait quoi que ce soit qui y ressemble, j'aurais voulu savoir si c'était dur ou pas.

    Et delroth et le forum m'ont parlé ( :p ) de 3D isométrique mais ça semble poser pas mal de problèmes au niveau de la superposition des objets (bien que chez moi il ne devrait y avoir que les pingouins qui dépassent de la case) et au niveau des algorithmes de déplacement à cause du fait que ce sont des hexagones.

    Et comme question bonus, j'aurais voulu savoir si vous aviez une idée de comment je pourrais vérifier qu'un déplacement se fait bien en ligne droite dans une des 6 directions de l'hexagone. j'ai bien ma petite idée mais ça me paraît quand même un peu compliqué et j'aimerais savoir s'il n'existe pas une méthode plus facile :)

    Voilà, j'attends vos réponses avec impatience :)

    Merci beaucoup,
    `ixM
    • Partager sur Facebook
    • Partager sur Twitter
      3 avril 2008 à 15:43:59

      deja Qt est sous licence GPL donc tu doit distribuer les sources avec ton programme (he oui ^^).

      ensuite je croit avoir vu que Qt avait des outils pour faire quelque jeux.
      (http://doc.trolltech.com/4.3/)

      et pour les deplacements tu peut faire un tableau assossiatif de bool

      ex

      si la fleche du haut est appuyé,changer les position du personnage d'une case.
      si la fleche du haut et de droite sont appuyé,
      aller en diagonale.
      maintenant essaye de faire les slots et les signeaux correspondant
      • Partager sur Facebook
      • Partager sur Twitter
        3 avril 2008 à 16:48:58

        Salut,

        Euh... Là je donne juste pas les sources maintenant et je distribue le programme à personne (enfin c'est pas comme si je voulais en faire un truc mondialement connu).

        J'ai mal expliqué manifestement les déplacements.

        Le joueur peut déplacer son pingouin d'autant de case qu'il le souhaite mais en ligne droite et à condition de ne pas rencontrer d'obstacle, ce qui me pose problème c'est l'histoire de la ligne droite mais c'est pas ma question principale.

        Me donner un lien vers la doc Qt ça ne me sert à rien, ils ont pas écrit quelque chose sur le meilleur choix à faire au niveau de la vue proposée à l'utilisateur. Ce qu'il me faut c'est l'avis de gens qui ont déjà utilisé un moteur 3D avec Qt (mais même pas spécialement avec Qt en fait) pour me dire si c'est dur à faire ce que je demande.

        Merci quand même ;)
        • Partager sur Facebook
        • Partager sur Twitter
          3 avril 2008 à 18:05:26

          En fait tu veux faire de la 2D avec un semblant de "profondeur" ? Car de la 3D tu n'en feras pas avec QT. Tu peux éventuellement en insérer dans un programme Qt, mais pas plus. Si tu veux gérer la profondeur, tu peux imaginer que la fleche du haut fait s'éloigner le pinguin et que la touche du bas le fait se rapprocher, tu incrémentes ou décrémentes simplement la position du personnage. Par contre, il faut également 4 ou 8 sprites de ton pinguin pour gerer chaque position, et penser à diminuer la dimension de l'image si il est loin. Apres il faut que ta map soit dessinée en perspective.

          Pour les collisions, il y a plusieurs methodes qui existent, la plus simple étant de superposer un polygone transparent sur l'objet qui ne doit pas être traversé. Ainsi tu à un élément par dessus ta map qui te permet de vérifier le contact ou non.
          • Partager sur Facebook
          • Partager sur Twitter
            3 avril 2008 à 18:11:28

            En fait je me rends compte que j'ai pas du tout été clair :p

            Le truc c'est que ça doit pas être un jeu fluide, c'est un peu un tour par tour.

            Le pingouin se trouve sur une case hexagonale. Je veux juste pouvoir m'arranger pour que l'utilisateur puisse cliquer sur un case plus ou moins proche de lui (en ligne droite par rapport à une des faces de l'hexagone et ne comportant pas d'obstacles sur le chemin) et que ça fasse se déplacer le pingouin sur cette case.

            Donc ma question c'était surtout de savoir au niveau de l'algorithme, comment faire pour qu'on sache s'il y a bien une ligne droite (donc si on voit de haut, une ligne perpendiculaire à un des côtés de l'hexagone qui passe par le centre des 2 hexagones à relier). C'est ça mon problème :)
            • Partager sur Facebook
            • Partager sur Twitter
              4 avril 2008 à 16:46:27

              tu veut dire quelque chose de ce genre



              Image utilisateur

              le joueur peut allez au endroit ou la fleche n'est pas barré mais ne peut aller au endroit ou la fleche est barré.

              si c'est sa tu peut essayer avec les tableaux de lignes.
              puis tu teste la position du joueur et tu regarde ou il veut se deplacer.
              si il y a un obstacle dans les cases avant celle qui a ete choisis, tu sort de la condition.
              si la case choisis ne fait pas parti d'un des tableau de la case ou se trouve le joueur, tu sort aussi de la condition.
              si il y a un joueur avant la case, sortir de la condition
              si il y a aucune des des condition du haut, c'est qu'on peut deplacer le personnage
              donc on le deplace a la case et on passe au joueur suivant.

              enfin j'dit sa, j'dit rien :-°
              • Partager sur Facebook
              • Partager sur Twitter
                4 avril 2008 à 17:44:18

                Ouais c'est vrai que finalement avec un schéma c'est plus clair :p

                Je pense que je vais effectivement faire quelque chose dans le genre :-)

                Merci
                • Partager sur Facebook
                • Partager sur Twitter

                [Qt] Quelle méthode utiliser pour afficher une map ?

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown