python - pygameで特定の期間のみ画像を表示する

okwaves2024-01-25  9

そこで、私はちょうど pygame について知り、それを使って簡単なスペース インベーダー ゲームを作ることができたら素晴らしいだろうと考えました。そこで、私のコード https://pastebin.com/eksFCbYr に画像「bullet.png」が必要です。 ;スペースバーが押されている間だけ画面に表示されるように設定されていますが、機能していないようです。 最初は画像が別の画像の下に描画されているのではないかと思い、該当する画像の位置を重ならないように変更しましたが、どうやら効果はなかったようで、問題ではないことがわかりました。 誰かが私のコードでどのような間違いを犯したかを特定できますか。また、これを行うより良い方法があれば教えてください。

ありがとうございます

            m = 2 
bull = pygame.image.load("bullet.png")
t=True
while t:
    screen.fill((50, 50, 50))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:

            t = False

 #keydown statement
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RIGHT:
                n = 1
            if event.key == pygame.K_LEFT:
            p = -1
            if event.key == pygame.K_SPACE:

                m = 0
 #keyup statement
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_RIGHT or pygame.K_LEFT:
               n = 0
               p = 0
            if event.key == pygame.K_SPACE:
                m = 1
    if m == 0:

        screen.blit(bull, (ab, 100))

    background()
    player1(ab, bc)

    ab += n+p


    if ab <= 0:
        ab = 0
    if ab >= 468:
        ab = 468

    pygame.display.update()




    

{これは私の初めての投稿であり、Python (さらには progr) についても全くの初心者です。そのことに関しては、amming)。私の質問の形式が正しくない場合は、ご容赦ください。}



------------------------

箇条書きが画面に表示されないのは、keyup ステートメントが原因です。コードに記載されているように、スペース キーが押されなかった瞬間、値「m」は再び 1 (m = 1) に戻り、if ステートメントは実行されないためです。それから、私が言ったことが問題である場合は、画面上の弾丸をブリットして移動させるシュート関数を定義することをお勧めします。また、keyup または keydown ステートメントを使用する代わりに、次のコードを使用することをお勧めします。

keys = pygame.key.get_pressed()
    if keys[pygame.K_Space]:
        player.shoot()

これは問題の解決に役立つ可能性があります。 shoot() は関数です前述しましたが、使いやすい他の方法を使用することもできます。

1

1

ご提案ありがとうございます。試してみます。

– ジャヤデフ・アショク

2020 年 9 月 4 日 17:10

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。