Boucle while?

Résolu
mr_orus1 Messages postés 89 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 9 avril 2008 - 22 avril 2006 à 00:14
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009 - 27 avril 2006 à 01:09
hello,

voici mon alias, je pense que j'ai un probleme avec la boucle while mais lequel :s
alias cont {
var %r = $read(oppose.txt)
var %n = 2
set %opp $gettok(%r,1,42)
set %oppr. $+ %n $gettok(%r,%n,42)
inc %n
while (%n <= $numtok(%r,32)) {
set %oppr. $+ %n $gettok(%r,%n,42)


}
set %chrono 60

voilà dans la boucle while, je set plusieurs variables en même temps soit :
%oppr.2
%oppr.3
%oppr.4

Si quelqu'un a une idée

merci par avance :-)

29 réponses

RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
23 avril 2006 à 17:08
ON *:TEXT:*:#:{
var %n = 2
tokenize 32 $strip($1-)
while (%oppr. [ $+ [ %n ] ]) {
var %mot = %oppr. [ $+ [ %n ] ]) if ($1 %mot) && ($nick %mot) {
;je ne comprends pas ce 2e if (quel est le rapport avec le nick ?!) Faudrait sûrement l'enlever
inc %point. [ $+ [ $nick ] ]
;pourquoi y-a-t-il un { après le SET ? FAUX
msg $msn.get($cid,fullroom) Bravo, le mot contraire est bien (*) %mot (*) â?© Ton score est de %point. [ $+ [ $nick ] ]
unset %oppr2
.timer.cont 1 2 cont
;Ton else est complètement faux. ELSE signifie SINON
}
inc %n
}
}
alias cont { var %r $read(oppose.txt), %n 2
set %opp $gettok(%r,1,42)
while (%n <= $numtok(%r,42)) { set %oppr. $+ %n $gettok(%r,%n,42) | inc %n }
set %chrono 60
.timerchrono 1 %chrono arret
msg $msn.get($cid,fullroom) (o) Trouve le contraire de ce mot (o)
msg $msn.get($cid,fullroom) (*) %opp (*)
}
alias arret {
;... a toi de le faire
}

pas testé, mais j'ai pas vu d'erreur (de syntaxe en tout cas c'est sûr)
en corrigeant, j'ai compris que ton timer déclence l'alias nommé ARRET, mais que les /msg qui étaient entre { } n'en faisaient pas partie
3
cs_KiNdErMaXi Messages postés 1052 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 30 novembre 2009 2
22 avril 2006 à 00:16
il faut incrément %n après set %oppr. $+ %n $gettok(%r,%n,42)


[irc://irc.voila.fr/kinder Kinder_Maxi]
0
mr_orus1 Messages postés 89 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 9 avril 2008
22 avril 2006 à 01:29
Bonsoir,

Comme ça tu veux dire?

alias cont {
var %r = $read(oppose.txt)
var %n = 2
set %opp $gettok(%r,1,42)
set %oppr. $+ %n $gettok(%r,%n,42)
while (%n <= $numtok(%r,32)) {
set %oppr. $+ %n $gettok(%r,%n,42) }
inc %n
set %chrono 60
.timerchrono 1 %chrono /arret {
msg $msn.get($cid,fullroom) (o) Trouve le contraire de ce mot (o)
msg $msn.get($cid,fullroom) (*) %opp (*)
}
}

en tout cas merci :-)
0
cs_KiNdErMaXi Messages postés 1052 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 30 novembre 2009 2
22 avril 2006 à 02:37
non le } après inc %n


[irc://irc.voila.fr/kinder Kinder_Maxi]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mr_orus1 Messages postés 89 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 9 avril 2008
22 avril 2006 à 11:44
Hello,

Pour dire vrai, je ne comprends pas ce que tu veux me dire

while (%n <= $numtok(%r,32)) {
set %oppr. $+ %n $gettok(%r,%n,42)
inc %n }



inc %n }
while (%n <= $numtok(%r,32)) {
set %oppr. $+ %n $gettok(%r,%n,42)

merci ;)
0
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
22 avril 2006 à 11:56
faudrait penser à reprendre tes anciens topics plutôt que d'en créer de nouveaux :/
c'est le 3e que tu crées à ce propos

