my $i = 1;<br />my %members = $self->getMembers();<br /> my $list = "";<br /> foreach my $member2 (keys %{$members}) {<br /> <br /> $list .= "Snail $i = $member2\n"; $i++;<br /><br /> } <br /> <br /><br />&send($self,$list,$username);<br /><br />$msn->do_one_loop(); <br /><br /> $snails = [];<br />push(@$snails, 0) for(keys %{$self->{Members}});<br /><br /> &send($self,"Starting The Race....\n",$username); sleep(2);<br /><br />my @race;<br />my $winner = undef;<br /><br /> while (not $winner) { #while there is no winner<br /> my $snail = int rand $i; #pick a snail<br /> $snails->[$snail]++; # move it<br /> $winner = $snail + 1 if ($snails->[$snail] >= 30); # did it win?<br /> $msn->do_one_loop(); #give other stuff a chance<br /> @race = (@race, "going ....\n" . showsnails($snails) );<br /> }<br /> <br /><br />$self->{snailz}->{race} = @race;<br />$self->{snailz}->{winner} = $winner;<br /><br /><br /> <br /><br />sub showsnails {<br /> my $snails = shift;<br /> my $reply = "";<br /> my $i = 1;<br /> foreach my $snail (@$snails)<br /> {<br /> $reply .= $i++ . " " . "- " x $snail . "(sn)" . "- " x (30 - $snail) . "\n";<br /> }<br /> return $reply;<br />}
My problem is such: when it gets to sending the race through the loop it first sends '56' then gets stuck in a infinite loop sending '0'. :huh:
I think it may have something to do with how i have used the hash to get from the command to the loop, thought i could work, can anyone suggest why this is happening and a way that it would work?