현재 파이썬으로 기본 게임의 GUI에서 점수를 업데이트하는 데 많은 어려움을 겪고 있습니다.스코어 키퍼 업데이트
나는 왼쪽 상단 구석에 "O"로 나타나는 점수가 나타나는 것과 같은 코드를 가지고 있습니다. 그러나 점수는 프로그램 전체에 대해 0
으로 유지됩니다 (한 번만 렌더링되기 때문에 점수를 업데이트하기 위해 끊임없이 점수를 다시 계산하는 방법을 모르겠다). 나는 많은 방법을 시도했지만 성공하지 못했습니다. 코드 부분 점수 렌더링 및 변수 conlisionNumber
를 사용하여 점수를 추적하는 나의 시도는 다음과 같습니다
new = bears[:]
for bear in new: #this makes a copy of the array
if player.colliderect(bear):
windowSurface.blit(bearImageTwo, bear)
windowSurface.blit(playerImageTwo, player)
def explosion():
for bear in bears:
if player.colliderect(bear) and (moveLeft == False and moveRight == False and moveUp == False and moveDown == False):
bears.remove(bear)
colisionNumber += 1
if player.colliderect(bear) and (moveLeft == False and moveRight == False and moveUp == False and moveDown == False):
t = Timer(1, explosion)
t.start()
scoreFont = pygame.font.SysFont("impact", 20)
score = scoreFont.render("SCORE:" + str(colisionNumber), True, (192,192,192))
windowSurface.blit(score, (10,10))
는 참고 : 프로그램의 시작에 내가 넣어 :
global colisionNumber
colisionNumber = 0
이
때문에 경우에 이루어졌다 폭발 범위 내에서colisionNumber
을 정의한 다음
colisionNumber
을 정의하지 않았습니다.
score
변수에
도움을 주시면 감사하겠습니다.
당신은 당신의 질문에 대답했습니다. colisionNumber는 전역이지만 함수를 폭발 시키면 설정하려고 시도하고 로컬 복사본을 만듭니다. 함수에서 전역으로 정의해야합니다. (그것의 키워드) global 키워드는 원래의 정의가 아닌 함수에서 사용됩니다. 즉, 함수 나 클래스의 외부에 있기 때문에 전역 적입니다. – gkusner
프로그램의 시작 부분에서'colisionNumber = 0'을 사용하고 function에서'colisionNumber' 값을 변경시키는'global colisionNumber'를 사용하십시오. – furas