diff options
author | Luiz Irber <luiz.irber@gmail.com> | 2007-11-11 04:03:49 (GMT) |
---|---|---|
committer | Luiz Irber <luiz.irber@gmail.com> | 2007-11-11 04:03:49 (GMT) |
commit | 177c9eb09b9fd94482e6dd3fcfa9d5258a9e44b1 (patch) | |
tree | 4d5e615b4c76a6f394f9f2cc85d024a7cb154259 /Gambiarra/gambiarra.py | |
parent | 86b08180b4b84bc445215904d3739890d498823f (diff) |
V6, 2 horas
Diffstat (limited to 'Gambiarra/gambiarra.py')
-rw-r--r-- | Gambiarra/gambiarra.py | 138 |
1 files changed, 93 insertions, 45 deletions
diff --git a/Gambiarra/gambiarra.py b/Gambiarra/gambiarra.py index a6a0d25..86436d8 100644 --- a/Gambiarra/gambiarra.py +++ b/Gambiarra/gambiarra.py @@ -1,11 +1,13 @@ -# /gambiarra/gambiarra.py +# gambiarra/gambiarra.py #aqui fica o codigo do jogo em si import pygame from pygame.locals import * import os -from levels import levels as Levels +import levels as Levels from objects.wall import * +from objects.target import Target +from objects.esteira import Esteira def check_collision(sprite_list, wall_list): new_objects = pygame.sprite.RenderPlain() @@ -20,36 +22,57 @@ def check_collision(sprite_list, wall_list): 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 + obj.rect.bottom = w.rect.top - 1 + obj.speed[1] = -0.7*obj.speed[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 + obj.speed[1] = -0.7*obj.speed[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 + obj.speed[1] = -0.9*obj.speed[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 + obj.speed[1] = -0.9*obj.speed[1] + + if isinstance(w, Esteira): + pass + #Considerando que ela rola em sentido horario! +# if (obj.rect.midtop > w.rect.bottom and +# obj.rect.top < w.rect.top): +# print "Pra esquerda!" + # bateu embaixo, acelera pra esquerda +# obj.rect.top = w.rect.bottom +# obj.speed[0] -= 10 +# elif (obj.rect.midbottom > w.rect.top and +# obj.rect.bottom < w.rect.bottom): +# print "Pra direita!" + # bateu em cima, acelera pra esquerda +# obj.rect.bottom = w.rec.top +# obj.speed[0] += 10 + + if isinstance(w, Target): + pass return new_objects + class Game(object): fps = 30 screen = None screenSize = None + playing = None run = None background = None clock = None level = 0 - allLevels = [] + levels = [] def __init__(self): pygame.init() @@ -57,32 +80,40 @@ class Game(object): self.screenSize = self.screen.get_size() pygame.display.flip() self.run = True + self.playing = False pygame.display.set_caption("Gambiarra") self.clock = pygame.time.Clock() - self.allLevels = Levels.init_levels() + self.levels = Levels.init_levels() #inicia o loop self.main_loop() def event_handler(self): - #verificar o evento e tomar as acoes - pass + for event in pygame.event.get(): + if event.type == MOUSEBUTTONDOWN: + self.mouse_event( pygame.mouse.get_pos(), + pygame.mouse.get_pressed() ) def update_screen(self, fps): #update dos elementos da tela - 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 - if obj.speed[0]: - obj.speed[0] *= 0.9 - else: - obj.speed[0] = 20 - obj.speed[1] += obj.gravity + if self.playing: + # executa a simulacao + objs = check_collision(self.levels[self.level].simulator.objects, + self.levels[self.level].simulator.staticObjs) + self.levels[self.level].simulator.objects = objs + for obj in self.levels[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 + if obj.speed[0]: + obj.speed[0] *= 0.9 + else: + obj.speed[0] = 20 + obj.speed[1] += obj.gravity + else: + # movimenta elementos na tela + pass def start_window(self): #desenha a tela inicial (abstrato -chama os outros metodos predefinidos) @@ -93,19 +124,39 @@ class Game(object): 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() + print "botao esquerdo pressionado" + for obj in self.levels[self.level].simulator.objects: + if obj.rect.collidepoint(mousePos): + print "colidiu objeto" + dragging = obj + collided = True + break + + mouseMove = pygame.mouse.get_rel() + flag = True if collided: + while flag: + for evt in pygame.event.get(): + if evt.type == MOUSEBUTTONDOWN: + button = pygame.mouse.get_pressed() + if button[0]: + print "continua clicando" + if not button[0]: + print "soltou" + flag = False + pygame.mouse.get_rel() + else: + print "evento diferente" + flag = False + pygame.mouse.get_rel() + + while mouseButtonsPressed[0]: - pass + print "arrastando o mouse" - mouseMove = python.mouse.get_rel() - #comentado porque por enquanto obj eh None - #obj.rect = obj.rect.move(mouseMove) + mouseMove = pygame.mouse.get_rel() + obj.rect = obj.rect.move(mouseMove) def main_loop(self): #loop principal @@ -114,19 +165,16 @@ class Game(object): # -clique sobre um thing, arrasta # -clique sobre um botao - #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() + #quando clicar em play transformar o botao em stop + self.event_handler() + while self.run: + self.event_handler() + self.clock.tick(self.fps) + self.update_screen(self.fps) + self.levels[self.level].draw() - pygame.display.flip() - for event in pygame.event.get(): - if event.type == MOUSEBUTTONDOWN: - self.mouse_event( pygame.mouse.get_pos(), - pygame.mouse.get_pressed() ) + pygame.display.flip() + def main(): game = Game() |