diff --git a/Game.py b/Game.py index 44ce42d..a949aab 100644 --- a/Game.py +++ b/Game.py @@ -5,6 +5,7 @@ import pygame # Importa biblioteca Pygame from settings import * from random import choice +from funcoes import * # Inicializa o Pygame pygame.init() diff --git a/__pycache__/Game.cpython-39.pyc b/__pycache__/Game.cpython-39.pyc index 6cea4f8..667965e 100644 Binary files a/__pycache__/Game.cpython-39.pyc and b/__pycache__/Game.cpython-39.pyc differ diff --git a/__pycache__/assets.cpython-39.pyc b/__pycache__/assets.cpython-39.pyc index e52eab2..25b3dfb 100644 Binary files a/__pycache__/assets.cpython-39.pyc and b/__pycache__/assets.cpython-39.pyc differ diff --git a/__pycache__/enemy_class.cpython-39.pyc b/__pycache__/enemy_class.cpython-39.pyc index 7d6afef..0fa0212 100644 Binary files a/__pycache__/enemy_class.cpython-39.pyc and b/__pycache__/enemy_class.cpython-39.pyc differ diff --git a/__pycache__/funcoes.cpython-39.pyc b/__pycache__/funcoes.cpython-39.pyc new file mode 100644 index 0000000..180c614 Binary files /dev/null and b/__pycache__/funcoes.cpython-39.pyc differ diff --git a/__pycache__/level_class.cpython-39.pyc b/__pycache__/level_class.cpython-39.pyc index 0d2bc8f..7233a4e 100644 Binary files a/__pycache__/level_class.cpython-39.pyc and b/__pycache__/level_class.cpython-39.pyc differ diff --git a/__pycache__/player_class.cpython-39.pyc b/__pycache__/player_class.cpython-39.pyc index 2ef771e..d53695d 100644 Binary files a/__pycache__/player_class.cpython-39.pyc and b/__pycache__/player_class.cpython-39.pyc differ diff --git a/__pycache__/settings.cpython-39.pyc b/__pycache__/settings.cpython-39.pyc index 2f7c44f..d00b3d5 100644 Binary files a/__pycache__/settings.cpython-39.pyc and b/__pycache__/settings.cpython-39.pyc differ diff --git a/assets.py b/assets.py index 2f61820..0c8b763 100644 --- a/assets.py +++ b/assets.py @@ -8,7 +8,6 @@ groups = {} # Inicializa dicionário que conterá os grupos de sprites assets = {} - # =========== Carregando todos os sprites ============= # --- Fundo: assets['background'] = pygame.image.load('Assets/sprites/teste/fundo_completo1.png') @@ -49,4 +48,4 @@ assets['lore6'] = pygame.image.load('Assets/lore/Lore6.jpeg') # --- Objetivo: -assets['computer'] = pygame.image.load('Assets/sprites/teste/final.png') +assets['computer'] = pygame.image.load('Assets/sprites/teste/final.png') \ No newline at end of file diff --git a/enemy_class.py b/enemy_class.py index 0da9d1f..433f706 100644 --- a/enemy_class.py +++ b/enemy_class.py @@ -1,5 +1,4 @@ import pygame -from settings import level_map, screen_height, tile_size, screen_width from assets import * from level_class import groups @@ -16,12 +15,19 @@ def __init__(self, position, size): self.speedx = -2 - def snail_moviment(self): - ''' - Programa o movimento do caracol: ele se move até bater em um tile (geralmente, o invisível) - quando isso ocorre, a velocidade (direção) inverte - ''' - + def snailImage(self, direction): + if direction == "left": + self.image = pygame.image.load('Assets/sprites/teste/el caracol.png').convert_alpha() #Quando colide, vira para esquerda + self.image = pygame.transform.scale(self.image, (78,64)) + self.mask = pygame.mask.from_surface(self.image) + + elif direction == "right": + self.image = pygame.image.load('Assets/sprites/teste/caracol_virado.png').convert_alpha() #Quando colide, vira para direita + self.image = pygame.transform.scale(self.image, (78,64)) + self.mask = pygame.mask.from_surface(self.image) + + def snailCollision(self): + collision_snail_inv = pygame.sprite.groupcollide(groups['all_snails'], groups['invisible_tiles'], False, False) collision_snail_tile = pygame.sprite.groupcollide(groups['all_snails'], groups['all_tiles'], False, False) @@ -30,44 +36,46 @@ def snail_moviment(self): # Caracol indo para direita if bloco.rect.right > snail.rect.right > bloco.rect.left: - self.image = pygame.image.load('Assets/sprites/teste/el caracol.png').convert_alpha() #Quando colide, vira para esquerda - self.image = pygame.transform.scale(self.image, (78,64)) - self.mask = pygame.mask.from_surface(self.image) + direction = "right" + self.snailImage(direction) snail.rect.right = bloco.rect.left snail.speedx = -snail.speedx # Caracol indo para esquerda elif bloco.rect.left < snail.rect.left < bloco.rect.right: - self.image = pygame.image.load('Assets/sprites/teste/caracol_virado.png').convert_alpha() #Quando colide, vira para direita - self.image = pygame.transform.scale(self.image, (78,64)) - self.mask = pygame.mask.from_surface(self.image) + direction = "left" + self.snailImage(direction) snail.rect.left = bloco.rect.right snail.speedx = -snail.speedx - for snail, tiles in collision_snail_tile.items(): bloco = tiles[0] # Caracol indo para direita if bloco.rect.right > snail.rect.right > bloco.rect.left: - self.image = pygame.image.load('Assets/sprites/teste/el caracol.png').convert_alpha() #Quando colide, vira para esquerda - self.image = pygame.transform.scale(self.image, (78,64)) - self.mask = pygame.mask.from_surface(self.image) + direction = "right" + self.snailImage(direction) snail.rect.right = bloco.rect.left snail.speedx = -snail.speedx - # Caracol indo para esquerda elif bloco.rect.left < snail.rect.left < bloco.rect.right: - self.image = pygame.image.load('Assets/sprites/teste/caracol_virado.png').convert_alpha() #Quando colide, vira para direita - self.image = pygame.transform.scale(self.image, (78,64)) - self.mask = pygame.mask.from_surface(self.image) + direction = "left" + self.snailImage(direction) snail.rect.left = bloco.rect.right snail.speedx = -snail.speedx - def update(self, x_shift): # Quando player chegar a uma parte do level, o level mexe para o lado (pygame é assim "press F") + def snailMovement(self, x_shift): + ''' + Programa o movimento do caracol: ele se move até bater em um tile (geralmente, o invisível) + quando isso ocorre, a velocidade (direção) inverte + ''' self.rect.x += x_shift + self.speedx - self.snail_moviment() + + def update(self, x_shift): # Quando player chegar a uma parte do level, o level mexe para o lado (pygame é assim "press F") + self.snailMovement(x_shift) + self.snailCollision() + # ============================================================================================================================================================================== diff --git a/funcoes.py b/funcoes.py new file mode 100644 index 0000000..b0b7233 --- /dev/null +++ b/funcoes.py @@ -0,0 +1,8 @@ +from assets import * +from player_class import Munition + +def addGroup(sprite, group, name): + for g in group: + g.add(sprite) + groups[name].add(sprite) + diff --git a/level_class.py b/level_class.py index ba04356..46cfbe0 100644 --- a/level_class.py +++ b/level_class.py @@ -4,6 +4,22 @@ from player_class import * from enemy_class import * from assets import * +from funcoes import * + +def recarregaMunicao(sprite, level): + if len(sprite.banana_storage) < 3: + recharge_hits = pygame.sprite.spritecollide(sprite, level.recharge, True) + for hit in recharge_hits: + if len(sprite.banana_storage) > 0: + for b in sprite.banana_storage: + sprite.banana_storage.sprites()[-1].kill() + score += 1000 + x = 30 + for i in range(3): + x += 30 + balas_restantes = Munition(x, 10) + sprite.banana_storage.add(balas_restantes) + sprite.groups["all_sprites"].add(balas_restantes) # Cria grupos de sprites all_bananas = pygame.sprite.Group() @@ -29,7 +45,7 @@ def __init__(self, level_data, surface): # Lado do player para câmera self.side_x = screen_width/2 - self.zawarudo = 0 + self.camShift = 0 self.minx = 0 self.maxx = 11520 self.p = None @@ -251,8 +267,7 @@ def player_hit_time(self): # Colisão com hit ao player player.dmg_score = True def cam_shift(self): - self.zawarudo -= self.world_shift - pass + self.camShift -= self.world_shift def cam_scroll(self): player = self.player.sprite @@ -265,10 +280,10 @@ def cam_scroll(self): self.side_x = player.rect.x # Movimento da Camera - if self.side_x >= screen_width * 3/4 and self.direction_x > 0 and self.zawarudo < self.maxx - screen_width: #indo a direita + if self.side_x >= screen_width * 3/4 and self.direction_x > 0 and self.camShift < self.maxx - screen_width: #indo a direita self.world_shift = -8 player.speedx = 0 - elif self.side_x <= screen_width/4 and self.direction_x < 0 and self.zawarudo > self.minx: #indo a esquerda + elif self.side_x <= screen_width/4 and self.direction_x < 0 and self.camShift > self.minx: #indo a esquerda self.world_shift = 8 player.speedx = 0 else: @@ -347,10 +362,13 @@ def __init__(self, position, size): self.image = pygame.transform.scale(self.image, (size,size)) self.rect = self.image.get_rect(topleft = position) self.mask = pygame.mask.from_surface(self.image) - - def update(self, x_shift): # Quando player chegar a uma parte do level, o level mexe para o lado (pygame é assim "press F") + + def tileShift(self, x_shift): self.rect.x += x_shift + def update(self, x_shift): # Quando player chegar a uma parte do level, o level mexe para o lado (pygame é assim "press F") + self.tileShift(x_shift) + class Tile_fundo(pygame.sprite.Sprite): def __init__(self, position, size): super().__init__() @@ -359,10 +377,13 @@ def __init__(self, position, size): self.image = pygame.transform.scale(self.image, (size,size)) self.rect = self.image.get_rect(topleft = position) self.mask = pygame.mask.from_surface(self.image) - - def update(self, x_shift): + + def tileShift(self, x_shift): self.rect.x += x_shift + def update(self, x_shift): + self.tileShift(x_shift) + class Tile_t(pygame.sprite.Sprite): def __init__(self, position, size): super().__init__() @@ -372,9 +393,12 @@ def __init__(self, position, size): self.rect = self.image.get_rect(topleft = position) self.mask = pygame.mask.from_surface(self.image) - def update(self, x_shift): + def tileShift(self, x_shift): self.rect.x += x_shift + def update(self, x_shift): + self.tileShift(x_shift) + class Tile_move(pygame.sprite.Sprite): def __init__(self, position, size): super().__init__() @@ -404,8 +428,11 @@ def tile_moviment(self): move_tile.rect.left = bloco.rect.right move_tile.speedx = -move_tile.speedx - def update(self, x_shift): # Quando player chegar a uma parte do level, o level mexe para o lado (pygame é assim "press F") - self.rect.x += x_shift + self.speedx + def tileShift(self, x_shift): + self.rect.x += x_shift + + def update(self, x_shift): + self.tileShift(x_shift) self.tile_moviment() # ============================================================================================================================================================================== @@ -419,21 +446,21 @@ def __init__(self, position, size): self.image = pygame.transform.scale(self.image, (size, size)) self.rect = self.image.get_rect(topleft = position) - def update(self, x_shift): # Quando player chegar a uma parte do level, o level mexe para o lado + def tileShift(self, x_shift): self.rect.x += x_shift + def update(self, x_shift): + self.tileShift(x_shift) + # ============================================================================================================================================================================== # Classe do totem de finalização (nota na Delta) -class Computer(pygame.sprite.Sprite): +class Computer(Tile): def __init__(self, position, size): - super().__init__() + super().__init__(position, size) self.image = assets['computer'] self.image = pygame.transform.scale(self.image, (size, size)) self.rect = self.image.get_rect(topleft = position) self.mask = pygame.mask.from_surface(self.image) - - def update(self, x_shift): - self.rect.x += x_shift \ No newline at end of file diff --git a/player_class.py b/player_class.py index 8a6229c..d2c2db1 100644 --- a/player_class.py +++ b/player_class.py @@ -1,5 +1,5 @@ import pygame -from settings import level_map, screen_height, tile_size, screen_width +from settings import tile_size, screen_width from assets import * # Classe do Carlos, o Macaco diff --git a/settings.py b/settings.py index 81faaa3..1419273 100644 --- a/settings.py +++ b/settings.py @@ -1,11 +1,10 @@ # Setup do mapa - level_map = [ ' FFF ', ' A T CT FFF ', ' T CT XXX TC T XXX XXXXXX FFF ', -' XXX XXXXX X XXXXX TV T FF ', +' XXX XXXXX X XXXXXX TV T FF ', ' X X XX FFFF T CTV TF X TV T TV T T CT FF O ', ' M XF FX EFFF XXXXXXX F F X X X X XXXXXXXEEEEXEEEE x X X XXX', 'XXXX T CT XFF FFX CT E EXFFFA EXXFFFFFFFXXEEEEFEEEFC FX TV T E XXX EEEEE T CXXXXXFFFFFFFFFFFFFFFF XXX FFF',