| |
C# 2008 Express
Download : FishFaceTXCS.ZIP
Lösung für C# 2008 und die
FishFaceTX.DLL
Klasse HanoiTower
using
FishFaceTX;
namespace HanoiTower {
class
HanoiTower
{
HanoiRobot
hr;
static
void Main(string[]
args) {
HanoiTower
ht = new HanoiTower();
ht.Action();
}
void
Action() {
hr
= new
HanoiRobot
Console.WriteLine("---
Main gestartet ---"
Console.WriteLine("---
Beenden : Escape-Taste ---"
hr.OpenController("COM4");
Console.WriteLine("Fährt
auf Grundstellung");
hr.Grundstellung();
Console.WriteLine("Bei
der Arbeit" );
Hanoi(3,
2, 22, 38);
Console.WriteLine("---
FINIS ---"
hr.CloseController();
Console.WriteLine("---
RETURN Taste drcken ---"
Console.ReadLine();
}
void
Hanoi(int n, int
TAnf, int TMit, int
TEnd) {
if
(n == 1) {
Console.WriteLine("Scheibe
{0:0} : von {1:00} nach {2:00}",
n, TAnf, TEnd);
hr.Ziehe(TAnf,
TEnd);
}
else
{
Hanoi(n - 1, TAnf, TEnd, TMit);
Console.WriteLine("Scheibe
{0:0} : von {1:00} nach {2:00}",
n, TAnf, TEnd);
hr.Ziehe(TAnf, TEnd);
Hanoi(n - 1, TMit, TAnf, TEnd);
}
}
Klasse HanoiRobot
class
HanoiRobot : FishFace
{
const
int
SpeedFull = 512;
const
Mot mSaule = Mot.M1;
const
Mot mArm = Mot.M2;
const
Unv iArmOben = Unv.I3;
const
Unv iArmUnten = Unv.I4;
const
Out oGreifer = Out.O5;
int
robPos;
public void
Grundstellung() {
SetLamp(oGreifer,
Dir.Off);
ArmHeben();
robPos
= 9999;
SauleNach(0);
}
public
void Ziehe(int
von, int
nach) {
SauleNach(von);
ArmSenken();
SetLamp(oGreifer,
Dir.On);
ArmHeben();
SauleNach(nach);
ArmSenken();
SetLamp(oGreifer,
Dir.Off);
ArmHeben();
}
void
SauleNach(int
zielPos) {
if
(robPos < zielPos) {
StartRobMotor(mSaule,
Dir.Right,
SpeedFull, zielPos - robPos);
robPos
= zielPos + WaitForMotor(mSaule);
}
else
{
StartRobMotor(mSaule, Dir.Left,
SpeedFull, robPos - zielPos);
robPos = zielPos - WaitForMotor(mSaule);
}
}
void
ArmSenken() {
SetMotor(mArm,
Dir.Left);
WaitForInput(iArmUnten,
true);
SetMotor(mArm,
Dir.Off);
}
void
ArmHeben() {
SetMotor(mArm,
Dir.Right);
WaitForInput(iArmOben,
true);
SetMotor(mArm,
Dir.Off);
}}}}
Stand : 19.04.2010
|