Pygame按键与向导不一样



我学习了一个蛇游戏教程,但由于某种原因,我无法获得匹配的QUIT

class Game:
...
def handle_keys(self):
for event in pg.event.get():
pressed = pg.key.get_pressed()
if event.type == QUIT or pressed[QUIT]:
pg.quit()
sys.exit()
elif event.type == pg.KEYDOWN:
if pressed[pg.K_UP]:
self.snake.turn(self.UP)
elif pressed[pg.K_DOWN]:
self.snake.turn(self.DOWN)
elif pressed[pg.K_LEFT]:
self.snake.turn(self.LEFT)
elif pressed[pg.K_RIGHT]:
self.snake.turn(self.RIGHT)
def run(self):
while True:
self.clock.tick(10)
self.handle_keys()

蛇移动得很好,但无论我尝试哪种方法,甚至是两者的组合,退出按钮似乎都不起作用,如上所示。我使用的是最新的Ubuntu 20.04版本,不确定这是否有什么不同。我注意到event.TYPEpressed[QUIT]的值与pg.QUITpg.locals.QUIT的值完全不同。这也是我第一次尝试玩pygame,只是不知道为什么不能得到与我下面的指南相同的输出。

编辑:

我在网上找到的解决方案都不起作用;相关的";或";建议";在下面在经历了一个多星期的挣扎之后,我打算换成Unity3D。

也许可以试试

if event.type == pg.QUIT:

移除CCD_ 6
不要使用pg.locals.QUIT,请尝试使用pg.QUIT

我在代码中添加了几行代码,这很有效:

import pygame as pg
import sys
pg.init()
wn = pg.display.set_mode((600, 600))
class Game:
def __init__(self):
self.UP = 0
self.DOWN = 0
self.LEFT = 0
self.RIGHT = 0
self.clock = pg.time.Clock()

def turn(self, number):
pass

def handle_keys(self):
for event in pg.event.get():
pressed = pg.key.get_pressed()
if event.type == pg.QUIT or pressed[pg.QUIT]:
pg.quit()
sys.exit()
elif event.type == pg.KEYDOWN:
if pressed[pg.K_UP]:
self.snake.turn(self.UP)
elif pressed[pg.K_DOWN]:
self.snake.turn(self.DOWN)
elif pressed[pg.K_LEFT]:
self.snake.turn(self.LEFT)
elif pressed[pg.K_RIGHT]:
self.snake.turn(self.RIGHT)
def run(self):
while True:
self.clock.tick(10)
self.handle_keys()
pg.display.update()
game = Game()
game.run()

我把QUIT改成了pg.QUIT

相关内容

  • 没有找到相关文章

最新更新