Вывод заканчивается в ноль при задержке текста - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь сделать текстовую приключенческую игру.Я новичок в Python и пытаюсь отложить текст, как в старых играх.

from time import sleep
import sys
def de(string):
    for c in string:
        print(c, end='')
        sys.stdout.flush()
        sleep(0.1)

Во всем коде делайте такие вещи, как:

print(de("\nPlayer health: "), player_health,)

или

user_fighter = input(de("what is the name of your fighter?"))

Выход всегда заканчивается "Нет"

Например,
Player health: None 100

Как это исправить?

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Как насчет двух функций.Один, который выводит текст, а другой, который выводит текст, но возвращает запись пользователя.

from time import sleep
import sys

def de(string, end='\n'):
    for c in string:
        print(c, end='')
        sys.stdout.flush()
        sleep(0.1)
    print(end,end='')

def de_input(string):
    de(string, end='')
    return input()

de("Welcome to game")
name = de_input("What is your name?")

de("Welcome %s" % name)
0 голосов
/ 28 сентября 2018

Ваша функция de ничего не возвращает и поэтому имеет возвращаемое значение None.Кроме того, у вас уже есть print внутри функции, которая делает то, что вы пытаетесь сделать.В результате вы можете вызвать функцию de напрямую, а не вызывать ее в print.

Код

from time import sleep
import sys
def de(string):
    for c in string:
        print(c, end='')
        sys.stdout.flush()
        sleep(0.1)
# ...
# Code
# ...

de("\nPlayer health: ")
print(player_health)

Выход

Player health: 100

«Состояние игрока» отображается буква за буквой, а значение отображается сразу после.

...