2017-12-27 8 views
-2

동안 대기 할 수있게 만드는 방법은 테스트를하는 동안 제거했다고 생각하는 버그가 있었지만 수정하려고 시도했을 때 코드가 작동하지 않게되었습니다. 도움!게임을 만드는 동안 화면이 사용자 입력

if stage2 == 1: 
    screen.fill(black) 
    pygame.display.flip() 
    time.sleep(1) 
    screen.fill(blue) 
    pygame.display.flip() 
    time.sleep(0.25) 
    screen.fill(black) 
    pygame.display.flip() 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      run_me = False 
     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_LEFT: 
       screen.fill(red) 
       stage2 = stage2 + 1 
     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_RIGHT: 
       screen.fill(white) 
       stage2 = stage2 + 1 
     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_UP: 
       screen.fill(blue) 
       stage3 = stage3 + 1 
     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_DOWN: 
       screen.fill(green) 
       stage2 = stage2 + 1 

색상 및 다른 모든 코드는 코드를 추가하는 방식으로 표시되지만, 실제로 볼 수는 있습니다.

언제든지이 코드를 실행하면 화면이 파란색으로 깜박입니다.

+1

[방법 설명] (https://stackoverflow.com/help/how-to-ask)을 참조하고 [최소한의 완전하고 검증 가능한 예] (https://stackoverflow.com/help/)를 제공하십시오. mcve). – Galen

+0

'while while 루프'를 사용하여 이벤트를 확인하십시오. 그리고 객체를 제어하기 위해'sleep' 대신'pygame.time'을 사용하십시오. – furas

+0

예제보기 [time-control-object] (https://github.com/furas/python-examples/tree/master/pygame/time-control- 목적) – furas

답변

1

내가 무엇을하려고하는지 모르지만 run_me 또는 stage2을 변경할 때까지 while 루프를 사용하여 키를 확인하십시오.

if stage2 == 1: 

    screen.fill(black) 
    pygame.display.flip() 

    time.sleep(1) 

    screen.fill(blue) 
    pygame.display.flip() 

    time.sleep(0.25) 

    screen.fill(black) 
    pygame.display.flip() 

    while run_me and stage2 == 1: 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       run_me = False 
      if event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_LEFT: 
        screen.fill(red) 
        stage2 = stage2 + 1 
      if event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_RIGHT: 
        screen.fill(white) 
        stage2 = stage2 + 1 
      if event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_UP: 
        screen.fill(blue) 
        stage3 = stage3 + 1 
      if event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_DOWN: 
        screen.fill(green) 
        stage2 = stage2 + 1 

나머지 코드에서는 작동하지 않지만 나머지 코드는 표시하지 않을 수 있습니다.

sleep()을 사용할 때 키를 확인하지 않으므로 코드를 다시 생각하고 다른 것을 사용해야 할 수 있습니다. 즉.

def wait(time) 

    quit = False 
    key = None 

    current_time = pygame.time.get_ticks() 
    end_time = current_time + time*1000 

    while end_time > current_time and not key and not quit: 

     clock.ticks(25) 

     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       quit = True 
      elif event.type == pygame.KEYDOWN: 
       key = event.key 

     current_time = pygame.time.get_ticks() 

    return quit, key 


if stage2 == 1: 

    screen.fill(black) 
    pygame.display.flip() 

    quit, key = wait(1) 
    if quit: 
     run_me = False 
    # - or - 
    #run_me = not quit 

    screen.fill(blue) 
    pygame.display.flip() 

    quit, key = wait(0.25) 
    if quit: 
     run_me = False 
    # - or - 
    #run_me = not quit 

    screen.fill(black) 
    pygame.display.flip() 

당연히 예상대로 나머지 코드에서도 작동하지 않을 수 있습니다.

관련 문제