2014-01-16 3 views
0

나는이 주사위를 한번 굴리기 만하면되지만, 나는 50 번 굴려서 공을 굴린다. 뭐가 문제 야!?이 다이가 여러 번 굴러가는 이유는 무엇입니까?

while True: 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       pygame.quit(); sys.exit() 
     pygame.display.update() 
     if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE: 
      diceRoll = random.randint(1, 4) 
      diceRollLabel = myFont.render(str(diceRoll), 1, black) 
      window.blit(diceRollLabel, (580, 35)) 
      print("Dice roll test", diceRoll) 
      pygame.display.update() 

는 여기가 처음 게시되었을 때 코드입니다 :

게시 된
while True: 
for event in pygame.event.get(): 
    if event.type == pygame.QUIT: 
     pygame.quit(); sys.exit() 
pygame.display.update() 
if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE: 
    diceRoll = random.randint(1, 4) 
    diceRollLabel = myFont.render(str(diceRoll), 1, black) 
    window.blit(diceRollLabel, (580, 35)) 
    print("Dice roll test", diceRoll) 
    pygame.display.update() 
+1

스페이스 바를 잡고 있습니까? – JeremyFromEarth

+1

게시물에 들여 쓰기를 수정하십시오. 서면으로, 그것은 실행되지 않습니다. 그리고 이것을 실행시키기 위해 들여 쓰기 할 수있는 최소한 하나의 가능한 방법은 당신이보고있는 문제를 정확하게 일으킬 것입니다. – abarnert

+1

누군가가 OP의 들여 쓰기를 수정해야한다고 생각하지 않습니다. 잘못된 들여 쓰기가 실제 문제라는 것을 확신합니다. 게시 된 내용을 변경하면 관련 정보가 숨겨집니다. – abarnert

답변

2

, 코드가 단지 IndentationError을 마련하고 실행을 거부합니다. 아마 실제 코드는 다른 방식으로 들여 쓰여질 것입니다. 대부분의 경우이 방법 대신 각 이벤트에 대한 event.type == KEYDOWN을 확인하는

while True: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.quit(); sys.exit() 
    pygame.display.update() 
    if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE: 
     diceRoll = random.randint(1, 4) 
     diceRollLabel = myFont.render(str(diceRoll), 1, black) 
     window.blit(diceRollLabel, (580, 35)) 
     print("Dice roll test", diceRoll) 
     pygame.display.update() 

, 당신은 마지막 이벤트가 event.type == KEYDOWN 있었다 본 여부를 확인, 모든 이벤트를 통해 것입니다. 새 이벤트가있을 때까지 바깥 쪽 루프를 통과 할 때마다 마지막 이벤트는 여전히 KEYDOWN입니다.


는이 문제가있는 경우, 그것을 해결하기 위해, 당신은 단지 for 루프 내부의 if을 넣어해야합니다. 당신은 아마도 거기에 update을 원할 것입니다. 그래서이 그들이처럼 그들을 탭과 공백을 혼합 할 수있는 편집기를 사용하여, 그들에게 두 가지를 구별 할 수있는 방법을 제공하지하고 있다는처럼

while True: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.quit(); sys.exit() 
     pygame.display.update() 
     if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE: 
      diceRoll = random.randint(1, 4) 
      diceRollLabel = myFont.render(str(diceRoll), 1, black) 
      window.blit(diceRollLabel, (580, 35)) 
      print("Dice roll test", diceRoll) 
      pygame.display.update() 

이유 중 하나는 많은 초보자 들여 쓰기 문제가 메모장 또는 텍스트 편집기. 이 경우 거의 모든 다른 편집기를 찾고 싶습니다. 또한 -tt 플래그로 파이썬을 실행할 수 있습니다. 코드에서 탭과 공백을 섞으면 보이지 않는 문제를 쉽게 찾아 낼 수 있습니다.