1. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

[Python] Pygame in python

Discussão em 'Python' iniciado por Stack, Outubro 7, 2024 às 02:53.

  1. Stack

    Stack Membro Participativo

    My game was working before I added lines 7 and 8. what happened in the game was the red sprites that fall down the screen would hit the main character sprite which is green and the game would stop just as I need it to.

    import pygame
    import random

    from os import path
    img_dir = path.join(path.dirname(__file__),'PNG')

    background = pygame.image.load(path.join(img_dir,'Space-Background.png')).convert()
    background_rect = background.get_rect()

    WIDTH = 480
    HEIGHT = 600
    FPS = 60

    WHITE = (255,255,255)
    BLACK = (0,0,0)
    RED = (255,0,0)
    GREEN = (0,255,0)
    BLUE = (0,0,255)


    pygame.init()
    pygame.mixer.init()

    screen = pygame.display.set_mode((WIDTH,HEIGHT))
    pygame.display.set_caption("My Game")
    clock = pygame.time.Clock()

    class Player(pygame.sprite.Sprite):

    def __init__(self):

    pygame.sprite.Sprite.__init__(self)
    self.image = pygame.Surface((50,40))
    self.image.fill(GREEN)
    self.rect = self.image.get_rect()
    self.rect.centerx = WIDTH/2
    self.rect.bottom = HEIGHT-10

    self.speedx = 0

    def update(self):
    self.speedx = 0
    keystate = pygame.key.get_pressed()
    if keystate[pygame.K_LEFT]:
    self.speedx = -5
    if keystate[pygame.K_RIGHT]:
    self.speedx = 5

    self.rect.x += self.speedx

    if self.rect.right > WIDTH:
    self.rect.right = WIDTH
    if self.rect.left < 0:
    self.rect.left = 0

    def shoot(self):
    bullet = Bullet(self.rect.centrex,self.rect.top)
    all_sprites.add(bullet)
    bullets.add(bullet)

    class Mob(pygame.sprite.Sprite):
    def __init__(self):
    pygame.sprite.Sprite.__init__(self)
    self.image = pygame.Surface((30,40))
    self.image.fill(RED)
    self.rect = self.image.get_rect()

    self.rect.x = random.randrange(0, WIDTH - self.rect.width)
    self.rect.y = random.randrange(-100,-40)
    self.speedy = random.randrange(1,8)

    def update(self):
    self.rect.y += self.speedy

    if self.rect.top > HEIGHT +10:
    self.rect.x = random.randrange(0, WIDTH - self.rect.width)
    self.rect.y = random.randrange(-100,-40)
    self.speedy = random.randrange(1,8)

    class Bullet(pygame.sprite.Sprite):
    def __init__(self,x,y):
    pygame.sprite.Sprite.__init__(self)
    self.image = pygame.Surface((10,20))
    self.image.fill(YELLOW)
    self.rect = self.image.get_rect()
    self.rect.bottom = y
    self.rect.centrex = x
    self.speedy = -10
    def update(self):
    self.rect.y += self.speedy

    if self.rect.bottom < 0:
    self.kill()

    # player_img = pygame.image.load(path.join(img_dir,"spaceShips_003.png")).convert()
    # bullet_img = pygame.image.load(path.join(img_dir,"spaceMissile_006.png")).convert()
    # mob_img = pygame.image.load(path.join(img_dir,"SpaceMeteor_004.png")).convert()

    all_sprites = pygame.sprite.Group()
    mobs = pygame.sprite.Group()
    bullets = pygame.sprite.Group()

    player = Player()

    for i in range(8):
    m = Mob()
    all_sprites.add(m)
    mobs.add(m)

    all_sprites.add(player)

    running = True
    while running:
    clock.tick(FPS)
    for event in pygame.event.get():
    if event.type == pygame.QUIT:
    running = False

    elif event.type == pygame.KEYDOWN:
    if event.key == pygame.K_SPACE:
    player.shoot()
    all_sprites.update()

    hits = pygame.sprite.groupcollide(mobs,bullets,True,True)
    for hit in hits:
    m = Mob()
    all_sprites.add(m)

    hits = pygame.sprite.spritecollide(player,mobs,False)

    if hits:
    running = False

    screen.fill(BLACK)
    # screen.split(background.background_rect)
    all_sprites.draw(screen)
    pygame.display.flip()


    pygame.quit()


    After I added the two lines for the images there was an error message. I am not sure what happened and I need some help fixing it.

    >>> %Run trial.py
    pygame 2.1.2 (SDL 2.0.18, Python 3.7.9)
    Hello from the pygame community. https://www.pygame.org/contribute.html
    Traceback (most recent call last):
    File "C:\Users\Mish Mash\Documents\School File\trial.py", line 7, in <module>
    background = pygame.image.load(path.join(img_dir,'Space-Background.png')).convert()
    pygame.error: cannot convert without pygame.display initialized

    Continue reading...

Compartilhe esta Página