Pygame 并且 Pymunk Programm 加载了一点后屏幕,然后关闭

Pygame and Pymunk Programm loads a bit with back screen and then closes

我正在学习这个教程https://www.youtube.com/watch?v=nNjRz31-7s0&t=181s,因为我想学习pymunk,但是后来出现了标题中描述的问题。我已经尝试重新启动 IDLE 并在线搜索解决方案,但很难找到,因为我没有收到错误消息。你能告诉我错在哪里吗?

import pygame
import pymunk

pygame.init()
display= pygame.display.set_mode((400,400))
clock= pygame.time.Clock()
space=pymunk.Space()
space.gravity = 0, -1000
FPS=80

def convert_coordinates(point):
    return point[0], 400-point[1]
    

body = pymunk.Body()
body.position= 200,300
shape = pymunk.Circle(body, 10)
shape.density= 1
shape.elasticity=1
space.add(body, shape)

segment_body = pymunk.Body(body_type=pymunk.Body.STATIC)
segment_shape= pymunk.Segment(segment_body, (0, 25), (400,25), 5)
segment_shape.elasticity=1
space.add(segment_shape)

def game():
    global segment_body,segment_shape
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
               return

        display.fill((255,255,255))
        x,y = convert_coordinates(body.position)
        pygame.draw.circle(display,(255,0,0), (int(x),int(y)) ,5)
        #pygame.draw.line(display, (0,0,0), (0,275), (400,200),5)
        pygame.display.update()
        clock.tick(FPS)
        space.step(1/FPS)

game()
pygame.quit()

感谢您的帮助!

我收到一条错误消息:

Aborting due to Chipmunk error: The shape's body must be added to the space before the shape.
    Failed condition: shape->body->space == space
    Source:Chipmunk2D\src\cpSpace.c:423

(请注意,pymunk 是一个糟糕的库,不会抛出 python 异常 >:-( )。

space.add(segment_shape) 应该是 space.add(segment_body, segment_shape)

我建议不要在此处使用 IDLE,因为它似乎无法正确重定向来自 pymunk 的错误消息。使用终端执行脚本(或者更好,更大规模的 IDE 像 Spyder 或 PyCharm)