diff options
author | Luiz Irber <luiz.irber@gmail.com> | 2007-11-11 02:03:22 (GMT) |
---|---|---|
committer | Luiz Irber <luiz.irber@gmail.com> | 2007-11-11 02:03:22 (GMT) |
commit | f8324d6c1bfdafa884d926ca4da317ab8f8e96f5 (patch) | |
tree | 6273f28f4642219627453584a6f1f6b990e93341 /Gambiarra/gambiarra.py | |
parent | 96daec740440285d4232189375a06fd592fa25bb (diff) |
V5, aa meia-noite buscarei sua ALMA! (versao sem crase, e nem til)
Diffstat (limited to 'Gambiarra/gambiarra.py')
-rw-r--r-- | Gambiarra/gambiarra.py | 98 |
1 files changed, 73 insertions, 25 deletions
diff --git a/Gambiarra/gambiarra.py b/Gambiarra/gambiarra.py index 83843fd..a6a0d25 100644 --- a/Gambiarra/gambiarra.py +++ b/Gambiarra/gambiarra.py @@ -7,6 +7,40 @@ import os from levels import levels as Levels from objects.wall import * +def check_collision(sprite_list, wall_list): + new_objects = pygame.sprite.RenderPlain() + for obj in sprite_list: + obj.remove(sprite_list) + obj.add(new_objects) + + for s in sprite_list: + #TODO: verifica colisao de objetos dinamicos + pass + + for w in wall_list: + if obj.rect.colliderect(w.rect): + if isinstance(w, DownWall): + obj.speed[1] = -0.7*obj.speed[1] + if obj.rect.bottom > w.rect.top: + obj.rect.bottom = w.rect.top - 1 + + if isinstance(w, UpWall): + obj.speed[1] = -0.7*obj.speed[1] + if obj.rect.top < w.rect.bottom: + obj.rect.top = w.rect.bottom + 1 + + if isinstance(w, LeftWall): + obj.speed[0] = -0.9*obj.speed[0] + if obj.rect.left < w.rect.right: + obj.rect.left = w.rect.right + 1 + + if isinstance(w, RightWall): + obj.speed[0] = -0.9*obj.speed[0] + if obj.rect.right > w.rect.left: + obj.rect.right = w.rect.left - 1 + + return new_objects + class Game(object): fps = 30 screen = None @@ -36,49 +70,63 @@ class Game(object): def update_screen(self, fps): #update dos elementos da tela - self.check_collision() + objs = check_collision(self.allLevels[self.level].simulator.objects, + self.allLevels[self.level].simulator._walls) + self.allLevels[self.level].simulator.objects = objs for obj in self.allLevels[self.level].simulator.objects: #obj eh um objeto na tela if obj.mobility: newpos = obj.rect.move((obj.speed[0],obj.speed[1])) obj.rect = newpos - obj.speed[0] *= 0.9 + if obj.speed[0]: + obj.speed[0] *= 0.9 + else: + obj.speed[0] = 20 obj.speed[1] += obj.gravity - def check_collision(self): - for obj in self.allLevels[self.level].simulator.objects: - obj.remove(self.allLevels[self.level].simulator.objects) - collision = pygame.sprite.spritecollide(obj, - self.allLevels[self.level].simulator.objects, 0) - obj.add(self.allLevels[self.level].simulator.objects) - if collision != []: - if isinstance(collision[0],DownWall): - obj.speed[1] =- obj.speed[1] - - def actors_clear(self): - #retira ator da tela - pass - - def actors_draw(self): - #desenha ator na tela - pass - def start_window(self): #desenha a tela inicial (abstrato -chama os outros metodos predefinidos) pass def next_level(self): pass + + def mouse_event(self, mousePos, mouseButtonsPressed ): + if mouseButtonsPressed[0]: + #verificar colisao com thing + #colidiu = verificar Colisao!!! + collided = False + #Pegar o objeto + obj = None + mouseMove = python.mouse.get_rel() + if collided: + while mouseButtonsPressed[0]: + pass + + mouseMove = python.mouse.get_rel() + #comentado porque por enquanto obj eh None + #obj.rect = obj.rect.move(mouseMove) def main_loop(self): #loop principal + #-definir e desenhar o nivel + #-esperar por eventos do mouse: + # -clique sobre um thing, arrasta + # -clique sobre um botao - while self.run: - self.clock.tick(self.fps) - self.update_screen(self.fps) - self.allLevels[self.level].draw() + #quando clicar em play transformar o botao em stop + playPressed = True + if playPressed: + while self.run: + self.clock.tick(self.fps) + self.update_screen(self.fps) + self.allLevels[self.level].draw() - pygame.display.flip() + pygame.display.flip() + for event in pygame.event.get(): + if event.type == MOUSEBUTTONDOWN: + self.mouse_event( pygame.mouse.get_pos(), + pygame.mouse.get_pressed() ) def main(): game = Game() |