91 lines
1.7 KiB
TypeScript
91 lines
1.7 KiB
TypeScript
|
|
module mod_vtm_aufbau
|
|
{
|
|
|
|
/**
|
|
* @author kcf <vidofnir@folksprak.org>
|
|
*/
|
|
export class klasse_leser
|
|
implements schnittstelle_aktor
|
|
{
|
|
|
|
/**
|
|
* @author kcf <vidofnir@folksprak.org>
|
|
*/
|
|
private richtung : typ_richtung;
|
|
|
|
|
|
/**
|
|
* @author kcf <vidofnir@folksprak.org>
|
|
*/
|
|
public constructor(richtung : typ_richtung = 0)
|
|
{
|
|
this.richtung = richtung;
|
|
}
|
|
|
|
|
|
/**
|
|
* @author kcf <vidofnir@folksprak.org>
|
|
*/
|
|
public richtung_lesen() : typ_richtung
|
|
{
|
|
return this.richtung;
|
|
}
|
|
|
|
|
|
/**
|
|
* @author kcf <vidofnir@folksprak.org>
|
|
* @implementation
|
|
*/
|
|
public drehen() : void
|
|
{
|
|
this.richtung = richtung_addieren(this.richtung, +1);
|
|
}
|
|
|
|
|
|
/**
|
|
* @author kcf <vidofnir@folksprak.org>
|
|
* @implementation
|
|
*/
|
|
public verwenden(figur : klasse_figur) : void
|
|
{
|
|
let symbol_ : schnittstelle_fehlermonade<typ_symbol> = figur.lesen();
|
|
let summand : typ_richtung;
|
|
if (symbol_.ist_schlicht())
|
|
{
|
|
let symbol : typ_symbol = symbol_.lesen();
|
|
figur.schieben();
|
|
switch (symbol)
|
|
{
|
|
case 0:
|
|
{
|
|
summand = +1;
|
|
break;
|
|
}
|
|
case 1:
|
|
{
|
|
summand = -1;
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
let meldung : string = ("ungültiges Symbol '" + String(symbol) + "'");
|
|
throw (new Error(meldung));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
summand = 0;
|
|
}
|
|
let richtung : typ_richtung = richtung_addieren(this.richtung, summand);
|
|
figur.bewegen(richtung);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|