1

我正在尝试学习 PyMunk 库,我使用了他们网站上的示例。这是一个代码:

import pymunk               # Import pymunk..

space = pymunk.Space()      # Create a Space which contain the simulation
space.gravity = 0,-1000     # Set its gravity

body = pymunk.Body(1,1666)  # Create a Body with mass and moment
body.position = 50,100      # Set the position of the body

poly = pymunk.Poly.create_box(body) # Create a box shape and attach to body
space.add(body, poly)       # Add both body and shape to the simulation

while True:                 # Infinite loop simulation
    space.step(0.02)        # Step the simulation one step forward

当我运行它时,窗口没有出现,在 CMD 中它说:Loading chipmunk for Windows (64bit) [C:\Users\Theo\AppData\Local\Programs\Python\Python35\lib\site-packages\pymunk\chipmunk.dll]并且不加载任何东西。我等了一个小时。问题是什么?

4

2 回答 2

0

您应该尝试将 PyMunk 与 PyGame 或 PyGlet 连接起来,以便能够通过窗口对任何结果进行虚拟化。在此处查看更多信息:http: //www.pymunk.org/en/latest/

于 2017-08-27T22:53:52.077 回答
0

尝试运行演示时,我也有一个令人震惊的惊喜。

因此,正如@Teodor Cristian所说,基本演示不会绘制任何内容,除非您连接可视化库。这些是可选的,如文档中所述:PyGamePyGlet

这段代码不会尝试打开一个窗口,但是如果你添加一个打印语句,你会看到它确实“移动”了:

while True:              
    space.step(0.02) 
    print(body.position)  # add this line

您可以查看这些视频教程以插入Pyglet(但以 1.5 倍的速度观看它们......):

https://www.youtube.com/watch?v=0l2QrTNPCdc&list=PL1P11yPQAo7pH9SWZtWdmmLumbp_r19Hs&index=2

Pyglet的基本演示如下所示:

import pymunk
import pyglet
from pymunk.pyglet_util import DrawOptions

options = DrawOptions()

window = pyglet.window.Window(800, 600, "Brackets")

space = pymunk.Space()
space.gravity = (0, -1000)

body = pymunk.Body(1, 1666)
body.position = 400, 500

poly = pymunk.Poly.create_box(body, size=(100, 20))
space.add(body, poly)


# from here, the rest of the code is the render loop

@window.event
def on_draw():
    window.clear()
    space.debug_draw(options)


def update(dt):
    space.step(dt)  # Step the simulation one step forward


pyglet.clock.schedule_interval(update, 1.0 / 60)
pyglet.app.run()

另外,下载Pymunk示例文件夹并尝试一下。其中一些使用pyglet,一些pygame

https://github.com/viblo/pymunk/tree/master/examples

Pyglet也有一个示例文件夹,因此您也可以看到它是独立工作的:

https://github.com/pyglet/pyglet/blob/master/examples/hello_world.py

于 2020-01-29T03:12:36.487 回答