在尝试使用遗传算法玩我编写的蛇游戏时,我试图模拟按键,以便算法可以玩游戏。
我正在使用pygame.key.get_pressed()来找出按下键盘上的哪个键,并正在使用pygame.event.Event(pygame.KEYDOWN ...)将事件插入事件队列中,以模拟算法。
但是,pygame.key.get_pressed()似乎无法识别算法创建的按键事件。
如何获得玩游戏的算法?
这就是我模拟按键的方式:
key_event = pygame.event.Event(pygame.KEYDOWN, {'unicode':'', 'key':273, 'mod':0, 'scancode':72, 'window':None})
pygame.event.post(key_event)
key_event = pygame.event.Event(pygame.KEYUP, {'key':273, 'mod':0, 'scancode':72, 'window':None})
pygame.event.post(key_event)
这就是游戏移动蛇的方式:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
keys = pygame.key.get_pressed()
for key in keys:
if keys[pygame.K_LEFT]:
self.dirnx = -1
self.dirny = 0
self.turns[self.head.pos[:]] = [self.dirnx, self.dirny]
elif keys[pygame.K_RIGHT]:
self.dirnx = 1
self.dirny = 0
self.turns[self.head.pos[:]] = [self.dirnx, self.dirny]
elif keys[pygame.K_UP]:
self.dirnx = 0
self.dirny = -1
self.turns[self.head.pos[:]] = [self.dirnx, self.dirny]
elif keys[pygame.K_DOWN]:
self.dirnx = 0
self.dirny = 1
self.turns[self.head.pos[:]] = [self.dirnx, self.dirny]
我在想,我将不得不改变游戏检查事件队列的方式,而不是检查实际按下了哪些键,但是我不知道该怎么做。