Nouveau WRInaute
Bonjour,
Je viens vers vous car je pense que l'expérience sera enrichissante pour tous les programmeurs php/mysql/ajax et également pour vous demander de l'aide sur la réalisation d'un club d'échecs en ligne avec possibilité de jouer des parties en direct avec du temps et un classement élo !
Jusque là j'ai réussi à programmer mon interface "statique" complète en php/mysql et javascript, les règles du jeu sont respectées, et il y a de nombreuses fonctionnalités (proposer nulle, reprendre son coup, visualiser une partie terminée, etc), par contre là où je bloque c'est pour passer mes paramètres en live, donc de transformer les pages statiques en pages interactives avec AJAX (rafraichissement chaque seconde) !
J'ai fait un plan que je vous détaille (merci de le commenter, car j'ai sûrement fait des erreurs) :
-Salle d'attente, on peut défier les joueurs en voyant leur classement et leur pseudo (pour vérifier qu'un joueur est là, je fais un update de time dans la bdd chaque seconde, si il n'y a pas d'update pendant 1 seconde pour un joueur, alors il n'y a plus de possibilité de défier ce joueur car il est considéré comme "absent". Evidemment lorsqu'un joueur arrive sur la page je fais un insert avec le pseudo et j'insère le time pour que l'update se mette à tourner. Ca me parait très lourd niveau serveur, mais je ne vois pas quelle alternative sérieuse je peux utiliser pour vérifier à la seconde près qu'un joueur est connecté ou pas en utilisant seulement php/mysql/ajax.
-Salle de jeu, j'update chaque seconde par rapport au time dans la bdd pour les horloges de jeu, là aussi niveau serveur ça me parait très lourd mais ça me semble être la seule sécurité au cas où un joueur se déconnecte et se reconnecte avant 30 secondes (après il est déclaré perdant), pour le reste le jeu se déroule normalement, toutes les règles sont respectées et une vérification est faite que l'adversaire est bien connectée à la partie grâce au même update que cité précédemment dans une nouvelle table (celle de la salle de jeu et non pas celle de la salle d'attente) ! A la fin de la partie les joueurs peuvent l'analyser grâce au chat et à la possibilité de revenir au début de la partie et de la faire défiler etc.
Evidemment lorsqu'un jour passe de la salle de défi à celle de jeu (soit parce qu'un de ses défis a été accepté ou parce que lui-même a accepté un défi) on supprime tous les défis qu'il a lancés ou reçus dans la bdd et la page de jeu se lance.
Pour le reste mon plus gros souci réside dans le fait que mes variables innerhtm (échiquier et fonctionnalités autour) sont codées en JS, je n'arrive par conséquent par à les faire passer dans du xAJAX par exemple, étant donné que mes connaissances s'arrêtent à passer du php dans une fonction AJAX, du javascript couplé à du php je n'y arrive pas...
Pour plus de précision, voilà une sorte de schéma :
1) Mon code php (très long) qui fait appel à toutes les requêtes dans ma bdd.
2) Mon code javascript qui va définir les div en innerhtm suivant le php précité.
3) Div dans le body.
Je n'arrive pas en AJAX à faire en sorte de prendre en fonction le code php et le javascript afin de réactualiser avec Setinterval (ou prototype, ou autre...) pour les afficher avec un innerhtm dans le body afin d'actualiser la position sur l'échiquier quand c'est au tour de l'adversaire (pour voir s'il a joué et quoi). Et plus je bosse sur ce code, plus j'ai l'impression que ce n'est simplement pas possible...
Si quelqu'un a une idée je suis preneur ! Je détaillerai point à point l'avancée du jeu et comment j'ai fait (en suivant vos conseils !
Merci de vos réponses et de votre intérêt !
Luc.
Je viens vers vous car je pense que l'expérience sera enrichissante pour tous les programmeurs php/mysql/ajax et également pour vous demander de l'aide sur la réalisation d'un club d'échecs en ligne avec possibilité de jouer des parties en direct avec du temps et un classement élo !
Jusque là j'ai réussi à programmer mon interface "statique" complète en php/mysql et javascript, les règles du jeu sont respectées, et il y a de nombreuses fonctionnalités (proposer nulle, reprendre son coup, visualiser une partie terminée, etc), par contre là où je bloque c'est pour passer mes paramètres en live, donc de transformer les pages statiques en pages interactives avec AJAX (rafraichissement chaque seconde) !
J'ai fait un plan que je vous détaille (merci de le commenter, car j'ai sûrement fait des erreurs) :
-Salle d'attente, on peut défier les joueurs en voyant leur classement et leur pseudo (pour vérifier qu'un joueur est là, je fais un update de time dans la bdd chaque seconde, si il n'y a pas d'update pendant 1 seconde pour un joueur, alors il n'y a plus de possibilité de défier ce joueur car il est considéré comme "absent". Evidemment lorsqu'un joueur arrive sur la page je fais un insert avec le pseudo et j'insère le time pour que l'update se mette à tourner. Ca me parait très lourd niveau serveur, mais je ne vois pas quelle alternative sérieuse je peux utiliser pour vérifier à la seconde près qu'un joueur est connecté ou pas en utilisant seulement php/mysql/ajax.
-Salle de jeu, j'update chaque seconde par rapport au time dans la bdd pour les horloges de jeu, là aussi niveau serveur ça me parait très lourd mais ça me semble être la seule sécurité au cas où un joueur se déconnecte et se reconnecte avant 30 secondes (après il est déclaré perdant), pour le reste le jeu se déroule normalement, toutes les règles sont respectées et une vérification est faite que l'adversaire est bien connectée à la partie grâce au même update que cité précédemment dans une nouvelle table (celle de la salle de jeu et non pas celle de la salle d'attente) ! A la fin de la partie les joueurs peuvent l'analyser grâce au chat et à la possibilité de revenir au début de la partie et de la faire défiler etc.
Evidemment lorsqu'un jour passe de la salle de défi à celle de jeu (soit parce qu'un de ses défis a été accepté ou parce que lui-même a accepté un défi) on supprime tous les défis qu'il a lancés ou reçus dans la bdd et la page de jeu se lance.
Pour le reste mon plus gros souci réside dans le fait que mes variables innerhtm (échiquier et fonctionnalités autour) sont codées en JS, je n'arrive par conséquent par à les faire passer dans du xAJAX par exemple, étant donné que mes connaissances s'arrêtent à passer du php dans une fonction AJAX, du javascript couplé à du php je n'y arrive pas...
Pour plus de précision, voilà une sorte de schéma :
1) Mon code php (très long) qui fait appel à toutes les requêtes dans ma bdd.
2) Mon code javascript qui va définir les div en innerhtm suivant le php précité.
3) Div dans le body.
Je n'arrive pas en AJAX à faire en sorte de prendre en fonction le code php et le javascript afin de réactualiser avec Setinterval (ou prototype, ou autre...) pour les afficher avec un innerhtm dans le body afin d'actualiser la position sur l'échiquier quand c'est au tour de l'adversaire (pour voir s'il a joué et quoi). Et plus je bosse sur ce code, plus j'ai l'impression que ce n'est simplement pas possible...
Si quelqu'un a une idée je suis preneur ! Je détaillerai point à point l'avancée du jeu et comment j'ai fait (en suivant vos conseils !
Merci de vos réponses et de votre intérêt !
Luc.