现在我有一个 x x y 数组来保存整数,这些整数决定将哪个图块绘制到屏幕上。(整数选择在我tile_arr
的哪个瓷砖blit)
为了获得更好的性能,我只希望改变的 int 再次被 blit'ed。
示例 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
:图像编号1,2,2到顶行,2,2,2到中间行,2,1,2到底行。当我对数组进行 blit 时,我screen.blit
对每个值或 arr 使用 a,即 9 个 blit。我宁愿只做两次。(screen.blit
只使用两次)
示例 2:
tile_arr = [green.bmp, red.bemp, blue.bmp]
feild_arr = [[0,0,0], [0,0,0], [0,0,0]]
输出:
GGG
GGG
GGG
用户更改feild_arr
为[[1,0,1], [0,2,0], [0,1,2]]
输出:
RGR
国标
GRB
现在我只想调用sceen.blit()
5 次,将 4 个 Green squares 保留为绿色,因为没有任何改变。
我想制作另一个数组,它只是第一个数组的副本。然后运行它并与新数组进行比较以查看发生了什么变化,但我认为有更好更快的方法。现在这个例子只有 3x3,所以制作一个重复的数组并不算太糟糕,但是我正在使用更大的数组,当你对一个 30x20 数组进行 blitting 时,我需要我能得到的所有快捷方式。
如何仅在数组中的整数值已更改时进行 blit,并跳过(不 blit)未更改的值?