python - 按下一个键会创建一个循环,直到您按下另一个键
问题描述
我正在用 Python 创建一个 Snake 游戏。按下方向键后,蛇将以缓慢的速度朝该方向移动,直到用户按下另一个键。按下一个键后我能够让蛇移动,但我无法通过按下另一个键来阻止它:(我正在使用 pygame)
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
while i==False:
time.sleep(0.2)
X_had1=X_had1 - 1
#Print operation
if event.type == pygame.KEYDOWN:
if event.key != pygame.K_LEFT:
i=True
解决方案
不可以。永远不要尝试在应用程序循环中使用附加循环来控制应用程序。您有应用程序循环使用它。添加一个控制方向的变量,并在您按下某个键时更改该变量的值。使用direction
更改位置 ( X_had1
, Y_had1
):
direction = None
speed = 1
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_LEFT:
direction = (-1, 0)
if event.key == pygame.K_RIGHT:
direction = (1, 0)
if event.key == pygame.K_UP:
direction = (0, -1)
if event.key == pygame.K_DOWN:
direction = (0, 1)
if direction:
X_had1 += direction[0] * speed
Y_had1 += direction[1] * speed
推荐阅读
- angular - 订阅中返回的对象数组不能分配给另一个数组
- docker - Docker:使用服务器上的节点模块文件夹跳过“npm install”
- javascript - JS:将输入值提交或传输到另一个 HTML 文件?
- windows - Cygwin sshd 与本地控制台之间的环境差异
- android - 在 Android Studio 中,从 Firebase 检索数据不起作用
- python - 已安装 pandas,但运行代码时仍然出现导入错误
- java - 如何在actionListener(java)中共享一个变量
- ios - Xcode Swift 以编程方式将 UITextfield X 位置设置为中心
- entity-framework - EF Core 3.0 - 无法查询抽象实体(即层次结构中的根实体)
- sql-server - MS Access 提供#Name?在某些情况下 SQL SP Fed 表单上的错误