Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Gambiarra/gambiarra.py
diff options
context:
space:
mode:
authorLuiz 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)
commit177c9eb09b9fd94482e6dd3fcfa9d5258a9e44b1 (patch)
tree4d5e615b4c76a6f394f9f2cc85d024a7cb154259 /Gambiarra/gambiarra.py
parent86b08180b4b84bc445215904d3739890d498823f (diff)
V6, 2 horas
Diffstat (limited to 'Gambiarra/gambiarra.py')
-rw-r--r--Gambiarra/gambiarra.py138
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()