Intellipaat Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in Data Science by (18.4k points)

import pygame

from pygame.sprite import Sprite

class Bullet(Sprite):

    '''A class to manage bullets fired from the ship.'''

    def __init__(self, ai_game):

        '''Create a bullet object at the ship's current position'''

        super().__init__()

        self.screen = ai_game.screen

        self.settings = ai_game.settings

        self.color = self.settings.bullet_color

    # Create a bullet rect at (0, 0) and then set correct position. THIS LINE IS THE ISSUE. I GET TRACEBACK TO THIS LINE AND SAYS SELF NOT DEFINED.

    self.rect = pygame.Rect(0, 0, self.settings.bullet_height, self.settings.bullet_width)

    self.rect.midtop = ai_game.ship.rect.midtop

    # Store the bullet's position as a decimal value.

    self.x = float(self.rect.x)

    def update(self):

        '''Move the bullet up the screen.'''

        # Update the decmimal position of the bullet

        self.x -= self.settings.bullet_speed

        # Update the rect position.

        self.rect.x = self.x

    def draw_bullet(self):

        '''Draw the bullet to the screen'''

        pygame.draw.rect(self.screen, self.color, self.rect)

Kindly help me solve it.

1 Answer

0 votes
by (36.8k points)

Since Python does not have {} like in other languages, indentation is very Important:

import pygame

from pygame.sprite import Sprite

class Bullet(Sprite):

    '''A class to manage bullets fired from the ship.'''

    def __init__(self, ai_game):

        '''Create a bullet object at the ship's current position'''

        super().__init__()

        self.screen = ai_game.screen

        self.settings = ai_game.settings

        self.color = self.settings.bullet_color

        # Create a bullet rect at (0, 0) and then set correct position. THIS LINE IS THE ISSUE. I GET TRACEBACK TO THIS LINE AND SAYS SELF NOT DEFINED.

        self.rect = pygame.Rect(0, 0, self.settings.bullet_height, self.settings.bullet_width)

        self.rect.midtop = ai_game.ship.rect.midtop

        # Store the bullet's position as a decimal value.

        self.x = float(self.rect.x)

    def update(self):

        '''Move the bullet up the screen.'''

        # Update the decmimal position of the bullet

        self.x -= self.settings.bullet_speed

        # Update the rect position.

        self.rect.x = self.x

    def draw_bullet(self):

        '''Draw the bullet to the screen'''

        pygame.draw.rect(self.screen, self.color, self.rect)

Learn Python for Data Science to improve your technical knowledge.

Related questions

0 votes
1 answer
0 votes
1 answer
+1 vote
1 answer
0 votes
1 answer
asked Nov 28, 2020 in Python by ashely (50.2k points)

31k questions

32.8k answers

501 comments

693 users

Browse Categories

...