[Tutor] Continuous Shooting

ANKUR AGGARWAL coolankur2006 at gmail.com
Thu Jan 12 13:39:22 CET 2012


Hey
I was making a demo shooting game and problem is that I want
a continuous stream of bullets. As of now on pressing the space key only
one bullet comes out of the plane (I want this to be continuous stream). On
pressing space key again bullet starts from its initial point. My problem
in the code is that I am able to make a single object of Bullet only (thats
why it is throwing single bullet) and unable to find the another logic.
Please help me out. Attaching the files along with this mail.

import pygame
from pygame.locals import *
import random

pygame.init()
screen=pygame.display.set_mode((640,480),0,24)
pygame.display.set_caption("Hit The Stone")

class Plane(pygame.sprite.Sprite):
    def __init__(self,bullet):
        self.bullet=bullet
        pygame.sprite.Sprite.__init__(self)
        self.image=pygame.image.load('plane.gif').convert()
        self.rect=self.image.get_rect()
        self.rect.centerx=random.randint(0,screen.get_width())
        self.distancefromcenter=30
        self.rect.centery=screen.get_height()-self.distancefromcenter
        self.dx=2
        self.dy=2

    def update(self):
        pressed=pygame.key.get_pressed()
        if pressed[K_DOWN]:
            self.rect.centery+=self.dy
        elif pressed[K_UP]:
            self.rect.centery-=self.dy
        elif pressed[K_LEFT]:
            self.rect.centerx-=self.dx
        elif pressed[K_RIGHT]:
            self.rect.centerx+=self.dx


        if self.rect.bottom>=screen.get_height():
            self.rect.bottom=screen.get_height()
        elif self.rect.top<=0:
            self.rect.top=0

        if self.rect.centerx>=screen.get_width()-self.distancefromcenter:
            self.rect.centerx=screen.get_width()-self.distancefromcenter
        elif self.rect.centerx<=self.distancefromcenter:
            self.rect.centerx=self.distancefromcenter

        if pressed[K_SPACE]:
            self.bullet.x=self.rect.centerx
            self.bullet.y=self.rect.centery



class Bullet(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image=pygame.image.load('geometrybullet.png').convert_alpha()
        self.rect=self.image.get_rect()
        self.rect.center=(-100,-100)
        self.x=-100
        self.y=-100
        self.dy=5


    def update(self):
        self.y-=self.dy
        self.rect.center=(self.x,self.y)
        if self.rect.top<0:
            self.x=-100
            self.y=-100


def main():
    background=pygame.Surface(screen.get_size())
    background=background.convert()
    screen.blit(background,(0,0))
    bullet=Bullet()
    plane=Plane(bullet)
    allSprites=pygame.sprite.Group(plane,bullet)

    while 1:
        for i in pygame.event.get():
            quitPressed=pygame.key.get_pressed()
            if i.type==QUIT or quitPressed[K_q]:
                exit()

        allSprites.clear(screen,background)
        allSprites.update()
        allSprites.draw(screen)
        pygame.display.flip()


if __name__=='__main__':
    main()

Thanks in advance :)

Regards
Ankur Aggarwal
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20120112/6f0da1c5/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: geometrybullet.png
Type: image/png
Size: 273 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/tutor/attachments/20120112/6f0da1c5/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: plane.gif
Type: image/gif
Size: 1899 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/tutor/attachments/20120112/6f0da1c5/attachment.gif>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: game.py
Type: text/x-python
Size: 2580 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/tutor/attachments/20120112/6f0da1c5/attachment.py>


More information about the Tutor mailing list