あなたのゲームに固有のコードで完全な答えを与えることはできませんが、ゲーム全体のすべての要素をより詳細に制御できるように、全体をよりシンプルにするためのヒントをいくつか教えていただけます。
まず、スプライト用の「コンテナ」が必要です。あなたはすべてを一つにすることができますし、それは理にかなった方法でグループ化することもできます。たとえば、環境スプライト、敵、同盟者、HUDなどがあるかもしれません。スプライトをグループ化する方法は基本的には同じです。同様の振る舞いをするスプライトをグループ化する必要があります。
pygame
を使用しているので、pygame.sprite.Goup
を使用しているので、.update
と.draw
のようなメソッドを実装することで、コードの理解度を大幅に向上させることができます。
あなたは、それぞれのフレームですべてが起こる場所である "ゲームループ"(あなたがすでにやっていると思いますが)が必要です。ような何か:
# This code is only intended as a generic example. It wouldn't work on it's
# own and has many placehoders, of course. But you can adapt your
# game to have this kind of structure.
# Game clock keeps frame rate steady
theClock = pygame.time.Clock()
# Sprite groups!
allsprites = pygame.sprite.Group()
environmentSprites = pygame.sprite.Group()
enemySprites = pygame.game.Group()
# Initially populate sprite groups here, e.g.
environmentSprites.add(rockSprite)
allsprites.add(rockSprite)
# ...
# Game loop
while True:
theClock.tick(max_fps)
# Add new enemies:
spawn_enemies(enemySprites, allSprites, player_score)
# Update all sprites
environmentSprites.update()
enemySprites.update()
playerSprite.update()
# ...and draw them
allSprites.draw(background)
window.blit(background)
pygame.display.flip()
あなたは(関数やメソッドに実際の作業のほとんどを外部化、多くのない行のように)短いあなたのゲームループを保つため、何が起こるかをより細かく制御することができますこの方法です。
あなたが望むものを達成することは、はるかに簡単です。あなたはそれを行う単一の機能しか持っていません。それは、player_score
に関して敵を召喚する方法に集中できることを意味します。私の頭の上からちょうど例:
def spawn_enemies(enemyGroup, all, player_score):
# Calculate the number of enemies you want
num_enemies = player_score/100
for i in range(num_enemies):
# Create a new enemy sprite instance and
# set it's initial x and y positions
enemy = EnemyClass()
enemy.xpos = random.randint(displayWidth, displayWidth + 100)
enemy.ypos = random.randint(0, displayHeight)
enemy.velocity = (player_score/100) * base_velocity
# Add the sprite to the groups, so it'll automatically
# be updated and blitted in the main loop!
enemyGroup.add(enemy)
all.add(enemy)
私はあなたがまだの場合はpygame.sprite.Sprite
、pygame.sprite.Group
とpygame.time.Clock
のようなもののためにpygame docs and tutorialsをよく読んでお勧めします。私はそれらを私のゲームを開発するときに本当に便利だと思った。チュートリアルでは、ゲームがどのようにして最善の構造をとっているかについてもかなり良い考えを示しています。
これが役に立ちます。
あなたが霊である場合、リストにはそれぞれの(x、y)座標が含まれているとしましょう。最初にそれぞれの精神を動かしてからblitすることができます。ゲーム。 – Simon