Variable comprise dans 1 intervalle [Résolu]

Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
- - Dernière réponse : cs_Aaron
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
- 24 juin 2007 à 18:12
Bonsoir,

Je souhaiterais savoir comment puis-je définir une variable $Level à partir d'une autre variable $XP comprise dans un intervalle.Je voudrais faire en sorte que si 0 < $XP < 1000 -> $Level 1, si 1000 < $XP < 2500 -> $Level 2...

0 -> 1
1000 -> 2
2500 -> 3
5000 -> 4
10000 -> 5
etc.

De plus je voudrais limiter $Level à 30.

Je vois comment faire avec un if... Mais je suis curieux de savoir s'il existe une autre méthode qui m'épargnerait justement d'écrire 30 if...
Peut-être avec un switch ? ... J'ai aussi pensé à une suite géométrique mais je ne sais pas trop comment écrire cela... Et je suppose que de toute façon cela doit être plus compliqué...

Merci d'avance

Aaron.
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
591
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
16 juillet 2009
1
3
Merci
Saell og blesuð

<?php
$xp=13850;
$limit=array(0,1000,2500,5000,10000,12500,15000);//[...]
$i=-1;
while(isset($limit[++$i])){
    if($limit[$i] < $xp && $xp < $limit[$i+1]){
        echo 'level='.($i+1);
    }
}
?>

Vilhjálms
Sigurðsdóttir aka Frëyjá

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Commenter la réponse de vilhjalms
Messages postés
196
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
10 août 2009
0
Merci
Non je vois pas d'autre solution, mais je suis étonné que tu arrive a 30 if,
est-ce que tes au courrant que l'on peut mettre plusieur condition dans un if ?

if ( $XP <= 1000 AND $XP >= 0 ) {
fait ce que tu ve
}

Mais sinon tu pe utiliser une formule mathématique

$XP / 1000 = $Level;
$Level = floor($Level);

Tout les 1000 Xp, le user gagne un level
et on arrondie le résultat à truc inférrieure pour que 5645 / 1000 = 5,654
                                                                               floor(5,654) = 5

faut encore mettre un param dans floor pour choisir l'unité de l'arrondie inférieure.

Si tu ve que plus le niveau est élevé, plus il est dur d'obtenir un level supplémentaire tu pe utiliser des fonction au carré par exemple ou plien d'autre truc mathématique dispo dans php, ou programme les toi meme si ce que tu ve n'est pas dispo.
Renseigne toi sur toutes les fonction mathématique dispo dans php, y 'en a un packet, logarithme et autre.

GRUNENBERGER Benoît
www.UnrealNetwork.net
Commenter la réponse de dvdstory
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
0
Merci
Bonjour,

Merci à vous deux pour vos réponses.
J'ai adopté la solution de vilhjalms, elle était plus simple et plus efficace.

Bien à vous.

Aaron.
Commenter la réponse de cs_Aaron