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()
==> 先按照元线段上色,再在右边上色,再在左边上色,所以左右长度各为 width / 2 - 1, width / 2 + 1
### 5
==> PyGame 画弧线真难看。
### 6 若要填充矩形,先计算好。(连小学数学也要为难我。。。。)