首页 > 代码库 > pygame.draw.line

pygame.draw.line



import traceback
import math
import pygame
from pygame.locals import *


pygame.display.init()
pygame.font.init()

sizes = {
    "screen" : ( 300, 480 )
}

colors = {
    "line" : ( 255, 255, 255 ),
    "rect" : ( 100, 100, 100 ),
    "circle" : ( 100, 100, 100 ),
    "border" : ( 52, 135, 184 ),
    "background" : ( 255, 255, 255 )
}


screen = pygame.display.set_mode( sizes["screen"], 0, 32 )

def cin():
    for e in pygame.event.get():
        mouse_pos = pygame.mouse.get_pos()
        print mouse_pos
        if e.type == KEYDOWN:
            if e.key == K_ESCAPE:
                return False
    return True            


def draw():
    screen.fill( colors["background"] )
    ### 1
    pygame.draw.line( screen,
                      colors["border"],
                      ( 0, 0 ),
                      ( 0, sizes["screen"][1] ),
                      10 )
    pygame.draw.line( screen,
                      colors["line"],
                      ( 0, 0 ),
                      ( 0, sizes["screen"][1] ),
                      1 )

    ### 2
    pygame.draw.line( screen,
                      colors["border"],
                      ( 100, 0 ),
                      ( 100, 300 ),
                      10 )
    pygame.draw.line( screen,
                      colors["line"],
                      ( 100, 0 ),
                      ( 100, 300 ),
                      1 )

    ### 3
    pygame.draw.line( screen,
                      colors["border"],
                      ( 200, 100 ),
                      ( 200, -100 ),
                      10 )
    pygame.draw.line( screen,
                      colors["line"],
                      ( 200, 100 ),
                      ( 200, -100 ),
                      1 )

    ### 4
    pygame.draw.line( screen,
                      colors["border"],
                      ( sizes["screen"][0], 0 ),
                      ( sizes["screen"][0], sizes["screen"][1] ),
                      10 )
    pygame.draw.line( screen,
                      ( 255, 255, 255 ),
                      ( sizes["screen"][0], 0 ),
                      ( sizes["screen"][0], sizes["screen"][1] ),
                      1 )

    ### 5
    pygame.draw.circle( screen, colors["circle"], ( 100, 100 ), 50 )
    pygame.draw.arc( screen, colors["circle"], ( 150, 150, 100, 100 ), 0, math.pi, 2 )

    ### 6
    X = 10 / 2 + 1
    DX = 100 - ( ( ( 10 / 2 ) + 1 ) + ( ( 10 / 2 ) - 1 ) )
    pygame.draw.rect( screen,
                      colors["rect"],
                      ( X, 200, DX, 50 ) )
    pygame.display.update()


def prepare( func ):
    def _pre():
        pygame.event.set_grab( True )
        func()
        pygame.event.set_grab( False )
        pygame.quit()
    return _pre


@prepare
def main():
    while True:
        if not cin():
            break
        draw()
        
            
if __name__ == '__main__':
    try:
        main()
    except:
        traceback.print_exc()
        pygame.quit()
        input()

            


### 2 左右两边蓝不一样宽, ### 1 和 ### 3 不一样宽 

 ==> 先按照元线段上色,再在右边上色,再在左边上色,所以左右长度各为 width / 2 - 1, width / 2 + 1


### 5 

==> PyGame 画弧线真难看。


### 6 若要填充矩形,先计算好。(连小学数学也要为难我。。。。)

pygame.draw.line