[Résolu][MySQL] UPDATE aléatoire des champs - 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 : [Résolu][MySQL] UPDATE aléatoire des champs (/showthread.php?tid=2251) Pages :
1
2
|
[Résolu][MySQL] UPDATE aléatoire des champs - Sephi-Chan - 06-01-2008 Salut, Pour m'entraîner sur quelques points particuliers, j'ai développé un mini-jeu inspiré du jeu de rôle Les Loups-Garous de Thiercelieux. Je me heurte toutefois à un problème dont voici le contexte : Chaque joueur a une classe (Loup-Garou, Voyant, Alchimiste, Villageois, Marchand de sable). Les classes sont attribuées aléatoirement, dans des proportions données en fonction du nombre total de joueurs, le résultat des pourcentages est arrondi à l'entier supérieur :
Ensuite, nous avons une table player_game_role qui lie l'identifiant d'un joueur, celui d'une partie et celui d'une classe (dans notre cas, on va simplifier ça en donnant une chaîne de caractère à la place d'un id). Quand une partie est prêtre à être lancée, tous les joueurs qui s'y sont inscrit sont dans cette table : il ne manque plus qu'à attribuer à chaque joueur un rôle aléatoirement et dans le respect des proportions données plus haut. Comme données connues, nous avons la quantité de joueurs total et éventuellement le nombre de places dans chaque classe. Je ne trouve pas de technique correcte pour faire ça... J'espère que vous pourrez m'aider car là, je n'en puis plus ! Je vous en remercie d'avance, Sephi-Chan RE: [MySQL] UPDATE aléatoire des champs - Loetheri - 06-01-2008 Tu attribues un id de classe correspondant à aucune classe (0 par exemple). Lorsque tu fais ton update, tu "classes" tes joueurs de façon aléatoire (ORDER BY RAND()) avec une limite (LIMIT X) et tu ne sélectionne que ceux qui ont une classe à 0 par exemple (WHERE id_classe = 0). J'ai rien compris ? RE: [MySQL] UPDATE aléatoire des champs - Sephi-Chan - 06-01-2008 Ça, c'est la partie que je sais faire. Mais mon problème, c'est d'attribuer le nombre de classe correct. Par exemple : Imaginons que la partie compte 23 joueurs. On à donc :
Il me faut donc attribuer ces rôles à chaque personnage. C'est ce que je n'arrive pas à faire. Sephi-Chan RE: [MySQL] UPDATE aléatoire des champs - Anthor - 06-01-2008 Avec un sélection SQL de tous les id joueurs concernés, ordonné de facon aléatoire, et une boucle pour construire la requete de mise à jour ? RE: [MySQL] UPDATE aléatoire des champs - Loetheri - 06-01-2008 Comme l'a dit Anthor, tu récupères les id des joueurs. Tu calcules leur nombre. Puis tu fais une "boucle" avec les updates ^^ Je ne vois pas où est le problème Limite, tu gardes le nombre de personnages déjà affectés dans une variable. Ainsi tu sais combien de villageois, tu as. RE: [MySQL] UPDATE aléatoire des champs - Anthor - 06-01-2008 Code PHP :
Pas testé ni optimisé mais ca devrait être ça dans l'idée. RE: [MySQL] UPDATE aléatoire des champs - Sephi-Chan - 06-01-2008 Je me cassais les fesses à essyaer de faire ça en une requête unique (en utilisant des variables et les conditions)... Même si je n'y suis pas parvenu, je suis persuadé que c'est faisable. :p Merci bien pour l'aide en tout cas, j'essaye dès que j'en ai l'occasion. Sephi-Chan RE: [MySQL] UPDATE aléatoire des champs - Sephi-Chan - 06-01-2008 Quelque chose m'échappe. Je ne comprends pas le fonctionnement de la succession de if. J'obtiens la requête finale : Code : UPDATE player_game_role SET role = 2 WHERE player = 4, Les données (j'ai changé un peu les formules, mais le compte est bon) : Citation :7 joueurs (6 personnages spéciaux) : Le PHP : Code PHP :
Sephi-Chan, qui arrive pas à se concentrer dessus... RE: [MySQL] UPDATE aléatoire des champs - Loetheri - 06-01-2008 En réalité, c'est plutôt Code PHP :
Essaye ça ^^ RE: [MySQL] UPDATE aléatoire des champs - Anthor - 06-01-2008 Correct ^^ Je me suis trompé dans le cheminement ^^ |