起動時に画面に50個のスプライトを追加するこのゲームを作成しようとしています。このスプライトの__init__
関数には次のものがあります。
if self.overlapping_sprites:
for sprite in self.overlapping_sprites:
self.game.make_obstacles(1, 1400, self.game.speed)
self.die()
これは、重複するスプライトがあるかどうかをほぼ検出し、それらのスプライトごとに、新しいスプライトを作成し、問題のあるスプライトを削除します。このコードを実装することは不思議でしたが、それでも完璧ではありません。ロード時にまだいくつかの重複するスプライトが確かにあります。ああ、私は与えられた長さに基づいて、これらのスプライトをランダムに作成していることに言及する必要があります。
参考までに、これはmake_obstacles()
関数が何であるかです:
def make_obstacles(self, num, length, dx):
for i in range(num):
x = random.randrange(700, length)
y = random.randrange(10, games.screen.height - 10)
size = random.choice([Obstacle.obstacle_1,Obstacle.obstacle_3])
new_obstacle = Obstacle(game = self, x = x, y = y, size = size, dx = dx)
games.screen.add(new_obstacle)
ここで目標を達成するための別の方法はありますか?また、理解を深めるために、なぜこれが概念レベルで起こっているのかを理解したいので、助けていただければ幸いです。