3

データベースを含む Python アプリを作成しています。なんと、イースターエッグを入れています。ユーザーが端末からデータベースを削除することにした場合、単純な (y/n) で確認するよう求められます。しかし、代わりに DLG2209TVX と入力すると、WarGames のそのシーンのセリフが印刷されます。私の情報源に目を通さない限り、誰もそれを見つけることはないでしょうが、それは問題ありません.

問題は、単純に線を印刷すると、シーンの再生速度が速すぎて、実際に台無しになってしまうことです。各キャラクターのセリフの間にタイマーを実装して処理を遅くしたところ、改善されましたが、それでも不自然に見えます。一度に行ごとに行うのではなく、各単語または文字をゆっくりと出力する標準化された方法はありますか? それとも、単語間にタイマーを追加し始めるべきですか?

4

3 に答える 3

4

標準化?私が知っていることではありません。しかし、これを試してください:

import random
import sys
import time

def slowprint(s):
    for c in s + '\n':
        sys.stdout.write(c)
        sys.stdout.flush() # defeat buffering
        time.sleep(random.random() * 0.1)

slowprint('Hello, world.')

を調整し0.1て文字間の最大遅延を変更し、time.sleep()行間に長い を追加してより劇的な効果を追加します。

于 2013-03-13T01:25:19.650 に答える
1

あなたも試すことができますcurses.delay_output()

In [48]: import curses

In [49]: for x in "foo bar":
    sys.stdout.write(x)     #prints each char with a delay of 100ms
    curses.delay_output(100)
   ....:     
foo bar
于 2013-03-13T01:40:21.580 に答える
1
import sys
import time
for c in gettysburg_address:
  sys.stdout.write(c)
  sys.stdout.flush()
  # 110 baud:
  time.sleep( 8./110 )
  # 300 baud:
  #  time.sleep( 8./300 )
于 2013-03-13T01:28:58.900 に答える