微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在制作 2 人太空入侵者游戏时无法在 pygame 中发射子弹

如何解决在制作 2 人太空入侵者游戏时无法在 pygame 中发射子弹

我正在制作 2p Space Invaders。我不明白为什么射击机制不起作用?我曾在 Google 上搜索过这种机制

代码

import pygame
import sys

pygame.init()

window = pygame.display.set_mode((600,600))
player1 = pygame.image.load('player1.png')
player2 = pygame.image.load('player2.png')
bullet1 = pygame.image.load('bullet1.png')
bullet2 = pygame.image.load('bullet2.png')
bullets = []

p1x = 300
p2x = 300

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RIGHT:
                if p1x <= 490:
                    p1x += 20
            if event.key == pygame.K_LEFT:
                if p1x > 0:
                    p1x -= 20
            if event.key == pygame.K_a:
                if p2x > 0:
                    p2x -= 20
            if event.key == pygame.K_d:
                if p2x <= 490:
                    p2x += 20
            if event.key == pygame.K_DOWN:
                bullets.append(['d',p1x,0])
            if event.key == pygame.K_s:
                bullets.append(['u',p2x,0])
    for bi in bullets:
        if bi[0] == 'd':
            window.blit(bullet2,(bi[1],bi[2]))
        if bi[0] == 'u':
            window.blit(bullet1,bi[2]))
    window.fill((0,0))
    window.blit(player1,(p2x,488))
    window.blit(player2,(p1x,0))
    pygame.display.update()
    for bj in bullets:
        if bj[0] == 'd':
                bj[2] += 1
        if bj[0] == 'u':
            bj[2] -= 1

[窗口图像][1]

提前致谢。 [1]:https://i.stack.imgur.com/SRvZr.png

解决方法

你必须在清除显示后绘制子弹:

while True:
    # [...]

    window.fill((0,0))  # <--- INSERT

    for bi in bullets:
        if bi[0] == 'd':
            window.blit(bullet2,(bi[1],bi[2]))
        if bi[0] == 'u':
            window.blit(bullet1,bi[2]))
    
    # window.fill((0,0)) <--- DELETE

    # [...]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。