From 621ffa66628afe5543ce6dff3d7e676e6d92ede8 Mon Sep 17 00:00:00 2001 From: nrp Date: Sun, 31 Aug 2008 18:20:37 +0000 Subject: Merge branch 'master' of git+ssh://physics03@dev.laptop.org/git/projects/physics03 Conflicts: bridge.py tools.py --- diff --git a/bridge.py b/bridge.py index c6b4775..a0f3c1c 100644 --- a/bridge.py +++ b/bridge.py @@ -9,6 +9,9 @@ class Bridge: self.cost = 0 self.stress = 0 self.capacity = 1 + self.first_train = None + self.train_off_screen = False + self.train_was_created = False def create_world(self): self.world.set_color((100,150,50)) @@ -53,16 +56,27 @@ class Bridge: coord = int(self.world.meter_to_screen(vec.x)),int(780 - self.world.meter_to_screen(vec.y)) pygame.draw.circle(self.screen, (int(force/2),255-int(force/2),0), coord, 4) - def create_train(self, worldpoint = (-100,490), train = (100, 50), wheelrad = 20, cars = 3, speed = -10): + pos = self.first_train.GetPosition() + if pos.y < 0: + print "TRAIN FELL OFF!" + self.train_off_screen = True + + def create_train(self, worldpoint = (-100,490), train = (100, 50), wheelrad = 20, cars = 3, force = False): + if not force and self.train_was_created: + return + self.train_was_created = True points = [] + self.train_off_screen = False for i in range(0,cars): startpoint = (worldpoint[0]-(train[0]+7)*i, worldpoint[1]) points.append(startpoint) rect = pygame.Rect(startpoint, train) rect.normalize() pygame.draw.rect(self.screen, (200, 50, 100), rect, 3) - self.world.add.rect(rect.center, rect.width / 2, rect.height / 2, + rect = self.world.add.rect(rect.center, rect.width / 2, rect.height / 2, dynamic = True, density=10.0, restitution=0.16, friction=0.5) + if i == 0: + self.first_train = rect self.world.set_color((0,0,0)) rearwheel = (startpoint[0]+wheelrad,startpoint[1]+train[1]-wheelrad/2) diff --git a/physics.py b/physics.py index 3b0431e..8b827e8 100644 --- a/physics.py +++ b/physics.py @@ -87,6 +87,10 @@ class PhysicsGame: textpos = text.get_rect(left=700,top=25) self.screen.blit(text,textpos) + if self.bridge.train_off_screen: + text = self.font.render("Train fell off the screen, try again!", True, (0,0,0)) + textpos = text.get_rect(left=700,top=43) + self.screen.blit(text,textpos) # Flip Display pygame.display.flip() diff --git a/tools.py b/tools.py index 4ad4d46..13a43c8 100644 --- a/tools.py +++ b/tools.py @@ -37,7 +37,7 @@ class Tool(object): self.game.bridge.create_train() self.game.world.run_physics = not self.game.world.run_physics elif event.key == K_t: - self.game.bridge.create_train() + self.game.bridge.create_train(force=True) elif event.key == K_b: self.game.setTool("box") elif event.key == K_c: @@ -293,7 +293,7 @@ class BridgeJointTool(Tool): if event.pos[1] > 550 and (event.pos[0] < 350 or event.pos[0] > 850): jointDef.Initialize(self.game.world.world.GetGroundBody(), bodies[0], self.to_b2vec(event.pos)) - else: + elif len(bodies) == 2: if bodies[0].IsStatic(): jointDef.Initialize(self.game.world.world.GetGroundBody(), bodies[1], self.to_b2vec(event.pos)) -- cgit v0.9.1