整个程序打字效果

时间:2019-06-26 15:58:20

标签: python

我正在用Python 3做一个文字冒险游戏。有没有办法在每行之后不重复命令的情况下,为要打印的任何文字增加打字效果?

2 个答案:

答案 0 :(得分:0)

假设“键入效果”是指消息应一次缓慢出现一个字符,则可以定义一个函数,该函数可循环使用给定消息并一次使用一个字符打印一个字符。之间等待一点。确保在每个字符之后time.sleep使用缓冲区。

flush

如果您真的想将此值应用于游戏中的每个输出(我不建议这样做),您可以覆盖import time def slow_print(msg): for c in msg: print(c, end="", flush=True) time.sleep(0.1) print() slow_print("Hello World!") 函数,并保留对它的引用。原始print函数在新的慢速print函数中使用。

print

您也可以直接original_print = print def slow_print(msg): # same as above, but using original_print instead of print print = slow_print print("Hello World!") ,但是我建议将其定义为一个单独的函数,然后将其分配给def print(...)。这样,您仍然可以将此选项设置为可选,因为这很可能在开始的几分钟后使播放器烦人。

答案 1 :(得分:0)

我假设您希望字符看起来像有人在键入它们,所以我假设是

导入模块

import os
import sys
import time
from colr import color

定义您的功能

def function_name(phrase,speed,r_value,g_value,b_value):
for char in phrase:
    sys.stdout.write(color(char, fore=(r_value,g_value,b_value)))
    sys.stdout.flush()
    time.sleep(speed)

测试功能

function_name("Hello",0.05,0,255,0)
#prints the phrase "Hello" in green text

或者,您可以使用线程库编写该函数,如果需要的话,该函数将允许用户跳过键入效果。

import time, threading, os, sys, tty, termios
from colr import color

def slow_type_interrupt(phrase,speed,r_value,g_value,b_value):
    done = False # this acts as the kill switch, using if statements, you can make certain button presses stop the message printing and outright display it
    def type_out():
        for char in phrase:
            if done:
                break
            sys.stdout.write(color(char,fore=(r_value,g_value,b_value)))
            sys.stdout.flush()
            time.sleep(speed)
        os.system('clear')
        print(color(phrase,fore=(r_value,g_value,b_value)))

    t = threading.Thread(target=type_out)
    t.start()

    def getkey():
        ky = sys.stdin.fileno()
        Ab = termios.tcgetattr(ky)
        try:
            tty.setraw(sys.stdin.fileno())
            key = sys.stdin.read(1)

        finally:
            termios.tcsetattr(ky, termios.TCSADRAIN, Ab)
        return key

    while not done:
        key_press = getkey()
        if key_press == 'a': #You can replace a with whatever key you want to act as the "kill key"
            done = True
            os.system('clear')
            print(color(phrase,fore=(r_value,g_value,b_value)))

slow_type_interrupt("Hello this is a test. Pressing 'a' will end this and immediatley display the message",.05,0,255,0)

正如我在代码注释中提到的,a可以替换为您想要的任何内容。我之所以使用这种特殊方法来获取按键,是因为它几乎可以在运行Python的任何工具上使用。我建议阅读其他一些检索键盘输入的方法。

希望我能帮助您:)