JeuWeb - Crée ton jeu par navigateur
ouverture meme fenetre sur 2 compte utilisateur - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : ouverture meme fenetre sur 2 compte utilisateur (/showthread.php?tid=1661)

Pages : 1 2


ouverture meme fenetre sur 2 compte utilisateur - Fitz - 28-08-2007

Bonjour tous le monde,

Je m'explique, pour mon projet de jeu, lorsque un utilisateur accepte " un defi " d'un autre utilisateur, je voudrais savoir comment faire ou si c'est possible en php ou javascript, que une meme fenetre ( ma carte ) s'ouvre simultanément sur les 2 compte utilisateur et ainsi les 2 utilisateur puisse interargir ensemble sur la meme carte ( comme les jeux de poker sur internet pour ceux qui connaissent Wink )

merci d'avance


RE: ouverture meme fenetre sur 2 compte utilisateur - Scriptiz - 28-08-2007

en javascript :

Code :
<script language="javascript">
var popUpWin=0;

function popUpWindow(URLStr, left, top, width, height)

{

  if(popUpWin)

  {

    if(!popUpWin.closed) popUpWin.close();

  }

  popUpWin = open(URLStr, 'popUpWin', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=yes,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');

}
</script>



RE: ouverture meme fenetre sur 2 compte utilisateur - Fitz - 28-08-2007

merci pour ton code, il sert simplement a ouvrir une fenetre popup, et dsl j'ai vu je me suis trompé de categorie


RE: ouverture meme fenetre sur 2 compte utilisateur - Scriptiz - 28-08-2007

Ouvrir une nouvelle fenêtre c'est ouvrir une popup non? Smile

Ca pop puis c'est up Tongue

Ou alors si tu préfère tu peut faire une pop under.

Enfin voilà, pour ouvrir une nouvelle fenetre tu peut adapter ce code Smile


RE: ouverture meme fenetre sur 2 compte utilisateur - transgohan - 28-08-2007

Ouvrir une fenêtre en même temps sur les deux explorer ?
Euh tu parles d'un code explorer et de deux explorer différents là...
En bref l'un va dire je suis prêt à ouvrir ma popup et toi comme es-tu ? ...
Et si les deux membres ne sont pas connectés en même temps que veux-tu qu'il se passe ?
Je sais pas si tu vois où je veux en venir mais bon...

En même temps = impossible, exemple d'un chat qui se raffraichit toutes les 5 secondes, il ne se raffraichit pas à la même seconde chez tous les utilisateurs.


RE: ouverture meme fenetre sur 2 compte utilisateur - Scriptiz - 28-08-2007

Pourtant si on fait un javascript qui envoie sur un code php l'état du premier membre et du deuxième, et qui si les deux sont connectés et ont relevé le défis ouvre la fenetre en popup c'est faisable non Smile

Ca s'ouvrira presque en même temps (on peut pas garantir les 2 secondes de décallage quoi Smile ).

Enfin c'est une idée :p


RE: ouverture meme fenetre sur 2 compte utilisateur - Harparine - 28-08-2007

Je travaille sur un jeu utilisant le même truc et le principe de base est plutôt simple mais son application peut être un peu ardue à mettre en place.

En fait, il te faut des données communes que chacun modifie. Personnellement, j'utilise un fichier XML (car je bosse avec du Flash) mais ça marche aussi très bien avec une base de données. Après, tu dois créer un script php (ou une autre technologie, si tu choisis d'effectuer le traitement sur le poste client plutôt que sur le serveur) qui te génère ta carte chez les deux utilisateurs en fonction du fichier de données commun. Dès qu'un joueur modifie ce fichier, l'autre verra les modifications à chaque fois qu'il rechargera la carte.

Le problème, c'est que l'ensemble reste asynchrone : il faut recharger la page (ou des éléments de la page) pour voir les modifications du joueur adverse. Dans bien des cas, ce n'est pas trop gênant et c'est la solution la plus facile à mettre en place, d'autant que tu peux te rapprocher d'un jeu synchronisé en réactualisant les infos à intervalles réguliers (toutes les 30 secondes, par exemple). Mais si tu veux véritablement une partie vraiment synchronisée, il faut utiliser un serveur socket, c'est à dire une sorte de noeud auquel sont connectés tous les joueurs de la partie et qui renvoie des informations à tout le monde à chaque fois qu'un utilisateur lui envoie des données. Par contre, pour un serveur socket, il faut payer un certain prix ou bien disposer d'un serveur dédié pour en installer un. De plus, si je sais comment l'utiliser avec Flash, je serais bien incapable de te dire si cette dernière solution est valable en PHP ou Javascript.

Enfin bref : le principe à appliquer, c'est deux affichages pour un même fichier de données... Wink

@+


RE: ouverture meme fenetre sur 2 compte utilisateur - transgohan - 28-08-2007

Et le problème qui survient souvent : Comment résoudre les problèmes de timing. ^^
Je m'explique, c'est tout simplement lorsque les joueurs éffectuerons une action en même temps, certes la bdd ne les prendra que une par une mais le script s'exécutera en même temps et donc quelques soit les vérifications pour éviter l'action X à cause de l'action Y les requêtes seront enregistrées.

L'image la plus simple pour voir cela reste les problèmes de déplacements sur les maps, si tu interdit par un script que deux joueurs puissent être sur la même case par exemple. En théorie ça fonctionne mais en pratique lorsque cela se joue à quelques millisecondes ça ne fonctionne pas toujours. Bref j'ai déjà eu le problème, des joueurs sur la même case alors que d'après le script c'était impossible.
Le script vérifiait la possibilité d'aller sur cette case puis envoyait la requête mais le temps entre la vérification et la requête n'est pas nul. Wink


RE: ouverture meme fenetre sur 2 compte utilisateur - Fitz - 28-08-2007

merci, j'y vois un peu plus clair,
voila mon code pour ouvrir ma nouvelle fenetre avec ma carte combat lorsque l'utilisateur repond positivement au "defi".

<a href='javascript:fenetre_carte40()'> Oui </a>
<SCRIPT language='javascript'>
function fenetre_carte40() {
fenetre_carte40 = window.open('combat/1vs1/carte40popup.php?id_user_exp=$id_user_exp&id_user_des=$id_user&datetime=$datetime','_blank','toolbar=no, status=yes, scrollbars=yes, resizable=no, width=500, height=450');
}
</SCRIPT>


maintenant comment faire pour que l'autre utilisateur qui ma envoyer le "defi" reçoi la meme fenetre que celle qui vient de s'ouvrir ????????


merci d'avance


RE: ouverture meme fenetre sur 2 compte utilisateur - transgohan - 28-08-2007

Si tu utilises le php tu peux faire en sorte d'enregistrer une donnée dans une table, lorsque l'autre joueur testera si cette donnée est présente tu lui ouvres la fenêtre.
Penses à faire en sorte de différencier les deux joueurs si tu ne veux pas que celui qui lance le défi n'ait une seconde popup d'ouvert à l'identique. Wink