.timerchrono 1 %chrono /arret {
msg $msn.get($cid,fullroom) (o) Trouve le contraire de ce mot (o)
msg $msn.get($cid,fullroom) (*) %opp (*)
}

mets plutôt ça :
.timerchrono 1 %chrono arret

et plus loin :
alias arret {
msg $msn.get($cid,fullroom) (o) Trouve le contraire de ce mot (o)
msg $msn.get($cid,fullroom) (*) %opp (*)
}

par rapport à ton premier code, la ligne où il n'y a rien (dans la boucle while), c'est ici qu'il faut que tu mettes le inc %n
0
mr_orus1 Messages postés 89 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 9 avril 2008
23 avril 2006 à 00:07
Hello,
j'ai essayé comme ça, mais ça ne me set toujours pas
- %opp.3
- %opp.4

alias cont {
var %r = $read(oppose.txt)
var %n = 2
set %opp $gettok(%r,1,42)
set %oppr. $+ %n $gettok(%r,%n,42)
while (%n <= $numtok(%r,32)) {
set %oppr. $+ %n $gettok(%r,%n,42)
inc %n }
set %chrono 60
.timerchrono 1 %chrono arret {
msg $msn.get($cid,fullroom) (o) Trouve le contraire de ce mot (o)
msg $msn.get($cid,fullroom) (*) %opp (*)
}
}

merci
0
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
23 avril 2006 à 00:15
corrige ton timer comme je te l'ai dit :/
0
mr_orus1 Messages postés 89 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 9 avril 2008
23 avril 2006 à 13:56
hello,


je t'explique, si je fais un alias arret ça me fera un deuxieme donc ça passera pas


.timerchrono 1 %chrono arret <<== ici arret est pour lancer l'alias arret

alias arret {
msg $msn.get($cid,fullroom) Le jeu est sur off, tapez @cont pour le relancer (*)
unset %opp %chrono %oppr.2 %oppr.3 %oppr.4

msg $msn.get($cid,fullroom) (o) Trouve le contraire de ce mot (o)
msg $msn.get($cid,fullroom) (*) %opp (*) , je le mettais dans le même alias car il en fait parti.


<HR>
Mais ça pourrait vreaiment avoir une incidence sur ma boucle while qui ne set pas
%oppr.3
%oppr.4 ?

ou j'ai plutot une erreur dans la boucle même?



The-Real-Orus-style
0
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
23 avril 2006 à 14:35
change le nom de l'alias alors
.timerchrono 1 %chrono arret.chrono

et plus loin :
alias arret.chrono {
msg $msn.get($cid,fullroom) (o) Trouve le contraire de ce mot (o)
msg $msn.get($cid,fullroom) (*) %opp (*)
}
0
mr_orus1 Messages postés 89 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 9 avril 2008
23 avril 2006 à 14:37
re hello...

En fait ma boucle tournais pas a cause d'une erreur idiote ...

while (%n <= $numtok(%r,32)) au lieu de while(%n <= $numtok(%r,42))

Pour qu'il gere les espace, vous me conseiullez un $remove?

En tout cas merci de votre patience ;)
0
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
23 avril 2006 à 15:01
quel espace ? celui après while ? il y en a toujours un !

faut mettre :
while (%n <= $numtok(%r,32)) { ... | inc %n }
0
mr_orus1 Messages postés 89 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 9 avril 2008
23 avril 2006 à 15:06
non par exemple

mon fichier texte est fait de façon suivante

question*reponse1*reponse2*reponse3

mais des fois il se presente exactement comme ça
question*reponse une*reponse deux*reponse trois

Dans le cas question*repon1*reponse2*reponse3, ça fonctionne bien car c'est juste un mot dans reponse2

mais dans le cas question*reponse une*reponse deux*.....

comme il y a un espace entre reponse et une par exemple, ça ne marche pas.

donc je demandais si avec $remove sur le 32 ça serait jute
0
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
23 avril 2006 à 15:29
tu peux pas utiliser un caractère comme délimiteur ?

