JeuWeb - Crée ton jeu par navigateur
Classements des joueurs - 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 : Classements des joueurs (/showthread.php?tid=5087)

Pages : 1 2 3 4 5 6 7


RE: classements des joueurs - Foxglove - 20-08-2010

(20-08-2010, 02:28 PM)php_addict a écrit : j'ai mis tout les scores à zero pour pousser + avant l'etude de cas... et la fonction getRankingById() me renvois 1

Si tous les scores sont égaux à 0, c'est normal que tout le monde soit le premier, non ?


RE: classements des joueurs - Ter Rowan - 20-08-2010

(20-08-2010, 02:36 PM)Foxglove a écrit :
(20-08-2010, 02:28 PM)php_addict a écrit : j'ai mis tout les scores à zero pour pousser + avant l'etude de cas... et la fonction getRankingById() me renvois 1

Si tous les scores sont égaux à 0, c'est normal que tout le monde soit le premier, non ?

pas mieux ^^


RE: classements des joueurs - php_addict - 20-08-2010

(20-08-2010, 02:36 PM)Foxglove a écrit : Si tous les scores sont égaux à 0, c'est normal que tout le monde soit le premier, non ?

oui ok, mais si il y a plusieurs scores à ZERO le probleme reste le meme...


RE: classements des joueurs - Anthor - 20-08-2010

Et si tu envoyais un export sql de la table avec quelques données pour que les gens gagne du temps en testant ? Smile


RE: classements des joueurs - Ter Rowan - 20-08-2010

bah je vois pas le problème en fait, il me manque une information... quels sont les classements des perso à 0 et quels seraient les "bons classements d'après moi

typiquement par rapport à ton image, je m'attends à ce que les personnages 4 6 7 8 9 ... aient tous le même rang (à savoir 5) et qu'ils soient précédés dans l'ordre de 3 1 5 2

et toi tu obtiens et veux quoi ?


RE: classements des joueurs - Foxglove - 20-08-2010

(20-08-2010, 02:52 PM)php_addict a écrit : oui ok, mais si il y a plusieurs scores à ZERO le probleme reste le meme...

En fait, je n'ai dû pas bien comprendre ton exemple. Pourrais-tu donner :
- le score de chaque joueur,
- le classement que tu obtiens.

Dans la table précédente que tu avais donnée, je voyais le score de chaque joueur mais pas leur classement. Pas forcément besoin de code PHP pour le moment, juste l'entrée et la sortie.


RE: classements des joueurs - php_addict - 20-08-2010

ok, merci

je vais vous faire un topo avec de jolies images sur un autre topic, car là je m'enfonce...


RE: classements des joueurs - Thib4s - 20-08-2010

Probleme des "bons classement" le mieux c'est de faire un truc du genre :

var 1 = total de tous les points classement/nbr de joueurs
var 2 = moitié des points classement classé dans l'ordre décroissant/nbr joueurs/2
ratio = var2/var1
good? = point classement du joueur*ratio
si Good? > var 2 alors c'est un bon classement, sinon c'est pas le cas.

Voila voila

Ou le ratio sera une moyenne des points du classement supérieur.
Si les point classement du joueur sont supérieur alors il est en bon classement, si non ben alors c'est qu'il est mauvais ^^


RE: classements des joueurs - php_addict - 20-08-2010

(20-08-2010, 01:46 PM)Ter Rowan a écrit : au delà de ce point tu obtiens le résultat en combien de temps ?

20ms pour 10000 enregistrements...

merci à tous

hormis un tout petit soucis qui reste à régler je pense que c'est résolu

je ferais un tuto sur lewiki, mais pour le moment je débranche le PC...trop de code tue le codeur Wink


RE: [finalement pas résolu] Classements des joueurs - php_addict - 21-08-2010

Bonjour

finalement mon soucis de classement n'est pas encore résolu et je désespère, je vais exposer mon problème plus clairement (que cela me serve de leçon pour les prochaines fois):

J'utilise PHP / MYSQL et le but du jeu est d'afficher un classement des joueurs sur plusieures pages HTML (car beaucoup de joueurs)

[Image: exemplez.jpg]

pour afficher toute la table triée, rien de plus simple:

Code PHP :
<?php 
SET
@rank=0
SELECT
@rank:=@rank+1 AS rank , pseudo , points FROM classement ORDER BY points DESC

mais comment afficher une portion de la table triée, à partir du joueur Bob par exemple ?

- il faudrait connaitre le rang de Bob préalablement. mais comment connaitre son rang sans sortir toutes les données de la table ? (ma table joueur j'espere peut atteindre entre 10.000 et 20.000 entrées)

- notons que plusieurs joueurs peuvent avoir le même score et le score peut être nul.

Pourriez vous me donner un coup de pouce s'il vous plait sur ce probleme qui peut vous paraitre anodin?

merci pour votre aide (PS: je suis développeur amateur)

bonne journée

PS1: je suis tombé sur http://forums.devshed.com/mysql-help-4/mysql-rank-function-487657.html mais je ne sais pas si cela peut m'aider et les requêtes sont vraiment trop complexes pour moi

PS2: cette solution ci dessous ,pour trouver le rang de Bob ne fonctionne pas (car il y a des joueurs qui ont le même score):

Code PHP :
<?php 
$result
=$connexion_mmorpg->query("SELECT COUNT(joueur_id) FROM classement WHERE points >= ( SELECT points FROM classement WHERE id = $joueur_id ) order by joueur_id desc ");
$num_rows=$result->fetchColumn();
-------------------------
Le tableau PhpMyAdmin:

[Image: phpmyadmin.jpg]

L'export de la table:


DROP TABLE IF EXISTS `classement`;
CREATE TABLE IF NOT EXISTS `classement` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`joueur_id` int(11) NOT NULL,
`pseudo` varchar(20) COLLATE utf8_bin NOT NULL,
`points` int(11) NOT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=18 ;


INSERT INTO `classement` (`id`, `joueur_id`, `pseudo`, `points`) VALUES
(1, 12, 'Bob', 52),
(2, 5, 'Arthur', 6),
(3, 98, 'Sam', 6),
(4, 10, 'Bertrand', 33),
(5, 8, 'Bernadette', 1),
(6, 98, 'Jean', 3),
(7, 654, 'Bill', 0),
(8, 2, 'Gertrude', 987),
(9, 1, 'Léontine', 789),
(10, 3, 'Thérese', 456),
(11, 7, 'Bernadette', 456),
(12, 9, 'Jeannine', 0),
(13, 8, 'Maman', 7827),
(14, 78, 'Tata', 4534),
(15, 87, 'Ambroise', 453),
(16, 45, 'Devellopez', 535),
(17, 65, 'Moi', 1237);