Создание анимации эффекта пишущей машинки для строк в Python
Так же, как в фильмах и в играх, местоположение места появляется на экране, как будто оно набирается вживую. Я хочу сделать игру о побеге из лабиринта в Python. В начале игры он дает справочную информацию об игре:
line_1 = "You have woken up in a mysterious maze"
line_2 = "The building has 5 levels"
line_3 = "Scans show that the floors increase in size as you go down"
под переменными я попытался сделать цикл for для каждой строки, подобный этому:
from time import sleep
for x in line_1:
print (x)
sleep(0.1)
единственная проблема с этим заключается в том, что он печатает одну букву на строку. Время его в порядке, но как я могу заставить его идти на одной линии?
4 ответов
потому что вы пометили свой вопрос python 3, я предоставлю решение python 3:
- изменить конечный символ печати на пустую строку:
print(..., end='')
- добавить
sys.stdout.flush()
чтобы сделать его печать мгновенно (потому что выход буферизован)
окончательный код:
from time import sleep
import sys
for x in line_1:
print(x, end='')
sys.stdout.flush()
sleep(0.1)
сделать его случайным также очень просто.
-
добавить этого импорт:
from random import uniform
-
изменить
sleep
вызовите следующее:sleep(uniform(0, 0.3)) # random sleep from 0 to 0.3 seconds
lines = ["You have woken up in a mysterious maze",
"The building has 5 levels",
"Scans show that the floors increase in size as you go down"]
from time import sleep
import sys
for line in lines: # for each line of text (or each message)
for c in line: # for each character in each line
print(c, end='') # print a single character, and keep the cursor there.
sys.stdout.flush() # flush the buffer
sleep(0.1) # wait a little to make the effect look good.
print('') # line break (optional, could also be part of the message)
вы можете изменить символ конца строки автоматически добавляются к печати print("", end="")
. Для печатиfoobar
, вы могли бы сделать это:
print("foo", end="")
print("bar", end="")
С документация:
все аргументы без ключевых слов преобразуются в строки, такие как str (), и записываются в поток, разделяются sep и следуют end. И sep, и end должны быть строками; они также могут быть None, что означает использование значений по умолчанию.