現在我有一個xyy數組來保存整數,決定哪個瓷磚畫到屏幕上。 (整數選擇我的tile_arr
中的哪個瓦片)pygame blitting只更新表面
爲了獲得更好的性能,我只希望改變後的整數再被blit。
例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
這會給我們陣列:
arr=[[1,2,2],[2,2,2],[2,1,2]]
現在,當blitting到屏幕時,我會從tile_arr
blit圖像:圖像編號1,2,2到頂行,2,2,2到中間行,和2,1,2到底部一排。當我對數組blit時,我使用每個值或arr的screen.blit
,這是9個blits。我寧願只做兩件事。 (使用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
GRB
現在我只想叫sceen.blit()
5次,留下4綠色的方形格力n,因爲沒有改變。
我想製作另一個數組,這只是第一個數組的副本。然後運行它並與新陣列進行比較以查看更改的內容,但我認爲有更好更快的方法。現在這個例子只有3x3,所以製作一個重複的數組並不算太壞,但我正在處理更多的數組,當你使用一個30x20的數組時,我需要所有的快捷鍵。
只有在數組中的整型值已被更改時,我該如何blit,並跳過(不要blit)沒有改變的值?
我不知道我是否完全理解。但你有沒有嘗試過任何精靈組? [1]也許'RenderUpdates' http://www.pygame.org/docs/ref/sprite.html#pygame.sprite.RenderUpdates。 [2]使用這麼多的數組,'numpy'可能對你有用。 – ninMonkey
謝謝,我會環顧這個'RenderUpdates',看看我是否找到了我要找的東西,它看起來就是我所需要的。 – hammythepig