Mar-11-2019, 12:09 AM
Here a quick example.
import pygame import random class BoatSprite(pygame.sprite.Sprite): def __init__(self, group): # Init parent class pygame.sprite.Sprite.__init__(self, group) self.tick = 0 self.interval = 30 # Default sprite variables. #self.image = pygame.image.load("boatIMG.png").convert() self.image = pygame.Surface((40, 20)) self.image.fill(pygame.Color("dodgerblue")) self.rect = self.image.get_rect() class BulletSprite(pygame.sprite.Sprite): def __init__(self, group): # Init parent class pygame.sprite.Sprite.__init__(self, group) self.speed = 5 self.tick = 0 self.interval = 40 # Default sprite variables. #self.image = pygame.image.load("bullet)enemy.png").convert() self.image = pygame.Surface((2, 4)) self.image.fill(pygame.Color("firebrick")) self.rect = self.image.get_rect() self.rect.x = random.randint(200, 500) self.rect.y = -100 def update(self): if self.rect.y > 480: self.rect.x = random.randint(200, 500) self.rect.y = -100 class Scene: def __init__(self, game): self.game = game self.boat_group = pygame.sprite.Group() self.bullet_group = pygame.sprite.Group() self.boat = BoatSprite(self.boat_group) self.boat.rect.topleft = 400, 400 self.bullet = BulletSprite(self.bullet_group) #self.background_iamge = pygame.image.load("water_background.png").convert() self.background_image = pygame.Surface(game.rect.size) self.background_image.fill(pygame.Color('darkblue')) def draw(self, surface): surface.blit(self.background_image, (0,0)) self.boat_group.update() self.bullet_group.update() self.boat_group.draw(surface) self.bullet_group.draw(surface) def event(self, event): pass def update(self, ticks): if ticks > self.boat.tick: self.boat.tick += self.boat.interval # Tracking key held down keys = pygame.key.get_pressed() if keys[pygame.K_LEFT]: self.boat.rect.x -= 5 elif keys[pygame.K_RIGHT]: self.boat.rect.x += 5 elif keys[pygame.K_UP]: self.boat.rect.y -= 5 elif keys[pygame.K_DOWN]: self.boat.rect.y += 5 # Keep boat within self.boat.rect.clamp_ip(pygame.Rect(125, 305, 340, 100)) if ticks > self.bullet.tick: self.bullet.tick + self.bullet.interval self.bullet.rect.y += self.bullet.speed # Colliding hit = pygame.sprite.spritecollide(self.boat, self.bullet_group, False) if len(hit) > 0: self.game.running = False class Game: def __init__(self, caption, width, height): # Basic pygame setup pygame.display.set_caption(caption) self.rect = pygame.Rect(0, 0, width, height) self.surface = pygame.display.set_mode(self.rect.size) self.clock = pygame.time.Clock() # Scene self.scene = Scene(self) def mainloop(self): self.running = True while self.running: for event in pygame.event.get(): if event.type == pygame.QUIT: self.running = False else: self.scene.event(event) self.scene.update(pygame.time.get_ticks()) # Draw code here self.scene.draw(self.surface) pygame.display.flip() self.clock.tick(30) if __name__ == '__main__': pygame.init() game = Game('Example', 640, 480) game.mainloop() pygame.quit()
99 percent of computer problems exists between chair and keyboard.