j'ai du mal à te comprendre, donne des exemples concrets stp ^^
0
mr_orus1 Messages postés 89 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 9 avril 2008
23 avril 2006 à 15:51
ok je vais essayer de m'expliquer "clairement" lol

dans mon fichier text

question*reponse1*reponse2*reponse3

compte tenu de ma boucle et des tok


ça me set
%question1
%question2
%question3
jusque là, pas de soucis

maintenant si dans mon fichier txt, il y a des espaces

par exemple dans le fichier
j'ai
question*reponseespaceune*reponseespacedeux*reponseespacetrois

là ça marchera pas parce qu'il y a un espace dans le fichier

j'espere que j'ai été à peu pres clair..

Merci ;)



The-Real-Orus-style
0
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
23 avril 2006 à 16:40
while (%n <= $numtok(%r,32)) { ... | inc %n }
pourquoi ça serait pas 42 au lieu de 32 ici ?

au besoin, utilise un autre caractères (comme _ ou tout autre rarement utilisé ) qui représentera un délimiteur, comme dit précédement

qu'est ce qui ne marchera pas, comme tu le dis ?
0
mr_orus1 Messages postés 89 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 9 avril 2008
23 avril 2006 à 16:48
while (%n <= $numtok(%r,32)) { ... | inc %n }
comme je l'ai indiqué plus haut la boucle tournait pas à cause du 32 que j'ai remplacé par 42 (le delimitateur *)

maintenant je te donne un exemple un exemple concret

fichier txt :

Rire*pleurer*bouder

ici, pleurer = oppr.2
bouder = oppr.3

donc avec :

on *:TEXT:*:#: {
if ($strip($1) == %oppr.2) { if ($1- [ %oppr. $+[ %n ] ] ) && ($nick [ %oppr. $+ [ %n ] ] )
else set %point. [ $+ [ $nick ] ] $calc(%point. [ $+ [ $nick ] ] + 1) {
msg $msn.get($cid,fullroom) Bravo, le mot contraire est bien (*) %oppr.2 (*) â?© Ton score est de %point. [ $+ [ $nick ] ]
unset %oppr2 | timer.cont 1 2 cont
}
}
}
on *:TEXT:*:#: {
if ($strip($1) == %oppr.3) { if ($1- [ %oppr. $+[ %n ] ] ) && ($nick [ %oppr. $+ [ %n ] ] )
else set %point. [ $+ [ $nick ] ] $calc(%point. [ $+ [ $nick ] ] + 1) {
msg $msn.get($cid,fullroom) Bravo, le mot contraire est bien (*) %oppr.3 (*) â?© Ton score est de %point. [ $+ [ $nick ] ]
unset %oppr.3 | timer.cont 1 2 cont
}
}
}


ça me retourne si %oppr.2 = pleurer

bravo le mot contraire est bien pleurer

Maintenant, si mon fichier text il y a

Rire*se morfondre

ça ne marche pas, parce qu'il y a un espace entre se et morfondre

Tu vois ce que je veux dire?

merci ;)

The-Real-Orus-style
0
mr_orus1 Messages postés 89 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 9 avril 2008
24 avril 2006 à 02:03
Merci :d ;)
0
mr_orus1 Messages postés 89 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 9 avril 2008
24 avril 2006 à 13:56
hello,

J'ai un autres soucis, sur mon script, j'ai plusieurs ON *:TEXT

la lecture s'arrete à la fin du premier, alors j'ai essayé sur le premier on *:text: de rajouter un "^" pour faire
On ^*:text: pour le forcer a continuer de lire la page...

Mais ça ne marche pas sur tout les on:text:

J'ai bien pensé à rassembler les commandes mais je vois pas comment...

Si quelqu'un a une idée..

Merci :)
0
RCA ArKanis Messages postés 1287 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 21 février 2009
24 avril 2006 à 14:01
ON *:TEXT:*:#:{
if ($1 == !commande1) { ... }
elseif ($1 == !commande2) { ... }
elseif ($1 == !commande3) { ... }
;etc ...
else {
;mets ici ta boucle et tout ce qui va avec ...
}
}
0
Rejoignez-nous