| |
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
|