2013-02-10 6 views
1

나는 파이 게임을하고있다. 나는 많은 부분을 가지고 있는데, 그 중 두 부분이 아래에 나와 있습니다. 두 번째 게임에서는 일반적인 속도로 진행되지만 첫 번째 게임에서는 동일한 진드기 속도를 지니고 있지만 매우 느립니다. 내가 빠진 것이 있습니까? 그런데이 중 하나만 게임 루프주기마다 실행됩니다. #으로 끝나는 줄은 둘 사이에서 반복됩니다. 당신이 알파를 사용하지 을 경우파이 게임이 정말로 천천히.

window.blit(coverso, winrect) 
window.blit(texts['complete'][0], texts['complete'][1]) 
window.blit(stuff[0], stuff[1]) 

:

for event in pygame.event.get():# 
    if event.type==pygame.QUIT:# 
     pygame.quit()# 
     sys.exit()# 
    if event.type==pygame.KEYDOWN:# 
     if event.key==pygame.K_ESCAPE:# 
      pygame.quit()# 
      sys.exit()# 
for ball in balls:# 
    ball.update(winrect, walls)# 
window.fill(WHITE)# 
for box in boxes:# 
    pygame.draw.rect(window, box[1], box[0])# 
for wall in walls:# 
    if wall.orientation==0:# 
     pygame.draw.rect(window, BLACK, (wall.left, wall.top, wall.ttopleft, wall.height))# 
     pygame.draw.rect(window, BLACK, (wall.bbottomright, wall.top, wall.right-wall.bbottomright, wall.height))# 
    else:# 
     pygame.draw.rect(window, BLACK, (wall.left, wall.top, wall.width, wall.ttopleft))# 
     pygame.draw.rect(window, BLACK, (wall.left, wall.bbottomright, wall.width, wall.bottom-wall.holesize))# 
for ball in balls:# 
    pygame.draw.circle(window, ball.color, ball.center, round(ball.width/2))# 
    pygame.draw.circle(window, BLACK, ball.center, round(ball.width/2), 2)# 
window.blit(coverso, winrect) 
window.blit(texts['complete'][0], texts['complete'][1]) 
window.blit(stuff[0], stuff[1]) 
pygame.display.update()# 
pygame.time.Clock().tick(100)# 

와 두 번째 : 반복하지 않는 첫 번째 부분에서

#event loop 
    for event in pygame.event.get():# 
     if event.type==pygame.QUIT:# 
      pygame.quit()# 
      sys.exit()# 
     if event.type==pygame.KEYDOWN:# 
      if event.key==pygame.K_ESCAPE:# 
       mode='pause'# 
    #updates 
    updates=[] 
    for wall in walls: 
     wall.update() 
    for ball in balls:# 
     updates.append(ball.update(winrect, walls))#similar 
    #Seeing if won 
    won=True 
    for update in updates: 
     if not update: 
      won=False 
    if won: 
     if levels[loadinglevel][4]==0: 
      levels[loadinglevel][4]=1 
     levels[loadinglevel-1][4]=2 
     mode='complete' 
     stuff=getcomplete(loadinglevel, coins, bigfont, texts['complete'][1].bottom+100, winrect.centerx) 
     for wall in walls: 
      wall.bbottomright=100000 
      wall.ttopleft=90000 
     coins+=loadinglevel 
    #blitting 
    window.fill(WHITE)# 
    for box in boxes:# 
     pygame.draw.rect(window, box[1], box[0])# 
    for wall in walls:# 
     if wall.orientation==0:# 
      pygame.draw.rect(window, BLACK, (wall.left, wall.top, wall.ttopleft, wall.height))# 
      pygame.draw.rect(window, BLACK, (wall.bbottomright, wall.top, wall.right-wall.bbottomright, wall.height))# 
     else:# 
      pygame.draw.rect(window, BLACK, (wall.left, wall.top, wall.width, wall.ttopleft))# 
      pygame.draw.rect(window, BLACK, (wall.left, wall.bbottomright, wall.width, wall.bottom-wall.holesize))# 
    for ball in balls:# 
     pygame.draw.circle(window, ball.color, ball.center, round(ball.width/2))# 
     pygame.draw.circle(window, BLACK, ball.center, round(ball.width/2), 2)# 
    pygame.display.update()# 
    pygame.time.Clock().tick(100)# 
    if mode=='pause': 
     window.blit(coverso, winrect) 
+0

당신이 문제의 기능 (들)을 찾아 낼'cProfile'을 실행하려고 했습니까? –

+0

@Mike 전에는 들어 보지 못했습니다. 제가해야 할 일을 프로그램 중 하나에 넣을 수 있습니까? 감사. – PygameNerd

+0

무슨 일이 일어 났는지 알 수 없습니다. [Python 스크립트를 어떻게 프로파일 링 할 수 있습니까?] (http://stackoverflow.com/questions/582336/how-can-you-profile-a-python-script)와 [RunSnakeRun] (http : // www.vrplumber.com/programming/runsnakerun/)에서 병목을 찾으십시오. – sloth

답변

관련 문제