Un probleme de Syncronisme

Résolu
thedragon25 Messages postés 67 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 3 mai 2009 - 3 juil. 2006 à 14:18
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013 - 4 juil. 2006 à 16:53
      Bonjours, voila mon problème :

J'ai fais un Pon en Réseaux, quand je lance deux fois le programe sur mon ordinateur (un qui héberge l'autre qui rejoind) tout va niquel, aucun probleme.
Mais quand je le lance sur deux ordinateurs différents en réseaux il y a un petit décalage de la Ball mais pas des Raquette.
Les raquettes envoient leurs positions par winsock et la ball est lancé en même temps dans les deux programes et est diriger suivant un timer. La ball démarre en meme temps mais le décallage se fait a force du temp et je ne comprend pas pourquoi. Si vous pouvez m'aider a résoudre se problème..

Merci et à Bientot !

20 réponses

JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013
4 juil. 2006 à 16:53
Si t'as msn
jb76240@hotmail.fr

Jer
3
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013
3 juil. 2006 à 21:37
Tu ne donnes pas grand chose pour nous aider. Moi je te conseillerai de gérer les déplacements de la balle par 1 ordinateur et d'envoyer la position à l'autre. Le problème dont tu parles provient probablement du fait que tu envoie des déplacements et non des positions de balle, enfin, je suppose.
J'espère que ceci pourra t'aider.

Jer
0
thedragon25 Messages postés 67 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 3 mai 2009
4 juil. 2006 à 12:26
J'ai essayer d'envoyer la position de la ball par winsock mais comme winsock gère déja les positions des joueurs la ball devient invisible et un joueur a la position qui ne change plus, en gros plus rien ne marche correctement. Mais mon probleme c'est que la premiere minute la ball est parfaitement syncrone dans les 2 écrans et apres je ne sais pourquoi il y a un décalage.
0
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013
4 juil. 2006 à 14:34
Tu as probablement des données qui se perdent en cours de route.
A mon avis, ma méthode est plus fiable. Si plus rien ne marche c'est que tu as un problème dans ton code. A qoui ressemblent les données que tu envoies ? Il faudrait, à chaque mouvement de balle, que tu envoies et la position de la balle, et la position des raquettes, amis en 1 seul envoi. De l'autre côté, tu décompose le message et tu effectues les mises en place. Ceci inclus un envoi de la modification de la position de la raquette client d'abord.

1ère étape : récupérer la commande venant du client (gauche, droit, aucun)
2e étape : confirmer la réception de cette donnée afin d'annuler l'envoi à partir du client
3e étape : effectuer les modifications de positions sur le serveur
4e étape : envoyer ces positions au client

Je suppose que tu utilises un timer pour gérer le déplacement de ta balle. Il te faut inclure ces étapes dans ce timer.

Jer
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thedragon25 Messages postés 67 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 3 mai 2009
4 juil. 2006 à 15:31
Je ne suis qu'un petit débutant et envoyer plusieur donnés en un seul envoi je ne sais pas faire pareil pour décomposer le message pour traiter les donnés recu. Ta méthode je la préfère aussi mais avec mon manque de conaissance les donnés se mélangeait et plus rien ne marchait.
0
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013
4 juil. 2006 à 16:07
Tu sais, j'ai découvert winsock il y a 3 mois et j'ai mis au point un logiciel de chat avec accès par mot de passe, échange de données et sauvegarde au format sql, gestion de fichier ini pour conserver les codes de connection...
Alors tu vois, débutant ou pas, du moment que tu bosses et que tu as l'aide dont tu as besoin, tu y arrives.

Pour la forme du message, ça ressemble à ça :
envoi|pos_raquette1|pos_raquette_2|pos_balle
la barre verticale se fait avec alt gr + 6
tu peux utiliser n'importe quel caractère comme séparateur et même une chaîne de caractère (envoiséparerpos_raquette1séparer...) ( | , ][ , [-] , il y a plein de solutions, et dans ton cas, pas besoin de compliquer le séparateur)

utilises la fonction split qui sert à décomposer les chaînes de caractères
syntaxe :
ma_variable=split(chaîne à décomposer,séparateur)
en l'occurence, tu auras :
ma_variable=split(donnees_reçues,"|")

ce qui te retournera :
ma_variable(0)="envoi"
ma_variable(1)="pos_raquette1"
ma_variable(2)="pos_raquette2"
ma_variable(3)="pos_balle"

