지금은 타일을 화면에 그려야 하는지를 결정하는 정수를 저장하기 위해 x 행 y 배열을 가지고 있습니다. (정수는 내 tile_arr
에서 blit 할 타일을 선택합니다.)파이 게임 블리 팅 전용 표면 업데이트
더 나은 성능을 위해, 단지 blit'ed로 변경된 int 만 원합니다.
예 1 : 예를 들어
지금 나는 같은 것을 가지고, 그런 다음 사용자가 무엇을하는지에 따라
tile_arr = [image1,image2,image3,image4]
arr = [[2,2,2],[2,2,2],[2,2,2]]
이 arr
에서 일부 값이 변경 될 수 있습니다 그렇게 말할 수 :
arr[0][0]=1
arr[2][1]=1
다음과 같이 배열을 제공합니다.
중간 행, 맨 윗줄, 2,2,2-에 이미지 번호 -1,2,2- 및 2,1,2에 : 화면에 블리 팅 때arr=[[1,2,2],[2,2,2],[2,1,2]]
지금, 나는 tile_arr
이미지를 블럭 전송 것 하단 행. 배열을 blit 할 때 각 값 또는 arr에 대해 screen.blit
을 사용합니다. 이는 9 개의 블릿입니다. 차라리 두 개의 블리트 만 할 것입니다. (회만 screen.blit
사용)
예 2
tile_arr = [green.bmp, red.bemp, blue.bmp]
feild_arr = [[0,0,0], [0,0,0], [0,0,0]]
출력 :
G G G
G G G
G G G
사용자 변경 feild_arr
[[1,0,1], [0,2,0], [0,1,2]]
로 출력 :
RGR
GBG
지금 난 단지 sceen.blit()
5 번 호출 할 GRB, 4 떠나 녹색 sqaures gree n, 아무것도 바뀌지 않았기 때문에.
다른 배열을 만드는 것을 생각했습니다. 이것은 첫 번째 복사본 일뿐입니다. 그런 다음 그것을 통해 실행하고 변경된 것을보기 위해 새로운 배열과 비교하지만, 나는 이것에 더 빠르고 더 좋은 방법이 있다고 생각합니다. 이제 예제는 3x3 밖에 없으므로 중복 배열을 만드는 것이 그리 나쁘지는 않지만 더 큰 배열로 작업하고 있습니다. 30x20 배열을 블리 칭할 때 얻을 수있는 모든 바로 가기가 필요합니다.
배열의 정수 값이 변경되었을 때만 blit을 수행하고 변경되지 않은 값을 건너 뜁니다 (blit 안 함)?
정확하게 이해할 수 있을지 모르겠다. 하지만 스프라이트 그룹을 해봤습니까? [1] 아마도 'RenderUpdates' http://www.pygame.org/docs/ref/sprite.html#pygame.sprite.RenderUpdates. [2] 너무 많은 배열을 사용하면 numpy가 유용 할 수 있습니다. – ninMonkey
고마워, 나는이'RenderUpdates'를 둘러보고 내가 원하는 것을 찾으면 그것이 내가 필요로하는 것처럼 보인다. – hammythepig