図形の描画
Pygameでも直線や四角形などの図形の描画ができます。しかし、しょぼいです。直線なら点線などがない。など基本以外の図形がないです。

一番左の列が直線です。 aalineとlineの違いが表示では分かりません。aalineは太さの指定ができないことが違いの1つです。
隣が四角形とポリゴンです。
その隣が円と楕円です。
これらの線の太さを0にすると塗りつぶしになります。外枠(path)と中身(fdill)を別々に指定することはできません。
ゲームにこれらをどのように使えば効果的なのかイメージがわきません。
ソースです。

import pygame
import pygame.display
import pygame.draw as dw
import sys
import math

WHITE = (255, 255, 255)
BLACK = (  0,   0,   0)
RED   = (255,   0,   0)
GREEN = (  0, 255,   0)
BLUE  = (  0,   0, 255)
SILVER= (192, 192, 192)
YELLOW=(255, 255, 0)


def main():
    pygame.init()
    pygame.display.set_caption("Pygame 図形")
    screen = pygame.display.set_mode((640, 480))
    clock = pygame.time.Clock()
 
    angle = 0
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                # 終了ボタンで終了
                pygame.quit()
                sys.exit()

        screen.fill(BLACK)
        # 直線
        dw.line(screen, WHITE, [0,10], [140,10], 1)
        dw.lines(screen, RED,  False, [[0,100], [100,150], [140,100]], 4)
        dw.lines(screen, BLUE,  True, [[0,200], [100,280], [140,220]], 4)
        dw.aaline(screen, WHITE, [10,0], [10,300], True)
        dw.aaline(screen, WHITE, [20,0], [20,300], False)
        dw.aalines(screen, BLUE, False, [[50,0], [50,300], [80,0]], 1)
        dw.aalines(screen, RED, True, [[90,0], [90,300], [120,0]], 1)
        #四角形
        dw.rect(screen,RED, [180, 10, 120,70],4)
        dw.rect(screen,WHITE, [180,100,120,70],0) #width省略または0で塗りつぶし
        # ポリゴン
        dw.polygon(screen, BLUE,[[250,300], [200,420], [300,420]], 1)
        #円
        dw.circle(screen, RED, [400, 60], 50, 2)
        dw.circle(screen, BLUE, [400, 180], 50, 0)
        #楕円
        dw.ellipse(screen, RED, [320,280,160,80])
        dw.ellipse(screen, YELLOW, [320,380,160,80], 1)
        #円弧
        dw.arc(screen, YELLOW, [500,50,120,400], 0, math.pi*2)
        dw.arc(screen, BLUE, [500,50,120,400], angle, angle + math.pi / 4, 16)
        angle += math.pi / 4
        if angle >= math.pi * 2:
            angle = 0
        pygame.display.update()
        clock.tick(10)#1秒間のフレーム数 100msec

if __name__ == '__main__':
    main()