Export classement

De Wiki - Fallen Galaxy
Aller à : Navigation, rechercher

Classement par échelle

Adresse du classement

Si vous désirez afficher le classement d'une galaxie sur votre site web, Fallen Galaxy dispose de fonctions permettant de le récupérer au format XML.

À savoir : Le classement des joueurs est accessible à l'adresse http://galaxie.fallengalaxy.com/ladder/players/échelle.

Le classement des alliances est accessible à l'adresse http://galaxie.fallengalaxy.com/ladder/allies/échelle.


Remplacez galaxie par le nom de la galaxie, et échelle par deux nombres séparés par un tiret, le premier nombre représentant le rang du début du classement, le second le rang de fin. Le premier joueur / la première alliance a pour rang 1.

Exemple : Pour récupérer le classement des 50 premiers joueurs de la galaxie Pandora, utilisez l'URL suivante : http://pandora.fallengalaxy.com/ladder/players/1-50.

Pour récupérer le classement de la 10e à la 20e alliance de la galaxie Pandora, utilisez l'URL suivante : http://pandora.fallengalaxy.com/ladder/allies/10-20.


Remarque 1 : le suffixe .xml à la fin de l'URL est optionnel. Les URL http://pandora.fallengalaxy.com/ladder/players/1-50 et http://pandora.fallengalaxy.com/ladder/players/1-50.xml sont équivalentes.

Remarque 2 : le classement est encodé au format UTF-8.

Description du format XML

Le XML renvoyé est composé d'un élément racine ladder, comportant plusieurs éléments player dans le cas du classement des joueurs, ou plusieurs éléments ally dans le cas du classement des alliances.

L'élément ladder dispose des attributs suivants :

  • type : type de classement demandé, parmi players (joueurs) ou allies (alliances)
  • lowerBound : début de l'intervalle du classement demandé
  • upperBound : fin de l'intervalle du classement demandé

L'élément player dispose des attributs suivants :

  • rank : classement du joueur
  • login : nom du joueur
  • ally : alliance du joueur (vide si le joueur n'a pas d'alliance)
  • level : niveau d'XP du joueur
  • points : nombre de points du joueur
  • achievements : nombre de trophées du joueur
  • faction : faction du joueur (1 = ODG, 2 = Confrérie, 3 = Réseau Autonome)
  • research : nombre de recherches effectuées par le joueur

L'élément ally dispose des attributs suivants :

  • rank : classement de l'alliance
  • name : nom de l'alliance
  • members : nombre de membres de l'alliance
  • organization : une valeur parmi democracy (démocratie), warmonger (militariste), anarchy (anarchie), oligarchy (oligarchie) ou tyranny (tyrannie)
  • points : nombre de points de l'alliance
  • achievements : nombre de trophées de l'alliance
  • faction : faction de l'alliance (1 = ODG, 2 = Confrérie, 3 = Réseau Autonome)

Affichage avec un script PHP 5, pas à pas (partie 1)

Remarque : le script requiert PHP 5 pour l'API SimpleXML. Il existe d'autres manières de faire si vous n'avez pas PHP 5 ; le code présenté plus loin a pour but d'aller au plus simple. Par ailleurs, les fichiers PHP doivent être encodés en UTF-8. Sous notepad++, vous pouvez le faire en sélectionnant tout le texte d'un fichier PHP, puis en cliquant sur le menu Format > Encoder en UTF-8 (sans BOM).

1. Créez un fichier PHP ladder.php

2. Définissez deux constantes correspond aux deux types de classements, joueurs et alliances :

<?php
define('LADDER_PLAYERS', 'players');
define('LADDER_ALLIES',  'allies');

3. Nous allons désormais ajouter une fonction générique pour récupérer le classement au format XML. Ajoutez une fonction getLadder, qui récupére en HTTP le classement d'une galaxie pour une échelle donnée, et renvoie le résultat sous forme d'un objet XML :

