Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bridge.py18
-rw-r--r--physics.py4
-rw-r--r--tools.py4
3 files changed, 22 insertions, 4 deletions
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))