Draw a Circle in Pygame

  1. Draw a Circle in Pygame
  2. Draw a Half-Circle in Pygame

This tutorial teaches you how to draw circles in Pygame.

The code displayed here is not the complete code for a valid Pygame window. If you are interested in a bare-bones framework, consult this article.

Draw a Circle in Pygame

To draw a circle, we only need the pygame.draw.circle method, which will provide the following arguments: Surface, Color, Center, Radius. The first one is just the surface we want to draw it on.

We draw it on the screen in our example, but we can use any surface. Then, we define the color in an RGB fashion with an array.

We continue by defining the circle center position on the previously mentioned surface. Last but not least, we define the radius.

Keep in mind that this code runs in the main loop of our game.

Code snippet:

pygame.draw.circle(
    screen,             # Surface to draw on
    [100, 100, 100],    # Color in RGB Fashion
    [100, 100],         # Center
    20,                 # Radius
)

Output:

Draw a Circle in Pygame - Output

Draw a Half-Circle in Pygame

Maybe you want to make a half-circle. We can also do this with the pygame.draw.circle method.

We just need to provide more arguments, which are: draw_top_right, draw_top_left, draw_bottom_left, draw_bottom_right. As their name suggests, they define whether this quarter will be drawn or not.

That’s why we work with booleans here. When we define one of them as true, the others won’t be drawn, but we can define multiple corners simultaneously.

The following code will draw the upper part of the circle.

Code snippet:

pygame.draw.circle(
    screen,             # Surface to draw on
    [100, 100, 100],    # Color in RGB Fashion
    [100, 100],         # Center
    20,                 # Radius
    draw_top_right=True,
    draw_top_left=True
)

Output:

Draw a Half Circle in Pygame - Output

Complete Example Code

# Imports
import sys
import pygame

# Configuration
pygame.init()
fps = 60
fpsClock = pygame.time.Clock()
width, height = 640, 480
screen = pygame.display.set_mode((width, height))

# Game loop.
while True:
    screen.fill((20, 20, 20))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    pygame.draw.circle(
            screen,             # Surface to draw on
            [100, 100, 100],    # Color in RGB Fashion
            [100, 100],         # Center
            20,                 # Radius
            draw_top_right=True,
            draw_top_left=True
    )

    pygame.display.flip()
    fpsClock.tick(fps)
Write for us
DelftStack articles are written by software geeks like you. If you also would like to contribute to DelftStack by writing paid articles, you can check the write for us page.

Related Article - Pygame Draw

  • Draw Rectangle in Pygame