Hallo,
folgender Python-Code mit der Pygame Library sollte funktionieren. Es werden die Punkte berechnet, die als Mittelpunkte des kleineren Kreises dienen. Jedes Mal, wenn der Kreis gezeichnet wird, wird der nächste Punkt als neuer Mittelpunkt gewählt. Je mehr Punkte du hast, desto langsamer bewegt sich der kleinere Kreis.
Ich hoffe ich konnte helfen.
import pygame
import math
WIDTH = 800
HEIGHT = 800
RADIUS_CIRCLE_1 = 100
RADIUS_CIRCLE_2 = 50
POINTS = 200
START_POSITION = 0
points = []
def calculatePoints():
#Calculates all points of the center position of the smaller circle
increment = 360/POINTS
for i in range(POINTS):
angle = i*increment
x = WIDTH/2 + math.cos(math.radians(angle))*(RADIUS_CIRCLE_1+RADIUS_CIRCLE_2)
y = HEIGHT/2 + math.sin(math.radians(angle))*(RADIUS_CIRCLE_1+RADIUS_CIRCLE_2)
points.append([x, y])
def drawCircles(win):
global START_POSITION
#Draw the center circle
pygame.draw.circle(win, (0,0,255), (WIDTH/2, HEIGHT/2), RADIUS_CIRCLE_1, 3)
#Draw the smaller circle
pygame.draw.circle(win, (0,0,0), points[START_POSITION], RADIUS_CIRCLE_2, 3)
#+= 1 -> Move clockwise, -= 1 -> Move counterclockwise
START_POSITION += 1
if START_POSITION == POINTS-1 or START_POSITION == -POINTS-1:
START_POSITION = 0
calculatePoints()
def main():
win = pygame.display.set_mode((WIDTH, HEIGHT))
clock = pygame.time.Clock()
run = True
while run:
clock.tick(30)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
break
win.fill((255, 255, 255))
drawCircles(win)
pygame.display.flip()
pygame.quit()
if __name__ == "__main__":
main()