提问人:GGengar 提问时间:10/7/2023 最后编辑:GGengar 更新时间:11/24/2023 访问量:79
我想运行带有事件的 if 语句,这些语句也使用键盘输入来决定,并放置在函数中,但它不起作用
I want to run if statements with events, that also use keyboard inputs to decide, and are placed inside a function but it don't work
问:
我正在尝试使用 pygame 制作游戏,我想使用包含事件的函数,但是当我调用函数时,函数内包含事件的 if 语句不起作用
代码是这样的
def tryy():
print("this one will print")
# I want these two to be able to run
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_2:
print("but this won't")
if event.key == pygame.K_3:
print("this don't work too")
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
# I want it so that after 1 is press you can run the events inside the function "tryy" when the right key input is press for those events
if event.key == pygame.K_1:
tryy()
pygame.display.update()
pygame.quit()
我期望当我选择“1”时,例如,将作为战斗选项,然后调用函数“tryy”为您提供两个选项(两种不同的攻击),但它不起作用。
谁能帮我解决这个问题,谢谢
答:
0赞
Rabbid76
10/7/2023
#1
您必须在事件循环中调用,但在另一个事件的条件下不能调用。如果要确定在按下“1”后是否按下了“2”或“3”,则必须添加一个变量,指示按下了“1”。您还必须将事件对象传递给函数:tryy
def tryy(event):
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_2:
print("2")
if event.key == pygame.K_3:
print("3")
pressed_1 = False
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if pressed_1:
tryy(event)
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_1:
pressed_1 = True
else:
pressed_1 = False
-1赞
N0bita
10/10/2023
#2
if 语句有效,但未在函数中再次获取事件,因此 设置为 并且条件检查在 if 语句处失败。event.key
pygame.K_1
import pygame
pygame.init()
win = pygame.display.set_mode((500, 500))
pygame.display.set_caption("First Game")
def tryy():
print("this one will print")
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_1:
print("this will print")
if event.key == pygame.K_2:
print("but this won't")
if event.key == pygame.K_3:
print("this don't work too")
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_1:
tryy()
pygame.display.update()
pygame.quit()
如果你想在函数中有一个新事件,
评论