School Assignment? Project Due Tomorrow? Chat LIVE With A Programming Expert!

Welcome to Dream.In.Code
Become an Expert!

Join 307,212 Programmers for FREE! Get instant access to thousands of experts, tutorials, code snippets, and more! There are 1,580 people online right now. Registration is fast and FREE... Join Now!




[Pygame] shooting bullets in a side scroller game

 

[Pygame] shooting bullets in a side scroller game

Animech

13 Oct, 2009 - 03:36 PM
Post #1

New D.I.C Head
*

Joined: 16 Sep, 2008
Posts: 12

I'm making a side scroller shooting game where the player shoots bullets by pressing the space bar and enemies shoot bullets randomly, but I can seem to get it right. here's the part involving the ship, the anemy and their bullets:

CODE


import pygame, random
pygame.init()

screen = pygame.display.set_mode((640, 480))

class Ship(pygame.sprite.Sprite):
    def __init__(self, bullet):
        self.bullet = bullet
        pygame.sprite.Sprite.__init__(self)
        self.screen = screen
        self.image = pygame.image.load("ship.jpg")
        self.image = self.image.convert()
        self.rect = self.image.get_rect()
        self.rect.center = (50, 240)
        self.dx = 10
        self.dy = 10

        if not pygame.mixer:
            print "problem with sound"
        else:
            pygame.mixer.init()
            self.sndCrash = pygame.mixer.Sound("shipcrash2.ogg")
            self.sndFire = pygame.mixer.Sound("gunfire2.ogg")
            self.sndExplosion = pygame.mixer.Sound("explosion2.ogg")

    def update(self):
        self.checkKeys()
        self.checkBounds()

    def checkKeys(self):
        keys = pygame.key.get_pressed()
        if keys[pygame.K_UP]:
            self.rect.centery -= self.dy
        if keys[pygame.K_DOWN]:
            self.rect.centery += self.dy
        if keys[pygame.K_SPACE]:
            self.bullet.x = self.rect.centerx
            self.bullet.y = self.rect.centery
            self.bullet.speed = self.dx



            
        
    def checkBounds(self):
        screen = self.screen
        if self.rect.centery > 420:
            self.rect.centery = 420
        if self.rect.centery < 50:
            self.rect.centery = 50

class Bullet(pygame.sprite.Sprite):
    def __init__(self, screen):
        pygame.sprite.Sprite.__init__(self)
        self.screen = screen
        
        self.image = pygame.image.load("bullet.jpg")
        self.image = self.image.convert()
        self.rect = self.image.get_rect()
        self.rect.center = (-100, -100)
        self.speed = 0
        self.reset()

        if not pygame.mixer:
            print "problem with sound"
        else:
            pygame.mixer.init()
            self.sndImpact = pygame.mixer.Sound("impact2.ogg")


    def update(self):
        self.position()
        self.checkBounds()
        self.rect.center = (self.x, self.y)

    def position(self):
        self.x += self.speed

    def checkBounds(self):
        screen = self.screen
        if self.rect.left > screen.get_width():
            self.reset()
    

    def reset(self):
        self.x = -100
        self.y = -100
        self.speed = 0

class Ufo(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load("ufo.jpg")
        self.image = self.image.convert()
        self.rect = self.image.get_rect()
        self.reset()

    def update(self):
        self.rect.centerx -= self.dx
        self.rect.centery -= self.dy
        if self.rect.right <= 0:
            self.reset()
    
    def reset(self):
        self.rect.left = screen.get_width()
        self.rect.centery = random.randrange(0, screen.get_height())
        self.dy = random.randrange(-2, 2)
        self.dx = random.randrange(4, 6)

class UfoBullet(pygame.sprite.Sprite):
    def __init__(self, screen):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load("enemybullet.jpg")
        self.image = self.image.convert()
        self.rect = self.image.get_rect()
        self.reset()
        self.rect.centerx = 490
        self.dx = 10

        def update(self):
            self.rect.centerx -= self.dx
            if self.rect.right <= 0:
                self.reset()

        def reset(self):
            self.x = -50
            self.dx = 10



I know I need to add things, but I just can't think of what it is. if someone could help me with this part, I should be able to get the rest of the program on my own



User is offlineProfile CardPM
+Quote Post

Fast ReplyReply to this topicStart new topic

Time is now: 11/21/09 09:44PM

Live Help!

Be Social

Dream.In.Code RSS Feed Dream.In.Code LinkedIn Group Follow Us On Twitter Fan Us On Facebook

Tutorials

Programming

Web Development

Reference Sheets

Code Snippets

DIC Chatroom

Bye Bye Ads

Monthly Drawing

Thumb Drive

Top Contributors

Top 10 Kudos This Month