2016-12-01 10 views
2

Я разрабатываю командную строку с Python, и я хочу реализовать функцию, которая накладывает ограничение на время для игрока. В основном то, что я хочу сделать, это обновить первую строку (после того, как напечатанный), чтобы перейти от:Обновление ранее напечатанной строки (в CLI) с помощью Python?

"5.." 
    "5 + 3 = ?" 

к:

"5..4..3..2..1..Lost" 
    "5 + 3 = ?" 

После 5 секунд


print "5..3..2..1..Lost" 
    print "5 + 3 = ?" 
+0

'/ b' - символ обратного пробела, а'/r' - возврат каретки в Linux. Если вы не напечатали новую строку, вы можете просто напечатать '\ b * charNumber' или распечатать возврат каретки и убедиться, что ваша вторая строка не меньше, чем первая. – MeetTitan

+0

Взгляните на модуль '' curses'' Python - он позволяет произвольно перемещать курсор в текстовом приложении. Я не совсем уверен, как вы будете реализовывать эти временные сообщения во время ввода пользователем, но возможно, что возможно. – jasonharper

ответ

2

print(num, end='\r')

end= ключевое слово, почему это работает, print() заканчивается символом новой строки \n, но это может быть заменено любой строкой, такой как завершение строки возвратом каретки, вместо этого возвращает курсор в начало текущей строки. Вы должны from __future__ import print_function с python2.7

Что касается приема ввода в то же время вам нужно будет использовать threading модуль и вывести счетчик обновления в потоке

import time 
from _thread import * 
def printcount(secs): 
    i=5 
    while i != 0: 
     print(i, end='\r') 
     i -= 1 
     time.sleep(secs) 

start_new_thread(printcount, (1)) 
0

Если вы разрабатываете игру , вы хотите полностью контролировать вывод консоли, а не только текущую строку. Вы хотите что-то вроде встроенного модуля Python curses.

Взгляните на this little game Созданный с использованием проклятий, он изменяет вывод консоли по всему экрану, чтобы это могло помочь.