2

私は完全なperl初心者であり、この質問がそれほど愚かではないことを願っています!

私は絞首刑執行人スタイルのゲームを書き込もうとしていますが、何らかの理由でSTDINが残りのwhileループの前に実行されているように見えることを除いて、すべてが機能するようにしています-したがって、何かが印刷される前に、すべての文字の推測を入力する必要がありますアウト

while()
{
    foreach $letter (@currentword)
    {
        print "$letter";
    }
    print "\n";
    print "Guess a letter: \n";
    chomp($guess = <STDIN>);
    $guess=lc(substr($guess,0,1));  
    if ( $randword =~ /($guess)+/i )
    {
        print "Correct!\n";
        for ($index=0; $index<$wordlength; $index++)
        {
            if ($wordarray[$index] eq $guess)
            {
                $currentword[$index]=$wordarray[$index];
            }
        }       
    }
    else
    {
        print "Incorrect! try again\n";
    }   
    $guesses -= 1;
    last if $guesses < 1;
    $finalword = join("",@currentword);
    last if ($finalword eq $randword);  
}
4

1 に答える 1

0

STDOUTは端末以外のものに接続する必要があるため、ラインバッファリングの代わりにブロックバッファリングが使用されます。追加してみてください

$| = 1;

(ただし、STDINから読み取ると、STDOUTがフラッシュされると思いました。)

于 2012-12-23T22:07:59.517 に答える