我学习了一个蛇游戏教程,但由于某种原因,我无法获得匹配的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.TYPE
和pressed[QUIT]
的值与pg.QUIT
和pg.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
。