Использование Pygame и Pymunk Circle не будет появляться в пространстве

#python #python-3.x #pygame #pymunk

#python #python-3.x #pygame #pymunk

Вопрос:

Итак, я пытаюсь создать функцию, create_particle затем заставить функцию рисовать частичное с помощью draw_circle . Однако всякий раз, когда я открываю окно, я получаю свое серое окно, но частица не отображается. Я новичок как в pygame, так и в pymunk, поэтому приветствуется любая помощь.

 import sys, pygame, random, pymunk

BG = (94, 93, 93)
S_width = 800
S_height = 800

pygame.init()
Window = pygame.display.set_mode((S_width,S_height))
clock = pygame.time.Clock()
pygame.display.set_caption("H20 Particle simulation")
Window.fill(BG)
space = pymunk.Space()
space.gravity = (0,100)

def create_particle(space):
    body = pymunk.Body(1, 100, body_type = pymunk.Body.DYNAMIC)
    body.position = (400, 400)
    shape = pymunk.Circle(body,80)
    space.add(body, shape)
    return shape

def draw_circle(circle):
    for circle in circles:
        pos_x = int(circle.body.position.x)
        pos_y = int(circle.body.position.y)
        pygame.draw.circle(screen,(0,0,0),circle.body.position20)

circles = []
circles.append(create_particle(space))



while True:
    Window.fill((217,217,217))
    clock.tick(120)
    pygame.display.update()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
  

Ответ №1:

Требуется несколько изменений:

  • draw_circle() не требует параметра
  • Когда вы рисуете круг, вам нужно указать координаты и радиус
  • В основном цикле вызовите draw_circle() и space.step(0.02)

Вот обновленный код:

 def draw_circle():
    for circle in circles:
        pos_x = int(circle.body.position.x)
        pos_y = int(circle.body.position.y)
        pygame.draw.circle(Window,(0,200,0), (pos_x, pos_y), 20)

circles = []
circles.append(create_particle(space))

while True:
    Window.fill((217,217,217))
    draw_circle()
    space.step(0.02)
    clock.tick(120)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit() 
    pygame.display.update()
  

Комментарии:

1. Пожалуйста, примите ответ, чтобы этот пост был удален из списка «Без ответа». Спасибо.