1. 程式人生 > >【原創】pygame學習筆記(2)----pie遊戲(需優化)

【原創】pygame學習筆記(2)----pie遊戲(需優化)

 

測試程式碼情況

(1)做到了弧形可以按出來

(2)數字的顯示正確

(3)出的一些低階錯誤

        temp:\\pygame2.txt 這樣的錯誤, temp\\pygame2.txt 導致 這樣的錯誤,

        pygame.display.update 這樣的錯誤,   pygame.display.update() 導致黑屏不重新整理

# -*- coding:utf-8 -*-
import pygame
import sys
from pygame.locals import *
import math
 
 
color=0,0,255
width=4
x=300
y=250
radius=200
position=x-radius,y-radius,radius*2,radius*2
piece1=False
piece2=False
piece3=False
piece4=False
 
 
pygame.init()
 
screen=pygame.display.set_mode((600,500))
caption=pygame.display.set_caption("draw with 1,2,3,4")
myfont=pygame.font.Font(None,60)
 
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
        elif event.type == KEYDOWN:
            if event.key==pygame.K_ESCAPE:
                sys.exit()
            elif event.key==pygame.K_1:
                piece1=True
            elif event.key==pygame.K_2:
                piece2=True
            elif event.key==pygame.K_3:
                piece3=True
            elif event.key==pygame.K_4:
                piece4=True

    #clear the screen              
    screen.fill((0,255,0))
 
    
    #draw the four numbers
    #有修改,pygame的角度是正上方0度,順時針轉的
    textImg3=myfont.render("3",True,color)
    screen.blit(textImg3,(x+radius/2-200,y+radius/2))
    textImg4=myfont.render("4",True,color)
    screen.blit(textImg4,(x+radius/2,y+radius/2))
    textImg1=myfont.render("1",True,color)
    screen.blit(textImg1,(x+radius/2,y+radius/2-200))
    textImg2=myfont.render("2",True,color)
    screen.blit(textImg2,(x+radius/2-200,y+radius/2-200))    
    

    #should the pieces be drawn?
    if piece1:
       start_angle=math.radians(0)
       end_angle=math.radians(90)
       pygame.draw.arc(screen,color,position,start_angle,end_angle,width)
       pygame.draw.line(screen,color,(x,y),(x,y-radius),width)
       pygame.draw.line(screen,color,(x,y),(x+radius,y),width)   
    if piece2:
       start_angle=math.radians(90)
       end_angle=math.radians(180)
       pygame.draw.arc(screen,color,position,start_angle,end_angle,width)
       pygame.draw.line(screen,color,(x,y),(x,y-radius),width)
       pygame.draw.line(screen,color,(x,y),(x-radius,y),width)     
    if piece3:
       start_angle=math.radians(180)
       end_angle=math.radians(270)
       pygame.draw.arc(screen,color,position,start_angle,end_angle,width)
       pygame.draw.line(screen,color,(x,y),(x-radius,y),width)
       pygame.draw.line(screen,color,(x,y),(x,y+radius),width)     
    if piece4:
       start_angle=math.radians(270)
       end_angle=math.radians(360)
       pygame.draw.arc(screen,color,position,start_angle,end_angle,width)
       pygame.draw.line(screen,color,(x,y),(x,y+radius),width)
       pygame.draw.line(screen,color,(x,y),(x+radius,y),width)       
    
    #is the pie finished?
    if piece1 and piece2 and piece3 and piece4:
       color=0,128,0

    pygame.display.update()

 

 

優化程式碼

    #is the pie finished?
    if piece1 and piece2 and piece3 and piece4:
        color=255,0,0
        textImg_good=myfont.render("farewell,good!",True,color)
        screen.blit(textImg_good,(x-150,y))
 
    pygame.display.update()