Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[PyGame] multiple hits !
#3
alien.py

import pygame
from pygame.sprite import Sprite

class Alien(Sprite):
    """a class to represent a single alien in the fleet"""

    def __init__(self, ai_settings, screen):
        """initialize the alien and set its starting position"""
        super(Alien, self).__init__()
        self.screen = screen
        self.ai_settings = ai_settings

        #load the alien image and set its rect attribute
        self.image = pygame.image.load('images/alien.png')
        self.image = pygame.transform.scale(self.image, (100, 75))
        self.rect = self.image.get_rect()

        #start each new alien near the top of the screen
        self.rect.x = self.rect.width
        self.rect.y = self.rect.height

        #store the alien's exact position
        self.x = float(self.rect.x)

    def blitme(self):
        """draw the alien at its current location"""
        self.screen.blit(self.image, self.rect)

    def check_edges(self):
        """return true if alien is at edge of screen"""
        screen_rect = self.screen.get_rect()
        if self.rect.right >= screen_rect.right:
            return True
        elif self.rect.left <= 0:
            return True

    def update(self):
        """move the alien right or left"""
        self.x += (self.ai_settings.alien_speed_factor *
                   self.ai_settings.fleet_direction)
        self.rect.x = self.x

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



bullet. py



import pygame
from pygame.sprite import Sprite

class Bullet(Sprite):
    """A class to manage bullets fired from the ship """

    def __init__(self, ai_settings, screen, ship):
        """create a bullet object at the ship's current position"""
        super(Bullet, self).__init__()
        self.screen = screen

        # create a bullet rect at (0, 0) and then set correct position
        self.rect = pygame.Rect(0, 0, ai_settings.bullet_width,
                                ai_settings.bullet_height)
        self.rect.centerx = ship.rect.centerx
        self.rect.top = ship.rect.top

        #store the bullet's position as a decimal value
        self.y = float(self.rect.y)

        self.colour = ai_settings.bullet_colour
        self.speed_factor = ai_settings.bullet_speed_factor

    def update(self):
        """move the bullet up the screen"""
        # update the decimal position of the bullet
        self.y -= self.speed_factor
        # update rect position
        self.rect.y = self.y

    def draw_bullets(self):
        """draw the bullet on screen"""
        pygame.draw.rect(self.screen, self.colour, self.rect)
Reply


Messages In This Thread
multiple hits ! - by tyler - Jul-02-2018, 01:01 PM
RE: multiple hits ! - by metulburr - Jul-02-2018, 03:10 PM
RE: multiple hits ! - by tyler - Jul-02-2018, 03:35 PM
RE: multiple hits ! - by metulburr - Jul-02-2018, 05:07 PM
RE: multiple hits ! - by tyler - Jul-03-2018, 08:33 AM
RE: multiple hits ! - by metulburr - Jul-03-2018, 11:47 AM
RE: multiple hits ! - by tyler - Jul-03-2018, 12:16 PM
RE: multiple hits ! - by metulburr - Jul-03-2018, 12:38 PM

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020