// Renvoie le classement d'une galaxie au format XML
// Paramètres :
// - galaxy : la galaxie dont on souhaite récupérer le classement (exemple : 'pandora')
// - type : le type de classement, parmi joueurs ou alliances (LADDER_PLAYERS ou LADDER_ALLIES)
// - lowerBound : début de l'intervalle souhaité
// - upperBound : fin de l'intervalle souhaité
// Renvoie : le classement au format XML
function getLadder($galaxy, $type, $lowerBound, $upperBound) {
	$url = 'http://' . $galaxy . '.fallengalaxy.com/ladder/' . $type . '/' . $lowerBound . '-' . $upperBound;
	return simplexml_load_file($url);
}

4. Avant d'afficher l'objet XML récupéré, définissez une fonction getOrganizationName, qui va renvoyer le nom des gouvernements possibles d'alliances.

// Renvoie le nom d'un gouvernement d'alliance pour une clé donnée
// Paramètres :
// - key : une valeur parmi ''democracy'' (démocratie), ''warmonger'' (militariste), ''anarchy'' (anarchie), ''oligarchy'' (oligarchie) ou ''tyranny'' (tyrannie)
// Renvoie : le nom du gouvernement
function getOrganizationName($key) {
	switch ($key) {
	case 'democracy':
		return 'Démocratie';
	case 'warmonger':
		return 'Militariste';
	case 'anarchy':
		return 'Anarchie';
	case 'oligarchy':
		return 'Oligarchie';
	case 'tyranny':
		return 'Tyrannie';
	default:
		return '???';
	}
}

5. Nous allons désormais afficher le classement. Ajoutez une fonction displayLadder, qui se chargera d'afficher le classement dans une table. La fonction affiche les en-tête des colonnes en fonction du type de classement (joueurs ou alliances), puis affiche le contenu du classement. La table reçoit la classe CSS .ladder, les lignes paires recoivent la classe CSS .even, et les lignes impaires la classe .odd ; ce qui vous permet de modifier facilement l'aspect graphique de la table en CSS. Nous reviendrons plus loin sur la classe .reference.

// Affiche le classement d'une galaxie dans une table. La table a une classe CSS .ladder, les lignes paires la classe .even, et les lignes impaires la classe .odd
// Paramètres :
// - xml : le XML du classement (voir getLadder)
function displayLadder($xml) {
	// Affiche les colonnes d'en-tête, en fonction du type de classement
	switch ($xml['type']) {
	case LADDER_PLAYERS:
?>
		<table class="ladder" cellspacing="0">
			<tr>
				<th>#</th>
				<th style="width: 160px;">Joueur</th>
				<th style="width: 160px;">Alliance</th>
				<th>Niv.</th>
				<th style="width: 100px;">Points</th>
			</tr>
<?php
		break;
	case LADDER_ALLIES:
?>
		<table class="ladder" cellspacing="0">
			<tr>
				<th>#</th>
				<th style="width: 160px;">Alliance</th>
				<th>Membres</th>
				<th style="width: 120px;">Organisation</th>
				<th style="width: 100px;">Points</th>
			</tr>
<?php
		break;
	}
	
	$i = 0;
	
	// Affiche le classement
	switch ($xml['type']) {
	case LADDER_PLAYERS:
		foreach ($xml->player as $player) {
?>
			<tr class="<?php echo ($i++ % 2) == 0 ? 'even' : 'odd'; ?><?php echo ($xml['reference'] && strcmp($xml['reference'], $player['login']) == 0 ? ' reference' : ''); ?>">
				<td style="text-align: center;"><?php echo $player['rank'] ?>.</td>
				<td><?php echo $player['login'] ?></td>
				<td style="text-align: center;"><?php echo $player['ally'] ?></td>
				<td style="text-align: center;"><?php echo $player['level'] ?></td>
				<td style="text-align: center;"><?php echo $player['points'] ?></td>
			</tr>
<?php
		}
		break;
	case LADDER_ALLIES:
		foreach ($xml->ally as $ally) {
?>
			<tr class="<?php echo ($i++ % 2) == 0 ? 'even' : 'odd'; ?><?php echo $xml['reference'] && strcmp($xml['reference'], $ally['name']) == 0 ? ' reference' : ''; ?>">
				<td style="text-align: center;"><?php echo $ally['rank'] ?>.</td>
				<td><?php echo $ally['name'] ?></td>
				<td style="text-align: center;"><?php echo $ally['members'] ?></td>
				<td style="text-align: center;"><?php echo getOrganizationName($ally['organization']) ?></td>
				<td style="text-align: center;"><?php echo $ally['points'] ?></td>
			</tr>
<?php
		}
		break;
	}
?>
		</table>
<?php	
}

