Mercurial > katka
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)
