現在、画面に描画するタイルを決定する整数を保持する x x y 配列があります。(整数は、tile_arr
ブリットする私のタイルを選択します)
パフォーマンスを向上させるために、変更された 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
これにより、配列が得られます。
arr=[[1,2,2],[2,2,2],[2,1,2]]
画面にブリットするとき、tile_arr
画像番号 1,2,2 を一番上の行に、2,2,2 を真ん中の行に、2,1,2 を一番下の行にブリットします。配列を blit するときはscreen.blit
、各値または arr に対して a を使用します。これは 9 つの blit です。ブリットは 2 回だけにしたい。( screen.blit
2回のみ使用)
例 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()
ここで、何も変更されていないため、4 つの緑の正方形を緑のままにして、5 回だけ呼び出したいと思います。
最初の配列のコピーにすぎない別の配列を作成することを考えました。次に、それを実行し、新しいアレイと比較して何が変更されたかを確認しますが、これにはより適切で迅速な方法があると思います。今の例は 3x3 だけなので、重複した配列を作成することはそれほど悪くありませんが、私はもっと大きな配列を扱っており、30x20 配列をブリットするときは、取得できるすべてのショートカットが必要です。
配列内の整数値が変更された場合にのみブリットし、変更されていない値をスキップする (ブリットしない) にはどうすればよいですか?