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

Réseau Discussion :

Envoyer une carte d'un jeu


Sujet :

Réseau

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 613
    Par défaut Envoyer une carte d'un jeu
    Bonjour,

    Je suis en train de programmer un jeu 2D jouable en reseau, et j'aimerai pouvoir envoyer la carte du jeu.
    En gros j'envoie le nombre de joueur, leurs positions de départ, la taille du plateau de jeu (largeur x hauteur), et pour chaque case du plateau son type.

    Comment puis-je faire pour creer un message (de taille variable donc) qui contienne tout ca ?

    Merci.

  2. #2
    Membre éprouvé
    Avatar de GreatTux
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 77
    Par défaut
    Tu utilises Qt pour faire communiquer ton application ? Si non, je ne suis pas sûr que ce forum soit le plus adapté.
    Quoi qu'il en soit il me semble que ce problème n'a pas vraiment de lien avec Qt; il faut définir un protocole, le format de message permettant d'envoyer toutes les informations et de les interpréter ensuite à la réception.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 613
    Par défaut
    j'utilise QT pour... tout
    l'affichage graphique, le reseau...
    En fait je pose la question ici pour saovir si qt pouvait faciliter ce genre de communication.

  4. #4
    Membre chevronné
    Avatar de haraelendil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 283
    Par défaut
    Bien sur que c'est simple, vu que l'envoi réseau passe par un QByteArray, il suffit de définir l'ordre dans le quel envoyer tes données si se sont des types natifs, sinon de faire une méthode pour les classes que tu a fabriqué pour les convertir en QByteArray, elles même marchant comme ça.

  5. #5
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonjour

    Le plus simple est d'utilser un QDataStream pour écrire dans le QByteArray puis d'envoyer le QByteArray sur le réseau (par exemple avec QUdpSocket::writeDatagram pour le protocole UDP). Tu trouveras des exemples dans la documentation.

    Tu peux alors envoyer chaque paramètre dans ton QDataStream
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    QStringList players;
    QVector<QPoint> positions;
    QSize size;
    QMap<QPoint, QString> types;
     
    QByteArray datagram;
    QDataStream stream(&datagram);
    stream << players << positions << size << types;
    Tu peux également ajouter les opérateurs << et >> à tes classes pour les envoyer directement au QDataStream
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QDataStream &operator<<(QDataStream &, const QXxx &);
    QDataStream &operator>>(QDataStream &, QXxx &);
    PS : Ce n'est pas forcement optimal de transmettre toute ta map, le mieux serait d'envoyer que ce qui est modifié au moment où c'est modifié

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 613
    Par défaut
    ha oui super, merci, ca simplifie beaucoup les choses du coup...

    Pour le PS, l'envoie se fait au tout début de la partie, quand le client ne connait pas encore la map, donc il faut tout envoyer.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. programmer une carte d’un jeu de stratégie
    Par swo.line dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 10/01/2008, 22h20
  2. envoyer des données sur une carte son
    Par khalifa1 dans le forum DirectX
    Réponses: 1
    Dernier message: 26/10/2007, 17h29
  3. [FLASH MX] Jeu de paires retourner une carte
    Par Lenalyon dans le forum Flash
    Réponses: 3
    Dernier message: 25/07/2007, 16h25
  4. Création d'une carte géographqiue pour un jeu.
    Par Space Cowboy dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/03/2007, 12h26
  5. [Images] représentation d'une carte pour jeu en php
    Par maniaco_jazz dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 29/11/2005, 10h41

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