JeuWeb - Crée ton jeu par navigateur
Aide pour animation - 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 : Aide pour animation (/showthread.php?tid=6456)



Aide pour animation - sanabuck - 14-11-2012

Bonjour.
Comme je le dis dans ma présentation je suis nouveau dans le domaine de la programmation.
Actuellement, j'essaie de créer l'animation d'une course de chevaux, sachant que le joueur n'intervient pas dans cette course, il est juste spectateur.
Je m'y suis pris de la façon suivante:
J'ai créer un fichier Classe cheval en php.
Ensuite un fichier php 'deroulement_course' qui simule 'mathématiquement' la course avec une boucle 'while' qui dure le temps que la distance de la course soit atteinte.
J'ai enfin un fichier pour l'affichage de l'animation qui contient l'image d'un cheval.

Ma question se situe au niveau de l'animation. Je suppose que je dois utiliser un script pour animer cette image. La fonction jquery animate me semble parfaite, mais car il y a un mais, comment faire pour récupérer une variable (celle du déplacement) dans le fichier 'deroulement_course.php' sachant que cette variable va changer de valeur à chaque passage dans la boucle.
Question subsidiaire qui reflète mon faible niveau, ce script où faut-il mieux l'écrire?
-Dans la boucle du fichier 'deroulement_course', dans le fichier d'affichage?

Voilà. Je pourrais si vous le voulez vous fournir ce que j'ai déjà fait pour peut être mieux visualiser ma demande.
Merci.


RE: Aide pour animation - Ter Rowan - 14-11-2012

je suis pas sur d'avoir tout compris cependant voici comment je ferais

côté client (javascript, ...)

j'ai une matrice du type

[ sequence ][cheval]= position

où :
séquence est l'unité de temps entre deux animations (genre toutes les secondes, toutes les deux secondes, ...
cheval est l'id du cheval à afficher
position est la position géographique dans la course (50m, 120m, 140m)

exemple d'une course à deux chevaux et un sprinter :

[0][étalon noir] =0
[0][vieille carne] = 0
[0][sprinter] =0
[1][étalon noir] =2
[1][vieille carne] =1
[1][sprinter]=4
[2][étalon noir]=5
[2][vieille carne]=3
[2][sprinter]=6
[3][étalon noir]=10
[3][vieille carne]=6
[3][sprinter]=8
[4][étalon noir]=15
[4][sprinter]=10

round 0 tout le monde est au départ
round 1 le sprinter à fait 4 mètres, le cheval 2 la vieille carne 1 (un homme démarre plus vite qu’un cheval)
round 2 le sprinter est toujours devant mais a réduit sa vitesse, les chevaux eux continuent d’accélérer
round 3 l’étalon a doublé le sprinter et atteint sa vitesse de pointe, la vieille carne poursuit son effort
round 4 l’étalon ne pourra plus être rattrapé par le sprinter… Et la vieille carne ? ben elle s’est écroulée entre le round 3 et 4

tu fais une requête ajax au serveur pour lui demander ce tableau et tu t'en sers pour l'animation, a toi de voir comment


après te reste plus côté serveur qu’à générer ce tableau et l’envoyer à un format compréhensible par le client (json par exemple)


RE: Aide pour animation - sanabuck - 15-11-2012

Tout d'abord merci de m'avoir lu et de t'être penché sur mon problème.

Mon fichier php 'deroulement_course' me permet de générer facilement un tableau du même type que ton exemple. Disons que j'ai le déroulement de la course 'chiffrée' avec distance parcourue, acceleration , endurance même si pour l'animation c'est surtout la distance parcourue qui m'intéresse.
J'ai donc ce tableau au niveau du serveur (arrête moi si je dis une bêtise hein!). Maintenant il faut qu'un script coté client soit capable de lire ce tableau pour utiliser les données et réaliser l'animation, c'est bien cela?
A ce niveau je suis perdu! Mais en fait j'ai l'impression qu'il y a eu inversion des deux dernières lignes de ta réponse.
Donc j'encode le tableau : json_encode($array);
Je regarde pour récupérer coté client maintenant mais pourrais-je me servir des données pour les utiliser dans une fonction jquery animate() en m'en servant de paramètre?


RE: Aide pour animation - Ter Rowan - 15-11-2012

Tu as deux solutions :
La premiere tu utilises Ajax : Javascript demande au serveur le tableau, puis une fois récupéré, l analyse pour construire les elements nécessaires a jquery animate (je ne connais pas la méthode)
Faut il un animate pour toute la course ou autant d animate qu il y a de round, a toi de voir

L autre solution :

Tu génères la page html complète qui embarque les données et le script de jquery. Ça t évite d utiliser Ajax, donc une petite difficulté de moins mais ça rend ton site moins dynamique


RE: Aide pour animation - sanabuck - 15-11-2012

Merci Ter Rowan, j'ai opté pour la première solution. Ta petite remise a plat m'a fait le plus grand bien et donc ça y est j'ai réussi à récupérer mes données.