2013-09-25 103 views
1

我想製作一個文本遊戲,它將以計時器開始,該計時器將每隔0.05秒添加一個字母形成一個字符串,因此它看起來像某人正在輸入一個句子。Python文本遊戲

Ex。 「你好,這是一個測試」將從h開始,然後e然後l然後o,在字母之間打印一段時間。

import time 
string = "Hello, this is a test" 
count=1 
while count >0: 
    time.sleep(0.05) 
    print(string[:1]), 

這是我試過的代碼,但我只是迷失了,不知道如何繼續。關於如何讓這項工作的任何想法?

+1

如果你隨機從0.03到睡眠時間0.08左右,那麼它會看起來更像是某人真的打字,尤其是如果你總是用很短的時間來處理空格和重複的字母。 – PaulMcG

回答

6

for循環迭代放在要打印字符串替換您while循環。這會給你每個字母,並在最後停止你的循環。我還建議把這種行爲在函數像這樣:

def typeText(text, delay=0.05): 
    for character in text: 
    print character, 
    time.sleep(delay) 

typeText("Hello, this is a text") 

爲了解決空間的問題,那麼你有3個選項,按照從多到少的副作用:

  • 切換到python3使用print作爲函數,end參數可以設置爲空字符串;
  • from __future__ import print_function這將給你相同的打印功能,沒有從python3所有其他警告;
  • 替換print通過sys.stdout.write()。這個功能就是打印默認
+0

你是使用Python 3.x還是'from __future __...'語句?如果是這樣,你需要更改該行'print(character,end ='')' – 3Doubloons

+0

我使用的是2.7,我在print_function中添加了它現在似乎工作了 –

+0

最後一件事情是>>>從解釋器出現在字符串的右側而不是下面,任何想法爲什麼? –

2

這是爲了做到這一點,

編輯:由於OP不打印每個字符之後要空間,所以我設置end=''

import time 
    string = "Hello, this is a test" 
    count=0 
    while count<len(string): 
      time.sleep(0.05) 
      print (string[count],end='') 
      count = count+1 
+0

打印時,字符串之間似乎有空格,例如。 「H l l o o」,任何想法如何解決這個問題? –

+0

@MattWalker,嘗試在打印後添加逗號,如'print string [count],' –

+0

當字符串本身有空間時會出現空格。可以是特定於控制檯的,不知道。 –

0

你可能要替換的「而」像

for i in range(len(string)): 

這將迭代通過字符串。

1

嘗試這樣的事:

import time 
string = "Hello, this is a test" 
count=1 
for i in string: 
    time.sleep(0.05) 
    print(i) 
1

您的代碼不工作環繞(因爲你想要的工作),因爲你有一個無限循環那裏。

你可以寫這樣的(就像改進現有代碼的):

import time 
string = "Hello, this is a test" 
count = len(string) 
while count > 0: 
    time.sleep(0.05) 
    print(string[:1]), 
    count -=1 

這是不是Python的

在這裏做的唯一正確的方法是像這樣的代碼:

import time 
string = "Hello, this is a test" 
for letter in string: 
    time.sleep(0.05) 
    print letter 

這是 Python的太:

for i in range(len(string)): 
    # Do something... 
+1

*什麼是Pythonic? /'我在範圍內(len(seq)):'?號/使用'爲obj在seq:'。 – PaulMcG

+0

我想我寫了相同的 – 9Algorithm

+1

但不是ha句。 – PaulMcG