我正在尝试创建一个滚动条(游戏中,玩家似乎要跑无限远,直到他们死去)。在
我知道库和模块的存在(比如pygame
),这使得创建游戏变得更加容易,但是我试图在没有任何外部模块的情况下实现它。我在控制台窗口运行我的代码。在
我的代码:
import os, time, threading, keyboard
key = False
def checkForJump(i, key, character):
while True:
if key:
character = " xo "
print(character)
key = False
time.sleep(0.05)
i, character = printScreen(i, character)
i = 1
character = " x "
def printScreen(i, character):
sky1 = " * * oooo (()) "
sky2 = " ____ oooo * "
space1 = " "
space2 = " "
land = "------------------------------------------------------------------------------------------------------------------------"
os.system("cls")
print((sky1[i:] + sky1[:i] + "\n" + sky2[i:] + sky2[:i] + "\n") * 3)
print("\n\n")
print(space1)
print(space2)
print(character)
print(land)
i += 1
i = i % 120
return i, character
t = threading.Thread(target=checkForJump, args=(i, key, character))
t.daemon = True
t.start()
while True:
key = keyboard.is_pressed('q')
我的问题是:我使用线程(我是一个完全的初学者),因为我需要在检查任何用户输入时保持背景移动。在这种情况下,我检查是否按下了“q”。如果是的话,我希望我的角色变成“xo”而不是“x”。但是,当我按“q”键时,没有任何变化。在
问题是您将}的本地副本,因此在checkForJump中key始终为False。您应该访问全局键变量:
key
作为参数传递给checkForJump
函数,该函数为该函数生成{虽然对于这个简单的例子来说这是可行的,但是使用全局变量在线程之间传递消息不是一个好主意,而且很容易变得混乱。您可能想看看queue library,这是一种更好的线程间通信方式。在
相关问题 更多 >
编程相关推荐