我一直在寻找原因大约3个小时,但找不到任何解决方法。
没有错误,但是程序似乎无法检测到我的按键输入。 另外,我看不到代码有什么问题。
此外,我认为我不了解event.key和pygame.event.get()的运行方式。如果有人向我解释,我将不胜感激。
这是我的Ascii游戏中的代码,这只是我到目前为止所做的代码的开头。
class maingame:
def __init__(self):
exit = False
def processkey(self):
global hotkey,crazy
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == K_SPACE:
crazy = 1
if event.key == K_DOWN:
dir = 's'
y_option -= 1
hotkey = 2
if event.key == pygame.K_w:
dir = 'w'
y_option += 1
hotkey = 1
if event.key == K_LEFT:
dir = 'a'
if event.key == K_RIGHT:
dir = 'd'
else:
hotkey = 1
y_option = 0
crazy = 0
def displaymanu(self,hotkey):
print(">" if hotkey == 1 else " ","play")
print(">" if hotkey == 2 else " ","quit")
if hotkey == 1 and crazy == 1:
self.play()
elif hotkey == 2 and crazy == 1:
exit = True
if __name__ == '__main__':
while not quit:
displayee = maingame()
os.system('cls')
displayee.processkey()
displayee.processkey()
displayee.displaymanu(hotkey)
答案 0 :(得分:1)
PyGame将not work without a screen/window。因此,您的代码需要首先初始化PyGame,然后打开一个窗口(或全屏显示)。
据我对您代码的理解,它似乎应该显示一个菜单:
Data Input
data = '''\
id A B
1 1 2
2 2 3 '''
import io
import pandas as pd
df = pd.read_csv(io.StringIO(data), sep='\s+')
在按↑ / ↓(或 w / s )的位置移动> Play
Quit
光标在选项之间,然后 space 运行该选项。
代码的问题之一是您试图解释>
函数内部的按键。最好让函数执行单项操作,因此displaymanu()
中的所有键处理和processkey()
中的 only 屏幕绘图中的所有键处理。
我将您的代码修补到可以工作的地步。这涉及到修改类,以便初始化PyGame显示。该菜单需要显示在窗口中,因此添加了对新功能displaymanu()
的调用来代替drawTextAt()
。类print()
的许多成员变量都存在范围问题,但只需指定Maingame
变量名(使它们成为该类的成员)即可解决这些问题。
我还添加了一个游戏状态,以显示根据当前游戏所处的阶段需要更改按键处理的方式。它从菜单开始,在此菜单中,向上/向下仅更改菜单选项。但是随后在游戏过程中,向上/向下需要做一些完全不同的事情。
self.
答案 1 :(得分:0)
好像您没有将pygame.
放在此处的某些变量之前:
if event.key == K_SPACE: # Does not have pygame prefix
crazy = 1
if event.key == K_DOWN: # Does not have pygame prefix
dir = 's'
y_option -= 1
hotkey = 2
if event.key == pygame.K_w: # Does have pygame prefix
dir = 'w'
y_option += 1
hotkey = 1
if event.key == K_LEFT: # Does not have pygame prefix
dir = 'a'
if event.key == K_RIGHT: # Does not have pygame prefix
dir = 'd'
在其中添加pygame.
,之后应进行检测。但是奇怪的是,它在运行时没有产生NameError
异常。