Skip to main content
 首页 » 编程设计

python之子弹没有出现在简单的太空入侵者游戏中

2025年05月04日20落叶

我是一名新程序员,我想弄清楚为什么我的子弹没有出现。 Y 坐标似乎发生了变化,但由于某种原因子弹没有显示出来。这是我在 Python 中的代码:

#Importing necessary modules 
import random 
import pygame 
import sys 
#Setting up pygame 
pygame.init() 
shooting = False 
n = 0 
keys = [False,False,False,False] 
clock = pygame.time.Clock() 
screen = pygame.display.set_mode([500,500]) 
font = pygame.font.Font(None,50) 
#Creating class for player 
class Player: 
    def __init__(self,x,y,width,height): 
        self.x = x  
        self.y = y 
        self.width = width 
        self.height = height 
    def draw(self): 
        pygame.draw.rect(screen,[0,255,0], 
[int(self.x),int(self.y),int(self.width),int(self.height)],0) 
    def move(self): 
        if keys[1] == True: 
            self.x -= 1 
        elif keys[3] == True: 
            self.x += 1 
 
        if self.x < 0: 
            print(self.x) 
            self.x = 0 
        if self.x > 500 - self.width: 
            print(self.x) 
            self.x = 500 - self.width 
    def shoot(self): 
        return 
class Bullet: 
   def __init__(self,x,y): 
     self.x = x  
     self.y = y 
   def update(self,y_amount = 5): 
      self.y += y_amount 
      return 
   def draw(self): 
      pygame.draw.rect(screen,[0,255,0],[int(self.x),int(self.y),10,30],0) 
 
 bullets = []         
 
 
 
#Creating a player 
player = Player(200,450,40,20) 
#Main Loop 
while True: 
    clock.tick(60) 
    #Background 
    screen.fill([0,0,0]) 
    #Letting Player move 
    player.move() 
    #Drawing Player 
    player.draw() 
    #Updating screen 
    pygame.display.flip() 
    #Checking for events 
    for event in pygame.event.get(): 
        #Checking for quit 
        if event.type == pygame.QUIT: 
            sys.exit() 
        if event.type == pygame.KEYDOWN: 
            #Checking for keys 
            if event.key == pygame.K_w: 
                keys[0] = True 
            elif event.key == pygame.K_a: 
                keys[1]=True 
            elif event.key == pygame.K_s: 
                keys[2]=True 
            elif event.key == pygame.K_d: 
                keys[3]=True 
            elif event.key == pygame.K_SPACE: 
                shooting = True 
 
 
        if event.type == pygame.KEYUP: 
            if event.key == pygame.K_w: 
                keys[0]=False 
            elif event.key == pygame.K_a: 
                keys[1]=False 
            elif event.key == pygame.K_s: 
                keys[2]=False 
            elif event.key == pygame.K_d: 
                keys[3]=False 
            elif event.key == pygame.K_SPACE: 
                shooting = False 
 
 
 
 
 
    if shooting == True: 
        bullets.append(Bullet(player.x, player.y)) 
 
    for bullet in bullets: 
        bullet.update() 
        bullet.draw() 

请您参考如下方法:

规则 1:检查您的坐标系。

Pygame 的 (0,0) 在左上角,您的玩家在 (x, 450) - 在底部。当你创建一颗子弹时,你在玩家坐标处这样做,然后更新位置以增加 Y,即向下移动而不是向上移动。