vtm/quelldatein/aufbau/figur.ts

120 lines
2.3 KiB
TypeScript
Raw Normal View History

2017-11-08 11:30:34 +01:00
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]));
}
}
}
}