120 lines
2.3 KiB
TypeScript
120 lines
2.3 KiB
TypeScript
|
|
|
||
|
|
module mod_vtm_aufbau
|
||
|
|
{
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @author kcf <vidofnir@folksprak.org>
|
||
|
|
*/
|
||
|
|
export class klasse_figur
|
||
|
|
{
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @author kcf <vidofnir@folksprak.org>
|
||
|
|
*/
|
||
|
|
private band : Array<typ_symbol>;
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @author kcf <vidofnir@folksprak.org>
|
||
|
|
*/
|
||
|
|
private position : typ_position;
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @author kcf <vidofnir@folksprak.org>
|
||
|
|
*/
|
||
|
|
public constructor(band : Array<typ_symbol> = [], position : typ_position = {"u": 0, "v": 0})
|
||
|
|
{
|
||
|
|
this.band = band;
|
||
|
|
this.position = position;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @author kcf <vidofnir@folksprak.org>
|
||
|
|
*/
|
||
|
|
public position_lesen() : typ_position
|
||
|
|
{
|
||
|
|
return this.position;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @author kcf <vidofnir@folksprak.org>
|
||
|
|
*/
|
||
|
|
public bewegen(richtung : typ_richtung) : void
|
||
|
|
{
|
||
|
|
let summand : typ_position;
|
||
|
|
switch (richtung)
|
||
|
|
{
|
||
|
|
case 0:
|
||
|
|
{
|
||
|
|
summand = {"u": +1, "v": 0};
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case 1:
|
||
|
|
{
|
||
|
|
summand = {"u": +1, "v": 0};
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case 2:
|
||
|
|
{
|
||
|
|
summand = {"u": +1, "v": 0};
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case 3:
|
||
|
|
{
|
||
|
|
summand = {"u": +1, "v": 0};
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case 4:
|
||
|
|
{
|
||
|
|
summand = {"u": +1, "v": 0};
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case 5:
|
||
|
|
{
|
||
|
|
summand = {"u": +1, "v": 0};
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
default:
|
||
|
|
{
|
||
|
|
let meldung : string = ("ungültige Richtung '" + String(richtung) + "'");
|
||
|
|
throw (new Error(meldung));
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
this.position = {"u": (this.position.u + summand.u), "v": (this.position.v + summand.v)};
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @author kcf <vidofnir@folksprak.org>
|
||
|
|
*/
|
||
|
|
public band_schreiben(symbol : typ_symbol) : void
|
||
|
|
{
|
||
|
|
this.band.push(symbol);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @author kcf <vidofnir@folksprak.org>
|
||
|
|
*/
|
||
|
|
public band_lesen() : schnittstelle_fehlermonade<typ_symbol>
|
||
|
|
{
|
||
|
|
if (this.band.length <= 0)
|
||
|
|
{
|
||
|
|
return (new klasse_nichts<typ_symbol>());
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
return (new klasse_schlicht<typ_symbol>(this.band[0]));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|