Met de accelerometer een bal besturen

In dit voorbeeld wordt de callback accelerometer_data geregistreerd voor de accelerometergegevens met microbit.accelerometer.notify

Dit gebeurt wanneer de micro:bit nieuwe accelerometergegevens aanbiedt:

  • de accelerometer_data callback wordt aangeroepen met de nieuwe gegevens als argument
  • de callback registreert de gegevens als de player_direction
  • de lus while running: werkt de spelerspositie bij en tekent de bal opnieuw

Zie ook de API-documentatie:

pygame.init()
screen = pygame.display.set_mode((1280, 720))
clock = pygame.time.Clock()
running = True

player_direction = pygame.Vector2()
player_position = pygame.Vector2(screen.get_width() / 2, screen.get_height() / 2)


def accelerometer_data(data: AccelerometerData):
    player_direction.x = data.x / 100
    player_direction.y = data.y / 100


with KaspersMicrobit.find_one_microbit() as microbit:
    microbit.accelerometer.notify(accelerometer_data)

    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False

        screen.fill("gray")

        new_position = player_position + player_direction
        player_position.x = pygame.math.clamp(new_position.x, 8, screen.get_width() - 8)
        player_position.y = pygame.math.clamp(new_position.y, 8, screen.get_height() - 8)
        pygame.draw.circle(screen, "blue", player_position, 8)

        pygame.display.flip()

        clock.tick(60)

    pygame.quit()