现在我有Y阵列的X来保存决定绘制到屏幕,瓷砖整数。 (该整数选择哪个瓦片在我tile_arr
做块)
为了更好的表现,我只想要改变的整数再次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]]
现在位图传输到屏幕上的时候,我会从图像的blit tile_arr
:图像编号1,2,2的顶行,2,2,2,到中间行,2,1,2到底行。 当我的blit数组,我使用screen.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
GBG
GRB
现在,我只想叫sceen.blit()
的5倍,留下4个绿色sqaures绿色的,因为什么都没有改变。
我想制作另一个数组,这将只是一个第一的副本。 然后穿过它,并比较新的阵列,看看有什么变化,但我认为这是一个更好更快的方式来这一点。 现在的例子只是3×3这样做重复的阵列是不是太糟糕,但我有很多大的阵列的工作,当你blit一个30x20阵列,我需要所有的快捷方式,我可以得到。
如何我只当位块传输阵列中的整数值已发生改变,并跳过(不要的blit)没有改变的值是多少?