J'ai placé "envoi" au début car il te faudra distinguer les données envoyées pour que le client travaille avec, et les données envoyées pour confirmer la réception que le client envoie.

Tu devrais pouvoir avancer avec ça.

Jer
0
thedragon25 Messages postés 67 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 3 mai 2009
4 juil. 2006 à 16:11
Moi j'ai découvert winsock il y a 4 jours donc c'est normal que j'ai encor du mal avec ^^.
Merci beaucoups de m'avoir donner  cet exemple sa va beaucoup m'aider je pense.
Je fait un essaie et j'indiquerai si je n'ai plus de probleme.

Merci et a bientot !
0
thedragon25 Messages postés 67 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 3 mai 2009
4 juil. 2006 à 16:15
Voila mon code : Winsock1.SendData refY|ball.top|ball.left

et cela me met une erreur...
0
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013
4 juil. 2006 à 16:17
N'oublie pas que tu envoies des chaines de caractère par winsock

mes_donnees= refY & "|" & ball.top & "|" & ball.left

Winsock1.SendData mes_donnees

Jer
0
thedragon25 Messages postés 67 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 3 mai 2009
4 juil. 2006 à 16:18
A d'accord j'avais mal compris merci !
0
thedragon25 Messages postés 67 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 3 mai 2009
4 juil. 2006 à 16:19
A d'accord j'avais mal compris merci !
0
thedragon25 Messages postés 67 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 3 mai 2009
4 juil. 2006 à 16:24
MaVariable = Split(Donne2, "|")
Player1.Top = MaVariable(0)
Ball.Top = MaVariable(1)
Ball.Left = MaVariable(2)

Je recupere les donnés comme ce mais il ne m'accept pas ca.
0
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013
4 juil. 2006 à 16:26
S'il te dit "tympe incompatible" essaye ca

Player1.Top = val(MaVariable(0))
Ball.Top = val(MaVariable(1))
Ball.Left = val(MaVariable(2))

Jer
0
thedragon25 Messages postés 67 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 3 mai 2009
4 juil. 2006 à 16:28
L'erreur est la meme c'est : Erreur d'execution '9' : Indice en dehor de la plage.
0
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013
4 juil. 2006 à 16:32
L'erreur est que tu n'as pas de mavariable(2) et peut-être pas non plus de mavariable(1)
place 2 msgbox à la suite de ton getdata
l'une pour afficher tes données en un bloc
w=msgbox(Donne2)
l'autre pour afficher ta dimension maximum pour mavariable
w=msgbox(ubound(mavariable)

Tu dvrais trouver le pb

Jer
0
thedragon25 Messages postés 67 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 3 mai 2009
4 juil. 2006 à 16:41
Je croix avoir trouver le probleme sans sa, la variable Donne2 je l'ai mit en Integer mais la variable a la séparation "|" donc peu etre pas reconnu dans le Integer. Mais a la place de Integer je pourait mettre quoi pour que tout soit pris en compte ? String ?
0
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013
4 juil. 2006 à 16:43
je ne comprends pas bien ta question

Jer
0
thedragon25 Messages postés 67 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 3 mai 2009
4 juil. 2006 à 16:47
j'ai défini la viariable Donne2 qui récupere l'information envoyer par winsock :
Dim Donne2 As Integer
Mais il récupere sans prendre en compte les séparateur "|" donc Donne2=3000 quand il est récuperer.
Apres ,
MaVariable = Split(Donne2, "|")
Player1.Top = Val(MaVariable(0))
Ball.Top = Val(MaVariable(1))
Ball.Left = Val(MaVariable(2))
Donne2=3000 donc et MaVariable est aussi égale à 3000 et MaVariable(0)=3000 aussi.
Rien n'a ete séparer peut etre parce que j'ai définie Donne2 en Integer non ?
0
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013
4 juil. 2006 à 16:48
Ah oui! Il faut que tu la définisses en string. Moi perso, je ne définis jamais rien. C'est pas bien, je le sais, tout le monde me le dit. Mais je n'ai jamais eu de pb jusque là.

Jer
0
thedragon25 Messages postés 67 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 3 mai 2009
4 juil. 2006 à 16:52
Défini en String il transforme les chiffres en du chinois ^^. Donc incompatible avec ce que je veux en faire. mais si je le définie : Public Donne2 , il ne récupere aucune information cet foi...
0
Rejoignez-nous