2013-07-01 3 views
-1

그래서 파이 게임을 살펴 보겠습니다. 저는 Python을 처음 접했고 책을 읽었으며 coursera 코스를 통해 일부 길을 갔다가 다양한 웹 사이트를 탐색했습니다.파이썬 파이 게임 애니메이션 방향 루프가 작동하지 않습니다.

내 질문은; 어떻게하면이 이미지를 계속 만들 수 있습니까? 예를 들어, 페이지 아래쪽에 "지그재그"를 붙이십시오.

아래, 오른쪽, 아래, 오른쪽, 아래, 오른쪽 - 페이지 맨 아래에 도달 할 때까지 멈추고 멈 춥니 다?

코드를 사용하여 겪고있는 문제는 그 이후입니다. 아래로, 오른쪽으로, 아래로 - 계속 내려 가서 내가 쓴 코드를 무시합니다.

import pygame, sys 
from pygame.locals import * 

pygame.init() 

FPS = 30 
fpsClock = pygame.time.Clock() 

DISPLAYSURF = pygame.display.set_mode((1400,1100), 0, 32) 
pygame.display.set_caption('mchammy') 

WHITE = (255, 255, 255) 
pigImg = pygame.image.load('mcsuperpig.png') 
pigx = 10 
pigy = 10 
direction = 'down' 

while True: 
    DISPLAYSURF.fill(WHITE) 

    if direction == 'down': 
     pigy += 2 
     if pigy == 100: 
      direction = 'right' 
    elif direction == 'right': 
     pigx += 2 
     if pigx == 100: 
      direction = 'down' 
    elif direction == 'down': 
     pigy += 2 
     if pigy == 200: 
      direction = 'right' 
    elif direction == 'right': 
     pigx += 2 
     if pigx == 200: 
      direction = 'down' 
    elif direction == 'down': 
     pigy += 2 
     if pigy += 700: 
      direction = 'right' 

    DISPLAYSURF.blit(pig.Img, (pigx, pigy)) 

    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 

    pygame.display.update() 
    fpsClock.tick(FPS) 

답변

1

기본적으로 - 당신은 루프 while을 오해하고 있습니다.

귀하의 /의 elif 조항은 거의 쓸모가있는 경우, 각 시간 while 루프 반복, 그것은 단지 그들 중 하나 ..를 입력하고 두 옵션 "down""right" 이미 당신에게 의미하는 처음 두 조항에 을 결코 적용되지 않는 조건 다른 것들에 도착하십시오.

당신이 그것을 변경하는 경우 :

if direction == 'down': 
    pigy += 2 
    if not pigy % 100: 
     direction = 'right' 
else: 
    pigx += 2 
    if not pigx % 100: 
     direction = 'down' 

그런 이미지가 방향을 그것이 어떤 방향으로 움직이는 모든 100 개 픽셀 전환됩니다.


나는 파이썬에 대해 더 많이 배우고, 이미지를위한 클래스와 운동을위한 적절한 함수를 만드는 것이 좋습니다. 코드를 멋지게 보이게하고 더 깨끗하게 만드십시오. 다른 코드와 마찬가지로 학습 Python을 통해 보셨을 것입니다.

게시 된
+0

내 코드를 입력하려고했지만 들여 쓰기 오류가 계속 발생합니다. 이미지에 대한 수업을 만드는 예제를 제공해 주시겠습니까? 나는 꽤 멍청하다. 그래도 도와 ​​줘서 고마워! 만약 유용하지 않다면! – AEGIS

1

문제가 함께 당신의 당신은 이미 처음 두

에서 그들을 덮여 이후 아래 세 가지 조항에 도달되지 않습니다 문 대신이 시도하는 경우 :

if direction == 'down' 
    pigy += 2 
    if (pigy == 100) or (pigy == 200) or (pigy == 700) 
     direction = 'right' 
elif direction == 'right' 
    pigx += 2 
    if (pigx == 100) or (pigx == 200) 
     direction = 'down' 

당신이 if pigy += 700, 유효하지 않습니다 (pigy + = 700은 700만큼 증가 함을 의미하므로) 나는 당신이 가정한다고 가정합니다. if pigy == 700

희망이 바로 궤도에 있습니다!

+0

고마워요! 이것은 나를 많이 도왔습니다! – AEGIS

관련 문제