我正在为一个游戏编写一个功能,用户可以按键盘上的一个键,这样就可以将屏幕上绘制的所有对象的颜色更改为该颜色。例如,如果按下g
,所有内容都变为绿色。你知道吗
为此,我可以写:
while True:
while start==True:
clock.tick(30)
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == K_SPACE:
start =False
match_start=time.time()
if event.key==K_w:
colour=white
elif event.key==K_g:
colour=green
elif event.key==K_y:
colour=yellow
elif event.key==K_b:
colour=blue
elif event.key==K_r:
colour=red
elif event.key==K_p:
colour=purple
这个代码运行得非常好。但是,我以后需要编写完全相同的代码。为了避免重复,我考虑使用如下函数封装代码:
def set_colour():
if event.key==K_w:
colour=white
elif event.key==K_g:
colour=green
elif event.key==K_y:
colour=yellow
elif event.key==K_b:
colour=blue
elif event.key==K_r:
colour=red
elif event.key==K_p:
colour=purple
之后在程序中,我可以在代码中的几个不同点上多次调用函数,如下所示:
while True:
while start==True:
clock.tick(30)
for event in pygame.event.get():
if event.type ==QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key ==K_SPACE:
start =False
match_start=time.time()
set_colour()
不幸的是,这不起作用。我没有收到错误信息,但按下其中一个已定义的键时颜色不会改变。我认为这与需要更多输入数据的函数有关,但我不确定。你知道吗
如果你能给我任何建议,我将不胜感激。你知道吗
似乎您没有将事件传递给
set_colour()
函数以供其使用,然后您的函数不会返回所选颜色或对其执行任何操作以使颜色发生更改。似乎您的函数只更改了局部colour
变量,而不是调用函数的作用域中的变量。你知道吗您可能希望更改函数以返回所选的
colour
,并将事件作为如下参数传入:然后在调用此函数的代码中,按如下方式执行:
相关问题 更多 >
编程相关推荐