6. Créez un fichier test.php

7. Il ne reste plus qu'à utiliser les fonctions précédentes : récupérez un classement à l'aide de la fonction getLadder, et affichez-le avec la fonction displayLadder. Ajoutez par exemple le contenu suivant pour afficher les 50 premiers joueurs de la galaxie Pandora (notez l'utilisation du CSS pour mettre en gris une ligne sur 2) :

<?php
require_once('ladder.php');
?>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<style type="text/css">
.ladder .even { background-color: #c0c0c0; }
		</style>
	</head>
	<body>
<?php
$ladder = getLadder('pandora', LADDER_PLAYERS, 1, 50);
displayLadder($ladder);
?>
	</body>
</html>


Classement individuel

Adresse du classement

Fallen Galaxy dispose également d'une fonction d'export de classement pour un joueur ou une alliance donnés. Ceci vous permet de récupérer votre classement ainsi que celui 4 joueurs / alliances précédents et suivants.

À savoir : Le classement individuel des joueurs est accessible à l'adresse http://galaxie.fallengalaxy.com/ladder/player/nom joueur.

Le classement individuel des alliances est accessible à l'adresse http://galaxie.fallengalaxy.com/ladder/ally/nom alliance.


Exemple : Pour récupérer le classement du joueur JayJay et des 4 joueurs précédents / suivants sur la galaxie Pandora, utilisez l'URL suivante : http://pandora.fallengalaxy.com/ladder/player/jayjay.

Pour récupérer le classement de l'alliance Fondation et des 4 alliances précédentes / suivantes sur la galaxie Pandora, utilisez l'URL suivante : http://pandora.fallengalaxy.com/ladder/ally/fondation.


Remarque : le suffixe .xml à la fin de l'URL est facultatif.

Description du format XML

Le format XML est le même que pour récupérer un intervalle du classement. L'élément ladder dispose en plus de l'attribut reference, qui contient le nom du joueur / de l'alliance demandé.


Affichage avec un script PHP 5, pas à pas (partie 2)

Nous allons réutiliser les fichiers précédents.

1. Ouvrez le fichier ladder.php

2. Ajoutez la fonction getIndividualLadder, qui va récupérer le classement d'un joueur / d'une alliance donné.

// Renvoie le classement d'un joueur ou d'une alliance sur une galaxie au format XML
// Paramètres :
// - galaxy : la galaxie dont on souhaite récupérer le classement (exemple : 'pandora')
// - type : le type de classement, parmi joueurs ou alliances (LADDER_PLAYERS ou LADDER_ALLIES)
// - name : le nom du joueur / de l'alliance dont on souhaite récupérer les informations
// Renvoie : le classement du joueur / de l'alliance et des 4 précédents / suivants au format XML
function getIndividualLadder($galaxy, $type, $name) {
	switch ($type) {
	case LADDER_PLAYERS:
		$url = 'http://' . $galaxy . '.fallengalaxy.com/ladder/player/' . $name;
		break;
	case LADDER_ALLIES:
		$url = 'http://' . $galaxy . '.fallengalaxy.com/ladder/ally/' . $name;
	}
	
	return simplexml_load_file($url);
}

3. Ouvrez le fichier test.php

4. Modifiez le pour afficher le classement du joueur JayJay (notez l'utilisation de la classe CSS reference, qui permet de mettre en jaune le joueur demandé) :

<?php
require_once('ladder.php');
?>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<style type="text/css">
.ladder .even { background-color: #c0c0c0; }
.ladder .reference { background-color: #ffcc00 !important; }
		</style>
	</head>
	<body>
<?php
$ladder = getIndividualLadder('pandora', LADDER_PLAYERS, 'jayjay');
displayLadder($ladder);
?>
	</body>
</html>


Captures d'écran

ExportLadder1.png

ExportLadder2.png