2016-11-20 1 views
0

파이 게임에서 '10 x 10'텍스트를 인쇄하려고합니다. 10은 sizeOfGrid 변수에 정수로 저장됩니다. 나의 현재 코드는 다음과 같습니다파이 게임에 텍스트로 정수 표시

text = font.render((str(sizeOfGrid),'x',str(sizeOfGrid)), 1, (10, 10, 10)) 
textpos = (32,210) 
screenDisplay.blit 

내가 프로그램을 실행하면 오류 exceptions.TypeError: text must be string or unicode를 반환합니다. 이 오류를 이해하지 못하거나 10을 문자열로 변환 할 때 잘못된 점이 있습니다.

답변

1

font.render의 첫 번째 인수는 string 또는 unicode 데이터 유형이어야합니다. 당신은 아마도 그것을 바꿀 필요가있을 것입니다. (str(sizeOfGrid),'x',str(sizeOfGrid) 대신 "%d x %d" % tuple([sizeOfGrid]*2)과 같은 것을 쓸 수 있습니다.

"%d x %d" 부분은 두 자리 숫자의 인수를 요구하는 문자열 형식입니다. 튜플 샘플 (4, 4)을 사용하면 "4 x 4" 문자열을 얻을 수 있습니다.

[sizeofGrid]*2[10, 10]하고 tuple([sizeOfGrid]*2) 우리 두 자리 인수 될 일이 (10, 10), 어디 그 % tuple([sizeOfGrid]*2), 우리가 인수 다음에 모듈을 사용하여, 문자열 인수를 추가합니다. 이처럼 사용할 수 있습니다

text = font.render("%d x %d" % tuple([sizeOfGrid]*2), 1, (10, 10, 10)) 
+0

나는이 방법을 시도하고 내가 그것을 처음 실행을 열심히하지만 다른 모든 시간 그것은 내 코드의 다른 부분에서 오류가 발생했습니다와 충돌하는 pyscripter 발생했습니다. 오류를주는 코드는'text = font.render ("격자의 크기 :", 1, (10, 10, 10))의 첫 번째 줄입니다. textpos = (35,165) screenDisplay.blit (text, textpos)'오류를 반환합니다 'pygame.error : 텍스트 너비가 0' –

+0

완벽! zero-text-width 에러는 파이 게임의 모듈과는 완전히 다른 에러입니다. 한 가지 해결책은 [pygame.quit] 대신에 'pygame.display.quit'를 사용하여 디스플레이를 종료하는 것입니다 (여기서는 설명하지 않습니다). [here] (http://stackoverflow.com/questions/20850868/text-has-zero -width-after-reinitializing-pygame-display). – internetional

+0

그것은 작동합니다! 고맙습니다! –

0

은 내가 먼저, 당신이 튜플을 제공하는 문자열을 아규먼트 기대한다이

screenDisplay.blit(font.render("{0}x{0}".format(sizeOfGrid), True, (10, 10, 10)), (32, 210)) 

font.render 같은 것을 사용합니다.

참고 : 두 값 모두 sizeOfGrid이므로 {0}x{0}을 사용했습니다.