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()
|