如何解决Pygame 杠杆图像显示按键点击问题
所以我有一个有 3 个不同方向的杠杆图像我的问题是当我使用 if [pygame.K_p] 多次我想在不同的图像之间切换但这是我的问题 VIDEO,当我点击 p 时,它显示右侧和中间的而不是左侧的,出于某种原因我必须按住 p 才能切换它我想要它,所以当我点击 p 1 次时它会切换我的杠杆方向。
在我的主循环中,我为第一个循环所做的事情我说如果我们点击 p 那么 move1 应该是 True 那么如果我的 move1 是真的那么它应该将我的杠杆图像的方向切换到右一个然后我的下一个我的形象是 在右侧,我们再次单击 p 它应该将我的图像切换回中间的 1 并重复 我不确定我是否做对了,但是是的
switch1 是*左边 switch2 是中间 switch3 右边
if keys[pygame.K_p]:
move1 = True
move2 = False
if keys[pygame.K_p]:
if switch1.direction == "switch3":
move1 = False
move2 = True
if switch1.direction == "switch3" or switch1.direction == "switch1":
if keys[pygame.K_p]:
switch1.direction = "switch2"
if switch1.direction == "switch2":
move1 = False
move2 = False
if move1:
move2 = False
switch1.direction = "switch3"
if rop1.y <= 200:
rop1.y += 2
else:
rop1.direction = "nomove"
if move2:
move1 = False
switch1.direction = "switch1"
if rop1.y <= 200:
rop1.y -= 2
else:
rop1.direction = "nomove"
我正在寻找一种方法来切换我的杠杆 1 键绑定“p”左右或中间重复谢谢!
解决方法
对于此任务,您必须使用 KEYDOWN
事件而不是 pygame.key.get_pressed()
。
pygame.key.get_pressed()
返回一个包含每个键状态的序列。如果某个键被按下,则该键的状态为 True
,否则为 False
。使用 pygame.key.get_pressed()
评估按钮的当前状态并获得连续移动。
键盘事件(参见 pygame.event 模块)仅在键的状态改变时发生一次。 KEYDOWN
事件在每次按下键时发生一次。 KEYUP
每次释放键时出现一次。将键盘事件用于单个操作或逐步移动。
创建一个“开关”表面列表。使用一个变量来存储当前“开关”Surface (current_switch
) 的索引。附加变量 (current_move
),指示按下 p 时是否需要增加或减少索引。
current_switch
的值可以是 0、1 或 2。0 表示左侧,1 表示中间,2 表示右侧。 current_move
为 -1 或 1。如果 current_move
为 -1,则按下 p 时开关向左移动。如果 current_move
为 1,则按下“p”时开关向右移动。当开关到达左侧或右侧位置时,必须更改 current_move
:
import pygame
pygame.init()
window = pygame.display.set_mode((200,200))
clock = pygame.time.Clock()
files = ['switch_left.png','switch_middle.png','switch_right.png']
switches = [pygame.image.load(f) for f in files]
current_switch = 0
current_move = 1
run = True
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_p:
if current_switch == 0:
current_move = 1
elif current_switch == len(switches)-1:
current_move = -1
current_switch += current_move
window.fill(0)
swtich_image = switches[current_switch]
window.blit(swtich_image,swtich_image.get_rect(midbottom = (100,150)))
pygame.display.flip()
pygame.quit()
exit()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。