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

C# Discussion :

Jeu en réseau


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 2
    Par défaut Jeu en réseau
    Bonjour,

    Je suis entrain d'essayer de relier un jeu pour pouvoir jouer à deux en local depuis deux PC, mais je ne vois pas ou est l'erreur dans mon code, l'autre personnage ne s'affiche pas.

    Voilà mon code :

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    using System;
    using System.Net;
    using System.Net.Sockets;
    using System.Threading;
    using System.IO;
    using Microsoft.Xna.Framework;
    using Microsoft.Xna.Framework.Audio;
    using Microsoft.Xna.Framework.Content;
    using Microsoft.Xna.Framework.GamerServices;
    using Microsoft.Xna.Framework.Graphics;
    using Microsoft.Xna.Framework.Input;
    using Microsoft.Xna.Framework.Media;
    using Microsoft.Xna.Framework.Net;
    using Microsoft.Xna.Framework.Storage;
     
    namespace Brawl_ultra_guns
    {
        public class Client
        {
            static byte[] msg;
            int port = 8000;
     
            IPAddress ip;
            IPEndPoint IpEnd;
            Thread th_recieve;
            static Socket ClientSocket;
            private static int ID = 0;
     
     
            static NiveauMulti multi = new NiveauMulti(null);
            static int ID2;
     
            public void Main()
            {
                int X = Convert.ToInt32(multi.player.Position.X) * 1000;
                int Y = Convert.ToInt32(multi.player.Position.Y);
                SendMsg(BitConverter.GetBytes((ID*1000000+X+Y)));
            }
     
            public void Start()
            {
                ip = IPAddress.Parse("192.94.16.19");
                IpEnd = new IPEndPoint(ip, port);//initialisation du serveur
                ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                try
                {
                    ClientSocket.Connect(IpEnd);
                    th_recieve = new Thread(Client.Recieve);//si il se connecte, lance le thread de detection
                    th_recieve.Start();
     
                }
                catch (SocketException)//s'il n'y a pas de serveur
                {
                }
            }
     
            public void SendMsg(byte[] msg)
            {
                int DtSent = ClientSocket.Send(msg, msg.Length, SocketFlags.Broadcast);
     
            }
     
            public static void Recieve()
            {
                while (true)
                {
                    if (ClientSocket.Connected) //si on est connecte
                    {
                        if (ClientSocket.Available > 0) //si on recoit qque chose
                        {
                            while (ClientSocket.Available > 0) //tant quon recoit
                            {
                                msg = new Byte[ClientSocket.Available];
                                ClientSocket.Receive(msg, 0, ClientSocket.Available, SocketFlags.None);
                                int seq = BitConverter.ToInt32(msg, 0);
     
                                if (ID == 0)
                                {
                                    ID = BitConverter.ToInt32(msg, 0);
                                }
                               else
                                {
                                    int seq = BitConverter.ToInt32(msg, ClientSocket.Available);
                                    ID2 = seq / 1000000;
     
     
                                   if (ID != ID2 & ID2 != 0)
                                   {
                                        //seq = seq % 1000000;
                                        multi.joueurAdverse.Position.X = seq/1000;
                                        multi.joueurAdverse.Position.Y = seq % 1000;
                                    }
                               // }
                            }
     
                        }
                    }
                }
            }
     
            public void Draw(SpriteBatch sprite, Texture2D text, SpriteFont spritefont)
            {
                    sprite.DrawString(spritefont, Convert.ToString(ID), new Vector2(600, 0), Color.Black);
                    sprite.DrawString(spritefont, Convert.ToString(ID2), new Vector2(600, 20), Color.Black);
            }
     
            public void Deconnection()
            {
                try
                {
                    th_recieve.Suspend();
                    th_recieve.Interrupt();
                    ClientSocket.Disconnect(true);
                }
                catch { }
            }
     
        }
    }

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par XireCreative Voir le message
    Je suis entrain d'essayer de relier un jeu pour pouvoir jouer à deux en local depuis deux PC, mais je ne vois pas ou est l'erreur dans mon code, l'autre personnage ne s'affiche pas.

    Voilà mon code à ce lien : http://pastebin.com/JdykUCYq
    On est blindé normalement, mais de temps à autrre on trouve encore plus fort !

    si j'ai bien suivi tu nous demande de perdre notre temps à essayer d'analyser un problème que visiblement tu n'as pas daigné analyser toi même ?


    Crois tu que les debugger interactif ont été développés pour faire joli ?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    je plussoie, mode debug, ou au moins des traces, histoire de savoir à partir de quand dans ton code cela ne va pas...

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 2
    Par défaut
    La valeur envoyé, à la réception n'est plus la même. Voilà le problème.

    C'est de type serveur/client, le serveur ne touche pas byte[] il le prend et renvoi aux autres.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    tu envoies quels valeurs et tu reçois quelles valeurs ? Via ta socket, tu ne fais qu'écrire des valeurs ? Tu les traites sous la forme de trame : en-tête+action+checksum ? Es-tu sûr de lire les données au bon endroit ?

    Et enfin, si tu penses que le serveur ne transmet pas les bonnes coordonnées, pourquoi ne donner que le code du client ?

Discussions similaires

  1. Jeu en réseau Php
    Par MABB dans le forum Jeux web
    Réponses: 1
    Dernier message: 11/12/2006, 19h43
  2. Comment faire un jeu en réseau avec J2ME ?
    Par Yakurena dans le forum Java ME
    Réponses: 1
    Dernier message: 27/03/2006, 19h09
  3. [Methodologie] Methode de développement d'un jeu en réseau
    Par gamerome dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 26/01/2006, 13h10
  4. Mise d'un jeu en réseau
    Par CCin dans le forum Réseau
    Réponses: 5
    Dernier message: 26/10/2005, 17h03
  5. Jeu en réseau possible ? Comment faire ?
    Par ShadowTheAlone dans le forum Développement
    Réponses: 9
    Dernier message: 03/07/2005, 12h07

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