Hanoi TX Python 3.1.1

ftComputing : Programme für die fischertechnik-Interfaces und -konstruktionskästen
  
ftComputing.de
Home
Back
Sitemap
Index
Links
Impressum
Mail

 

Python 3.1.1

Download : PythonFish311
Lösung für Python 3.1.1 und FishFaTX.PY

Klasse HanoiTower

from FishFaTX import *

def Hanoi(n, TAnf, TMit, TEnd):
  "Hanoi-Logik"
  if(n == 1):
    print("Scheibe %d von %2d nach %2d" % (n, TAnf, TEnd))
    hr.Ziehe(TAnf, TEnd);
  else:
    Hanoi(n-1, TAnf, TEnd, TMit)
    print("Scheibe %d von %2d nach %2d" % (n, TAnf, TEnd))
    hr.Ziehe(TAnf, TEnd)
    Hanoi(n-1, TMit, TAnf, TEnd)

hr = HanoiRobot()
print("--- HanoiTower gestartet ---")
hr.OpenController(4)
print("--- Fährt auf Grundstellung ---")
hr.Grundstellung()
print("--- Bei der Arbeit ---")
Hanoi(3, 2, 22, 38)
print("--- FINIS ---")
hr.CloseController()

Das Programm startet schlicht mit dem ersten Befehl auf Position 1, hier hr = HanoiRobot().
Python erfordet, daß die Definitionen vorne liegen. In der Source liegen diese Zeilen also hinten in der Source. Die Source beginnt mit der Definition der Klasse HanoiRobot.

Klasse HanoiRobot

class HanoiRobot(FishFace):
  "Betrieb des Hanoi-Roboters"
  SpeedFull = 512
  mSaule = 1
  mArm = 2
  iArmOben = 3
  iArmUnten = 4
  oGreifer = 5

  def Grundstellung(self):
    "Fahren auf Grundstellung"
    self.SetLamp(0, self.oGreifer, self.Aus)
    self.ArmHeben()
    self.robPos = 9999
    self.SauleNach(0)
  def Ziehe(self, von, nach):
    "Ziehe von Position nach Position"
    self.SauleNach(von)
    self.ArmSenken()
    self.SetLamp(0, self.oGreifer, self.SpeedFull)
    self.ArmHeben()
    self.SauleNach(nach)
    self.ArmSenken()
    self.SetLamp(0, self.oGreifer, self.Aus)
    self.ArmHeben()
  def SauleNach(self, zielPos):
    "Fahre zu zielPos"
    if(self.robPos < zielPos):
      self.StartRobMotor(0, self.mSaule, self.Rechts, self.SpeedFull,
                         zielPos - self.robPos)
      self.robPos = zielPos + self.WaitForMotor(0, self.mSaule)
    else:
      self.StartRobMotor(0, self.mSaule, self.Links, self.SpeedFull,
                         self.robPos - zielPos)
      self.robPos = zielPos - self.WaitForMotor(0, self.mSaule)
  def ArmSenken(self):
    "Senken des Greiferarms"
    self.SetMotor(0, self.mArm, self.Links)
    self.WaitForInput(0, self.iArmUnten)
    self.SetMotor(0, self.mArm, self.Aus)
  def ArmHeben(self):
    "Heben des Greiferarms"
      self.SetMotor(0, self.mArm, self.Rechts)
      self.WaitForInput(0, self.iArmOben)
      self.SetMotor(0, self.mArm, self.Aus)

Die Klasse HanoiRobot ist von FishFaTX.FishFace abgeleitet.

Stand : 20.04.2010