changeset 4:9d2813c7810d

creep
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Fri, 12 Sep 2014 01:01:58 +0200
parents 52e98bf3d1a4
children b70872acf9ef
files creep.py
diffstat 1 files changed, 46 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/creep.py	Fri Sep 12 01:01:58 2014 +0200
@@ -0,0 +1,46 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import katka
+
+FPS = 12
+# LEG_ORDER = {None: 3, 3: 1, 1: 2, 2: 0, 0: 3}
+LEG_ORDER = {None: 0, 0: 3, 3: 1, 1: 2, 2: 0}
+
+def update(robot, legs, tilt):
+    for leg in legs:
+        try:
+            leg.move_by((leg.x_dir * 0.75, 0), tilt)
+        except ValueError:
+            pass
+    robot.update(FPS)
+
+def creep(robot):
+    tilt = 0
+    height = 10
+    on_ground = set(robot.legs)
+    for leg in robot.legs:
+        leg.move_to((leg.home[0] + 5, leg.home[1] - height), tilt)
+    leg_id = LEG_ORDER[None]
+    while True:
+        leg = robot.legs[leg_id]
+        while tilt != leg.y_dir * 4:
+            tilt += leg.y_dir * 2
+            update(robot, on_ground, tilt)
+        on_ground.remove(leg)
+        leg.move_to((None, leg.home[1] - height - 20), tilt)
+        for step in range(2):
+            update(robot, on_ground, tilt)
+        leg.move_to((leg.home[0] + 5 - 15 * leg.x_dir, None), tilt)
+        for step in range(2):
+            update(robot, on_ground, tilt)
+        leg.move_to((None, leg.home[1] - height), tilt)
+        on_ground.add(leg)
+        for step in range(4):
+            update(robot, on_ground, tilt)
+        leg_id = LEG_ORDER[leg_id]
+
+
+if __name__ == '__main__':
+    robot = katka.Robot()
+    creep(robot)