ユーザーが画面の反対側にある移動するターゲットで瞬時に撮影するクイックプログラムを作成します。ユーザーはターゲットを3回逃すことができ、その後ゲームは終了します。私はミスを検出してそれに応じて合計に加算しますが、ターゲットと弾(ヒット!)の間に衝突があると、合計から本質的にリセットします。今私はそれが "1"を引くことを期待しているだけですが、なんらかの理由でそれは束を引いてすべてを邪魔しています。なぜこれが起こっているか、これを行うためのより良い方法があるかについての任意のアイデア?ターゲットはパイゲームです。レクト、弾丸はスプライト、船はイメージです。Pygame衝突検出バグ
def update_bullets(ai_settings, screen, stats, ship, bullets, target):
bullets.update()
for bullet in bullets.copy():
if bullet.rect.left >= ai_settings.screen_width:
bullets.remove(bullet)
stats.number_of_misses += 1
check_bullet_target_collisions(ai_settings, screen, stats, ship, bullets, target)
if stats.number_of_misses >= stats.max_number_of_misses:
stats.number_of_misses = 0
stats.game_active = False
bullets.empty()
pygame.mouse.set_visible(True)
def check_bullet_target_collisions(ai_settings, screen, stats, ship, bullets, target):
bullet_hit = pygame.sprite.spritecollideany(target, bullets)
if bullet_hit:
print("how many times")
stats.number_of_misses -= 1
良いこと、あなたは絶対に正しいです。私はあなたの提案を試みたが、それを動作させることができなかったので、汚れた/怠け者の方法を取り除き、 "stats.number_of_misses"から ".10"を引いて、それをフレームのために "int"に変換した。私は他の選択肢で遊んでいきます。これの主な問題は、毎回10フレームになるという前提で実行していることです。正確な金額を見つける方法がわからないが、これは今のところうまくいくようだ。あなたの助けをありがとう! – terratunaz