JeuWeb - Crée ton jeu par navigateur
[PHP] Commandes du type "/mp pseudo message" - 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 : [PHP] Commandes du type "/mp pseudo message" (/showthread.php?tid=5475)

Pages : 1 2 3


RE: [PHP] Commandes du type "/mp pseudo message" - niahoo - 06-06-2011

moi j'aime bien les

case '/w';case'/whisper', tu trim() ce qui reste et basta


RE: [PHP] Commandes du type "/mp pseudo message" - Argorate - 06-06-2011

C'est marrant j'ai mis en place cette fonctionnalité dans mon chat récemment,

au début je suis parti sur un if($message[0] == '/') et je commençais à me prendre la tete sur comment recup la cmd et les arguments (le split sur l'espace marche pas sinon ça veux dire que ton (tes) argument(s) (si c'est un message par exemple) ne peut pas contenir d'espace (fort ennuyeux donc))

Mais finalement, sephi m'a fait remarquer qu'une expression était très efficace et pas casse couille du tout.

Tu fait le preg_match et c'est du tout cuit, il te récupère le cmd et les arguments dans des cases d'un tableau prêt à l'emploi.
Après cela, c'est trivial de faire le traitement qui convient. Wink


RE: [PHP] Commandes du type "/mp pseudo message" - Sephi-Chan - 07-06-2011

C'est pas vraiment un hasard. Il est venu me trouver quelques heures après toi avec le même besoin. Je lui ai donc proposé d'ouvrir une discussion. Wink
Les implémentations sans regexp (je les posterais plus tard, je suis sur mon téléphone) sont effectivement plus performantes (~ 30%).


RE: [PHP] Commandes du type "/mp pseudo message" - Argorate - 07-06-2011

Ah bon, tu es sur mon jeu, Vegetaland? tu as quel pseudo? ^^

D'où tu sors la comparaison de perf sinon? ça m'interesse!
Surtout que gagner 30% signifierais justement de ne pas garder le système de regexp meme si c'est quand meme du tout cuit.


RE: [PHP] Commandes du type "/mp pseudo message" - Sephi-Chan - 07-06-2011

Je ne pense pas qu'il sois sur Devotion, mais il est venu me demander comment implémenter un tel système de commandes dans son chat.

Voici l'autre implémentation, plus efficace :


if message.index('/') == 0
split_messages = message.split(' ', 2)
command = split_messages[0]
arguments = split_messages[1]

case command
when '/w', '/whisper'
split_arguments = arguments.split(' ', 2)
target = split_arguments[0]
message = split_arguments[1]
# ...
when '/y', '/yell'
message = arguments
# ...
when '/sell'
split_arguments = arguments.split(' ', 4)
target = split_arguments[0]
item = split_arguments[1]
price = split_arguments[2]
message = split_arguments[3] || ''
# ...
else
# Commande non reconnue.
end
end

D'ailleurs j'ai noté un comportement assez curieux : sur ma machine, ce code est moins performant si j'enlève le if qui englobe ! Voici le code de benchmark et le résultat du benchmark :


user system total real
with regexp 0.950000 0.000000 0.950000 ( 0.950807)
without regexp 0.610000 0.000000 0.610000 ( 0.613019)
without regexp and if 1.170000 0.010000 1.180000 ( 1.175018)



RE: [PHP] Commandes du type "/mp pseudo message" - niahoo - 07-06-2011

étrange ... peut-être qu'index() est une fonction qui bouffe, t'as pas un truc équivalent au php ?
if ($message[0] == '/')


RE: [PHP] Commandes du type "/mp pseudo message" - Sephi-Chan - 07-06-2011

(07-06-2011, 07:15 PM)niahoo a écrit : étrange ... peut-être qu'index() est une fonction qui bouffe, t'as pas un truc équivalent au php ?
if ($message[0] == '/')

Justement, ce qui est curieux, c'est que la version avec le if est plus rapide !

On peut accéder aux caractères par leur index au sein de la chaîne de la même façon qu'en PHP (les caractères parasites en moins, bien sûr). Cependant, cette version n'offre pas de gain de performances.


if message[0] == '/'



RE: [PHP] Commandes du type "/mp pseudo message" - niahoo - 07-06-2011

ben avec le if c'est plus rapide parce que les message sans commandes ne rentrent pas dans le switch non ? à moins que tu n'aies testé qu'avec des commandes


RE: [PHP] Commandes du type "/mp pseudo message" - Sephi-Chan - 07-06-2011

Oui, c'est le même message (avec une commande) qui est utilisé dans le million d'iterarions.


RE: [PHP] Commandes du type "/mp pseudo message" - niahoo - 07-06-2011

arf sérieux tu veux pas rajouter text-decoration:underline sur les liens des messages ? (ou autre chose) J'ai encore raté ton lien :]

ça bug chez moi Pastebin