zwischenspeicherung
This commit is contained in:
parent
74a9792bbf
commit
48b556057c
|
|
@ -16,88 +16,99 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export type typ_aktor = typ_komplex<any>;
|
|
||||||
|
|
||||||
|
export module mod_aufbau
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export type schnittstelle_aktor =
|
|
||||||
{
|
{
|
||||||
beispiel : ()=>typ_aktor;
|
|
||||||
drehen : (aktor : typ_aktor, inkrement : int)=>void;
|
export module mod_aktor
|
||||||
verwenden : (aktor : typ_aktor, figur : typ_figur)=>void;
|
{
|
||||||
exportieren : (aktor : typ_aktor)=>any;
|
|
||||||
importieren : (roh : any)=>typ_aktor;
|
/**
|
||||||
}
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
;
|
*/
|
||||||
|
export type typ_aktor = typ_komplex<any>;
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
/**
|
||||||
*/
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
export var implementierung_aktor : {[art : string] : schnittstelle_aktor} = {};
|
*/
|
||||||
|
export type schnittstelle_aktor =
|
||||||
|
{
|
||||||
/**
|
beispiel : ()=>typ_aktor;
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
drehen : (aktor : typ_aktor, inkrement : int)=>void;
|
||||||
*/
|
verwenden : (aktor : typ_aktor, figur : mod_figur.typ_figur)=>void;
|
||||||
export function aktor_erstellen(art : string, kern : any) : typ_aktor
|
exportieren : (aktor : typ_aktor)=>any;
|
||||||
{
|
importieren : (roh : any)=>typ_aktor;
|
||||||
return {"art": art, "angaben": kern};
|
}
|
||||||
}
|
;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_beispiel(art : string) : typ_aktor
|
export var implementierung_aktor : {[art : string] : schnittstelle_aktor} = {};
|
||||||
{
|
|
||||||
return implementierung_aktor[art].beispiel();
|
|
||||||
}
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
/**
|
/*
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
export function erstellen(art : string, kern : any) : typ_aktor
|
||||||
*/
|
{
|
||||||
export function aktor_drehen(aktor : typ_aktor, inkrement ?: int) : void
|
return einpacken(art, kern);
|
||||||
{
|
}
|
||||||
return implementierung_aktor[aktor.art].drehen(aktor, inkrement);
|
*/
|
||||||
}
|
|
||||||
|
|
||||||
|
/**
|
||||||
/**
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
*/
|
||||||
*/
|
export function beispiel(art : string) : typ_aktor
|
||||||
export function aktor_verwenden(aktor : typ_aktor, figur : typ_figur) : void
|
{
|
||||||
{
|
return implementierung_aktor[art].beispiel();
|
||||||
return implementierung_aktor[aktor.art].verwenden(aktor, figur);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
/**
|
||||||
/**
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
*/
|
||||||
*/
|
export function drehen(aktor : typ_aktor, inkrement ?: int) : void
|
||||||
export function aktor_exportieren(aktor : typ_aktor) : any
|
{
|
||||||
{
|
return implementierung_aktor[aktor.art].drehen(aktor, inkrement);
|
||||||
return implementierung_aktor[aktor.art].exportieren(aktor);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
/**
|
||||||
/**
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
*/
|
||||||
*/
|
export function verwenden(aktor : typ_aktor, figur : mod_figur.typ_figur) : void
|
||||||
export function aktor_importieren(roh : any) : typ_aktor
|
{
|
||||||
{
|
return implementierung_aktor[aktor.art].verwenden(aktor, figur);
|
||||||
return implementierung_aktor[roh.art].importieren(roh);
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function exportieren(aktor : typ_aktor) : any
|
||||||
|
{
|
||||||
|
return implementierung_aktor[aktor.art].exportieren(aktor);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function importieren(roh : any) : typ_aktor
|
||||||
|
{
|
||||||
|
return implementierung_aktor[roh.art].importieren(roh);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,128 +16,141 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
export module mod_aufbau
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export type typ_annehmer =
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
export module mod_aktor_annehmer
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
let art : string = "annehmer";
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export type typ_annehmer =
|
||||||
|
{
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function erstellen
|
||||||
|
(
|
||||||
|
)
|
||||||
|
: typ_annehmer
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function erstellen_aktor
|
||||||
|
(
|
||||||
|
)
|
||||||
|
: mod_aktor.typ_aktor
|
||||||
|
{
|
||||||
|
return einpacken(art, erstellen());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function beispiel
|
||||||
|
(
|
||||||
|
)
|
||||||
|
: typ_annehmer
|
||||||
|
{
|
||||||
|
return erstellen();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function drehen
|
||||||
|
(
|
||||||
|
annehmer : typ_annehmer,
|
||||||
|
inkrement ?: int
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function verwenden
|
||||||
|
(
|
||||||
|
annehmer : typ_annehmer,
|
||||||
|
figur : mod_figur.typ_figur
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
mod_figur.annehmen(figur);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function exportieren
|
||||||
|
(
|
||||||
|
annehmer : typ_annehmer
|
||||||
|
)
|
||||||
|
: any
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function importieren
|
||||||
|
(
|
||||||
|
roh : any
|
||||||
|
)
|
||||||
|
: typ_annehmer
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
erstellen
|
||||||
|
(
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
mod_aktor.implementierung_aktor[art] =
|
||||||
|
{
|
||||||
|
"beispiel": () => einpacken(art, beispiel()),
|
||||||
|
"drehen": (aktor, inkrement) => drehen(auspacken(aktor), inkrement),
|
||||||
|
"verwenden": (aktor, figur) => verwenden(auspacken(aktor), figur),
|
||||||
|
"exportieren": (aktor) => ({"art": art, "angaben": exportieren(aktor.angaben)}),
|
||||||
|
"importieren": (roh) => einpacken(art, importieren(roh)),
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function annehmer_erstellen
|
|
||||||
(
|
|
||||||
)
|
|
||||||
: typ_annehmer
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function annehmer_erstellen_aktor
|
|
||||||
(
|
|
||||||
)
|
|
||||||
: typ_aktor
|
|
||||||
{
|
|
||||||
return {"art": "annehmer", "angaben": annehmer_erstellen()};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function annehmer_beispiel
|
|
||||||
(
|
|
||||||
)
|
|
||||||
: typ_annehmer
|
|
||||||
{
|
|
||||||
return annehmer_erstellen();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function annehmer_drehen
|
|
||||||
(
|
|
||||||
annehmer : typ_annehmer,
|
|
||||||
inkrement ?: int
|
|
||||||
)
|
|
||||||
: void
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function annehmer_verwenden
|
|
||||||
(
|
|
||||||
annehmer : typ_annehmer,
|
|
||||||
figur : typ_figur
|
|
||||||
)
|
|
||||||
: void
|
|
||||||
{
|
|
||||||
figur_annehmen(figur);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function annehmer_exportieren
|
|
||||||
(
|
|
||||||
annehmer : typ_annehmer
|
|
||||||
)
|
|
||||||
: any
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function annehmer_importieren
|
|
||||||
(
|
|
||||||
roh : any
|
|
||||||
)
|
|
||||||
: typ_annehmer
|
|
||||||
{
|
|
||||||
return (
|
|
||||||
annehmer_erstellen
|
|
||||||
(
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
let wrap = (angaben => ({"art": "annehmer", "angaben": angaben}));
|
|
||||||
let unwrap = (aktor => aktor.angaben);
|
|
||||||
implementierung_aktor["annehmer"] =
|
|
||||||
{
|
|
||||||
"beispiel": () => wrap(annehmer_beispiel()),
|
|
||||||
"drehen": (aktor, inkrement) => annehmer_drehen(unwrap(aktor), inkrement),
|
|
||||||
"verwenden": (aktor, figur) => annehmer_verwenden(unwrap(aktor), figur),
|
|
||||||
"exportieren": (aktor) => ({"art": "annehmer_", "angaben": annehmer_exportieren(aktor.angaben)}),
|
|
||||||
"importieren": (roh) => wrap(annehmer_importieren(roh)),
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,148 +16,161 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
export module mod_aufbau
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export type typ_befoerderer =
|
|
||||||
{
|
{
|
||||||
richtung : typ_richtung;
|
|
||||||
|
export module mod_aktor_befoerderer
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
let art : string = "befoerderer";
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export type typ_befoerderer =
|
||||||
|
{
|
||||||
|
richtung : mod_richtung.typ_richtung;
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function erstellen
|
||||||
|
(
|
||||||
|
richtung : mod_richtung.typ_richtung
|
||||||
|
)
|
||||||
|
: typ_befoerderer
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"richtung": richtung,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function erstellen_aktor
|
||||||
|
(
|
||||||
|
richtung : mod_richtung.typ_richtung
|
||||||
|
)
|
||||||
|
: mod_aktor.typ_aktor
|
||||||
|
{
|
||||||
|
return einpacken(art, erstellen(richtung));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function beispiel
|
||||||
|
(
|
||||||
|
)
|
||||||
|
: typ_befoerderer
|
||||||
|
{
|
||||||
|
return erstellen(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function richtung_lesen
|
||||||
|
(
|
||||||
|
befoerderer : typ_befoerderer
|
||||||
|
)
|
||||||
|
: mod_richtung.typ_richtung
|
||||||
|
{
|
||||||
|
return befoerderer.richtung;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function drehen
|
||||||
|
(
|
||||||
|
befoerderer : typ_befoerderer,
|
||||||
|
inkrement : int = +1
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
befoerderer.richtung = mod_richtung.addieren(befoerderer.richtung, inkrement);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function verwenden
|
||||||
|
(
|
||||||
|
befoerderer : typ_befoerderer,
|
||||||
|
figur : mod_figur.typ_figur
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
mod_figur.bewegen(figur, befoerderer.richtung);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function exportieren
|
||||||
|
(
|
||||||
|
befoerderer : typ_befoerderer
|
||||||
|
)
|
||||||
|
: any
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"richtung": mod_richtung.exportieren(befoerderer.richtung),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function importieren
|
||||||
|
(
|
||||||
|
roh : any
|
||||||
|
)
|
||||||
|
: typ_befoerderer
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
erstellen
|
||||||
|
(
|
||||||
|
mod_richtung.importieren(roh["richtung"])
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
mod_aktor.implementierung_aktor[art] =
|
||||||
|
{
|
||||||
|
"beispiel": () => einpacken(art, beispiel()),
|
||||||
|
"drehen": (aktor, inkrement) => drehen(auspacken(aktor), inkrement),
|
||||||
|
"verwenden": (aktor, figur) => verwenden(auspacken(aktor), figur),
|
||||||
|
"exportieren": (aktor) => ({"art": art, "angaben": exportieren(aktor.angaben)}),
|
||||||
|
"importieren": (roh) => einpacken(art, importieren(roh)),
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function befoerderer_erstellen
|
|
||||||
(
|
|
||||||
richtung : typ_richtung
|
|
||||||
)
|
|
||||||
: typ_befoerderer
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"richtung": richtung,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function befoerderer_erstellen_aktor
|
|
||||||
(
|
|
||||||
richtung : typ_richtung
|
|
||||||
)
|
|
||||||
: typ_aktor
|
|
||||||
{
|
|
||||||
return {"art": "befoerderer", "angaben": befoerderer_erstellen(richtung)};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function befoerderer_beispiel
|
|
||||||
(
|
|
||||||
)
|
|
||||||
: typ_befoerderer
|
|
||||||
{
|
|
||||||
return befoerderer_erstellen(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function befoerderer_richtung_lesen
|
|
||||||
(
|
|
||||||
befoerderer : typ_befoerderer
|
|
||||||
)
|
|
||||||
: typ_richtung
|
|
||||||
{
|
|
||||||
return befoerderer.richtung;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function befoerderer_drehen
|
|
||||||
(
|
|
||||||
befoerderer : typ_befoerderer,
|
|
||||||
inkrement : int = +1
|
|
||||||
)
|
|
||||||
: void
|
|
||||||
{
|
|
||||||
befoerderer.richtung = richtung_addieren(befoerderer.richtung, inkrement);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function befoerderer_verwenden
|
|
||||||
(
|
|
||||||
befoerderer : typ_befoerderer,
|
|
||||||
figur : typ_figur
|
|
||||||
)
|
|
||||||
: void
|
|
||||||
{
|
|
||||||
figur_bewegen(figur, befoerderer.richtung);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function befoerderer_exportieren
|
|
||||||
(
|
|
||||||
befoerderer : typ_befoerderer
|
|
||||||
)
|
|
||||||
: any
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"richtung": richtung_exportieren(befoerderer.richtung),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function befoerderer_importieren
|
|
||||||
(
|
|
||||||
roh : any
|
|
||||||
)
|
|
||||||
: typ_befoerderer
|
|
||||||
{
|
|
||||||
return (
|
|
||||||
befoerderer_erstellen
|
|
||||||
(
|
|
||||||
richtung_importieren(roh["richtung"])
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
let wrap = (angaben => ({"art": "befoerderer", "angaben": angaben}));
|
|
||||||
let unwrap = (aktor => aktor.angaben);
|
|
||||||
implementierung_aktor["befoerderer"] =
|
|
||||||
{
|
|
||||||
"beispiel": () => wrap(befoerderer_beispiel()),
|
|
||||||
"drehen": (aktor, inkrement) => befoerderer_drehen(unwrap(aktor), inkrement),
|
|
||||||
"verwenden": (aktor, figur) => befoerderer_verwenden(unwrap(aktor), figur),
|
|
||||||
"exportieren": (aktor) => ({"art": "befoerderer", "angaben": befoerderer_exportieren(aktor.angaben)}),
|
|
||||||
"importieren": (roh) => wrap(befoerderer_importieren(roh)),
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,148 +16,161 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
export module mod_aufbau
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export type typ_erzeuger =
|
|
||||||
{
|
{
|
||||||
richtung : typ_richtung;
|
|
||||||
|
export module mod_aktor_erzeuger
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
let art : string = "erzeuger";
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export type typ_erzeuger =
|
||||||
|
{
|
||||||
|
richtung : mod_richtung.typ_richtung;
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function erstellen
|
||||||
|
(
|
||||||
|
richtung : mod_richtung.typ_richtung
|
||||||
|
)
|
||||||
|
: typ_erzeuger
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"richtung": richtung,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function erstellen_aktor
|
||||||
|
(
|
||||||
|
richtung : mod_richtung.typ_richtung
|
||||||
|
)
|
||||||
|
: mod_aktor.typ_aktor
|
||||||
|
{
|
||||||
|
return einpacken(art, erstellen(richtung));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function beispiel
|
||||||
|
(
|
||||||
|
)
|
||||||
|
: typ_erzeuger
|
||||||
|
{
|
||||||
|
return erstellen(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function richtung_lesen
|
||||||
|
(
|
||||||
|
erzeuger : typ_erzeuger
|
||||||
|
)
|
||||||
|
: mod_richtung.typ_richtung
|
||||||
|
{
|
||||||
|
return erzeuger.richtung;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function drehen
|
||||||
|
(
|
||||||
|
erzeuger : typ_erzeuger,
|
||||||
|
inkrement : int = +1
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
erzeuger.richtung = mod_richtung.addieren(erzeuger.richtung, inkrement);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function verwenden
|
||||||
|
(
|
||||||
|
erzeuger : typ_erzeuger,
|
||||||
|
figur : mod_figur.typ_figur
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
mod_figur.bewegen(figur, erzeuger.richtung);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function exportieren
|
||||||
|
(
|
||||||
|
erzeuger : typ_erzeuger
|
||||||
|
)
|
||||||
|
: any
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"richtung": mod_richtung.exportieren(erzeuger.richtung),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function importieren
|
||||||
|
(
|
||||||
|
roh : any
|
||||||
|
)
|
||||||
|
: typ_erzeuger
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
erstellen
|
||||||
|
(
|
||||||
|
mod_richtung.importieren(roh["richtung"])
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
mod_aktor.implementierung_aktor[art] =
|
||||||
|
{
|
||||||
|
"beispiel": () => einpacken(art, beispiel()),
|
||||||
|
"drehen": (aktor, inkrement) => drehen(auspacken(aktor), inkrement),
|
||||||
|
"verwenden": (aktor, figur) => verwenden(auspacken(aktor), figur),
|
||||||
|
"exportieren": (aktor) => ({"art": art, "angaben": exportieren(auspacken(aktor))}),
|
||||||
|
"importieren": (roh) => einpacken(art, importieren(roh)),
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function erzeuger_erstellen
|
|
||||||
(
|
|
||||||
richtung : typ_richtung
|
|
||||||
)
|
|
||||||
: typ_erzeuger
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"richtung": richtung,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function erzeuger_erstellen_aktor
|
|
||||||
(
|
|
||||||
richtung : typ_richtung
|
|
||||||
)
|
|
||||||
: typ_aktor
|
|
||||||
{
|
|
||||||
return {"art": "erzeuger", "angaben": erzeuger_erstellen(richtung)};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function erzeuger_beispiel
|
|
||||||
(
|
|
||||||
)
|
|
||||||
: typ_erzeuger
|
|
||||||
{
|
|
||||||
return erzeuger_erstellen(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function erzeuger_richtung_lesen
|
|
||||||
(
|
|
||||||
erzeuger : typ_erzeuger
|
|
||||||
)
|
|
||||||
: typ_richtung
|
|
||||||
{
|
|
||||||
return erzeuger.richtung;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function erzeuger_drehen
|
|
||||||
(
|
|
||||||
erzeuger : typ_erzeuger,
|
|
||||||
inkrement : int = +1
|
|
||||||
)
|
|
||||||
: void
|
|
||||||
{
|
|
||||||
erzeuger.richtung = richtung_addieren(erzeuger.richtung, inkrement);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function erzeuger_verwenden
|
|
||||||
(
|
|
||||||
erzeuger : typ_erzeuger,
|
|
||||||
figur : typ_figur
|
|
||||||
)
|
|
||||||
: void
|
|
||||||
{
|
|
||||||
figur_bewegen(figur, erzeuger.richtung);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function erzeuger_exportieren
|
|
||||||
(
|
|
||||||
erzeuger : typ_erzeuger
|
|
||||||
)
|
|
||||||
: any
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"richtung": richtung_exportieren(erzeuger.richtung),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function erzeuger_importieren
|
|
||||||
(
|
|
||||||
roh : any
|
|
||||||
)
|
|
||||||
: typ_erzeuger
|
|
||||||
{
|
|
||||||
return (
|
|
||||||
erzeuger_erstellen
|
|
||||||
(
|
|
||||||
richtung_importieren(roh["richtung"])
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
let wrap = (angaben => ({"art": "erzeuger", "angaben": angaben}));
|
|
||||||
let unwrap = (aktor => aktor.angaben);
|
|
||||||
implementierung_aktor["erzeuger"] =
|
|
||||||
{
|
|
||||||
"beispiel": () => wrap(erzeuger_beispiel()),
|
|
||||||
"drehen": (aktor, inkrement) => erzeuger_drehen(unwrap(aktor), inkrement),
|
|
||||||
"verwenden": (aktor, figur) => erzeuger_verwenden(unwrap(aktor), figur),
|
|
||||||
"exportieren": (aktor) => ({"art": "erzeuger", "angaben": erzeuger_exportieren(aktor.angaben)}),
|
|
||||||
"importieren": (roh) => wrap(erzeuger_importieren(roh)),
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,211 +16,224 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
export module mod_aufbau
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export type typ_leser =
|
|
||||||
{
|
{
|
||||||
"richtung": typ_richtung,
|
|
||||||
"symbol_links": typ_symbol,
|
export module mod_aktor_leser
|
||||||
"symbol_rechts": typ_symbol,
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function leser_erstellen
|
|
||||||
(
|
|
||||||
richtung : typ_richtung,
|
|
||||||
symbol_links : typ_symbol,
|
|
||||||
symbol_rechts : typ_symbol
|
|
||||||
)
|
|
||||||
: typ_leser
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"richtung": richtung,
|
|
||||||
"symbol_links": symbol_links,
|
|
||||||
"symbol_rechts": symbol_rechts,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function leser_erstellen_aktor
|
|
||||||
(
|
|
||||||
richtung : typ_richtung,
|
|
||||||
symbol_links : typ_symbol,
|
|
||||||
symbol_rechts : typ_symbol
|
|
||||||
)
|
|
||||||
: typ_aktor
|
|
||||||
{
|
|
||||||
return {"art": "leser", "angaben": leser_erstellen(richtung, symbol_links, symbol_rechts)};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function leser_beispiel
|
|
||||||
(
|
|
||||||
)
|
|
||||||
: typ_leser
|
|
||||||
{
|
|
||||||
return leser_erstellen(0, 0, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function leser_richtung_lesen
|
|
||||||
(
|
|
||||||
leser : typ_leser
|
|
||||||
)
|
|
||||||
: typ_richtung
|
|
||||||
{
|
|
||||||
return leser.richtung;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function leser_symbol_links_lesen
|
|
||||||
(
|
|
||||||
leser : typ_leser
|
|
||||||
)
|
|
||||||
: typ_symbol
|
|
||||||
{
|
|
||||||
return leser.symbol_links;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function leser_symbol_rechts_lesen
|
|
||||||
(
|
|
||||||
leser : typ_leser
|
|
||||||
)
|
|
||||||
: typ_symbol
|
|
||||||
{
|
|
||||||
return leser.symbol_rechts;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function leser_drehen
|
|
||||||
(
|
|
||||||
leser : typ_leser,
|
|
||||||
inkrement : int = +1
|
|
||||||
)
|
|
||||||
: void
|
|
||||||
{
|
|
||||||
leser.richtung = richtung_addieren(leser.richtung, inkrement);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function leser_verwenden
|
|
||||||
(
|
|
||||||
leser : typ_leser,
|
|
||||||
figur : typ_figur
|
|
||||||
)
|
|
||||||
: void
|
|
||||||
{
|
|
||||||
let symbol_ : schnittstelle_fehlermonade<typ_symbol> = figur_lesen(figur);
|
|
||||||
let summand : typ_richtung;
|
|
||||||
if (symbol_.ist_schlicht())
|
|
||||||
{
|
{
|
||||||
let symbol : typ_symbol = symbol_.lesen();
|
|
||||||
if (symbol === leser.symbol_links)
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
let art : string = "leser";
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export type typ_leser =
|
||||||
{
|
{
|
||||||
figur_schieben(figur);
|
"richtung": mod_richtung.typ_richtung,
|
||||||
summand = +2;
|
"symbol_links": mod_symbol.typ_symbol,
|
||||||
|
"symbol_rechts": mod_symbol.typ_symbol,
|
||||||
}
|
}
|
||||||
else if (symbol === leser.symbol_rechts)
|
;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function erstellen
|
||||||
|
(
|
||||||
|
richtung : mod_richtung.typ_richtung,
|
||||||
|
symbol_links : mod_symbol.typ_symbol,
|
||||||
|
symbol_rechts : mod_symbol.typ_symbol
|
||||||
|
)
|
||||||
|
: typ_leser
|
||||||
{
|
{
|
||||||
figur_schieben(figur);
|
return {
|
||||||
summand = -2;
|
"richtung": richtung,
|
||||||
|
"symbol_links": symbol_links,
|
||||||
|
"symbol_rechts": symbol_rechts,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function erstellen_aktor
|
||||||
|
(
|
||||||
|
richtung : mod_richtung.typ_richtung,
|
||||||
|
symbol_links : mod_symbol.typ_symbol,
|
||||||
|
symbol_rechts : mod_symbol.typ_symbol
|
||||||
|
)
|
||||||
|
: mod_aktor.typ_aktor
|
||||||
{
|
{
|
||||||
summand = 0;
|
return einpacken(art, erstellen(richtung, symbol_links, symbol_rechts));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function beispiel
|
||||||
|
(
|
||||||
|
)
|
||||||
|
: typ_leser
|
||||||
|
{
|
||||||
|
return erstellen(0, 0, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function richtung_lesen
|
||||||
|
(
|
||||||
|
leser : typ_leser
|
||||||
|
)
|
||||||
|
: mod_richtung.typ_richtung
|
||||||
|
{
|
||||||
|
return leser.richtung;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function symbol_links_lesen
|
||||||
|
(
|
||||||
|
leser : typ_leser
|
||||||
|
)
|
||||||
|
: mod_symbol.typ_symbol
|
||||||
|
{
|
||||||
|
return leser.symbol_links;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function symbol_rechts_lesen
|
||||||
|
(
|
||||||
|
leser : typ_leser
|
||||||
|
)
|
||||||
|
: mod_symbol.typ_symbol
|
||||||
|
{
|
||||||
|
return leser.symbol_rechts;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function drehen
|
||||||
|
(
|
||||||
|
leser : typ_leser,
|
||||||
|
inkrement : int = +1
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
leser.richtung = mod_richtung.addieren(leser.richtung, inkrement);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function verwenden
|
||||||
|
(
|
||||||
|
leser : typ_leser,
|
||||||
|
figur : mod_figur.typ_figur
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
let symbol_ : schnittstelle_fehlermonade<mod_symbol.typ_symbol> = mod_figur.lesen(figur);
|
||||||
|
let summand : mod_richtung.typ_richtung;
|
||||||
|
if (symbol_.ist_schlicht())
|
||||||
|
{
|
||||||
|
let symbol : mod_symbol.typ_symbol = symbol_.lesen();
|
||||||
|
if (symbol === leser.symbol_links)
|
||||||
|
{
|
||||||
|
mod_figur.schieben(figur);
|
||||||
|
summand = +2;
|
||||||
|
}
|
||||||
|
else if (symbol === leser.symbol_rechts)
|
||||||
|
{
|
||||||
|
mod_figur.schieben(figur);
|
||||||
|
summand = -2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
summand = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
summand = 0;
|
||||||
|
}
|
||||||
|
let richtung : mod_richtung.typ_richtung = mod_richtung.addieren(leser.richtung, summand);
|
||||||
|
mod_figur.bewegen(figur, richtung);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function exportieren
|
||||||
|
(
|
||||||
|
leser : typ_leser
|
||||||
|
)
|
||||||
|
: any
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"richtung": mod_richtung.exportieren(leser.richtung),
|
||||||
|
"symbol_links": mod_symbol.exportieren(leser.symbol_links),
|
||||||
|
"symbol_rechts": mod_symbol.exportieren(leser.symbol_rechts),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function importieren
|
||||||
|
(
|
||||||
|
roh : any
|
||||||
|
)
|
||||||
|
: typ_leser
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
erstellen
|
||||||
|
(
|
||||||
|
mod_richtung.importieren(roh["richtung"]),
|
||||||
|
mod_symbol.importieren(roh["symbol_links"]),
|
||||||
|
mod_symbol.importieren(roh["symbol_rechts"])
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
mod_aktor.implementierung_aktor[art] =
|
||||||
|
{
|
||||||
|
"beispiel": () => einpacken(art, beispiel()),
|
||||||
|
"drehen": (aktor, inkrement) => drehen(auspacken(aktor), inkrement),
|
||||||
|
"verwenden": (aktor, figur) => verwenden(auspacken(aktor), figur),
|
||||||
|
"exportieren": (aktor) => ({"art": "leser", "angaben": exportieren(aktor.angaben)}),
|
||||||
|
"importieren": (roh) => einpacken(art, importieren(roh)),
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
summand = 0;
|
|
||||||
}
|
|
||||||
let richtung : typ_richtung = richtung_addieren(leser.richtung, summand);
|
|
||||||
figur_bewegen(figur, richtung);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function leser_exportieren
|
|
||||||
(
|
|
||||||
leser : typ_leser
|
|
||||||
)
|
|
||||||
: any
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"richtung": richtung_exportieren(leser.richtung),
|
|
||||||
"symbol_links": symbol_exportieren(leser.symbol_links),
|
|
||||||
"symbol_rechts": symbol_exportieren(leser.symbol_rechts),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function leser_importieren
|
|
||||||
(
|
|
||||||
roh : any
|
|
||||||
)
|
|
||||||
: typ_leser
|
|
||||||
{
|
|
||||||
return (
|
|
||||||
leser_erstellen
|
|
||||||
(
|
|
||||||
richtung_importieren(roh["richtung"]),
|
|
||||||
symbol_importieren(roh["symbol_links"]),
|
|
||||||
symbol_importieren(roh["symbol_rechts"])
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
let wrap = (angaben => ({"art": "leser", "angaben": angaben}));
|
|
||||||
let unwrap = (aktor => aktor.angaben);
|
|
||||||
implementierung_aktor["leser"] =
|
|
||||||
{
|
|
||||||
"beispiel": () => wrap(leser_beispiel()),
|
|
||||||
"drehen": (aktor, inkrement) => leser_drehen(unwrap(aktor), inkrement),
|
|
||||||
"verwenden": (aktor, figur) => leser_verwenden(unwrap(aktor), figur),
|
|
||||||
"exportieren": (aktor) => ({"art": "leser", "angaben": leser_exportieren(aktor.angaben)}),
|
|
||||||
"importieren": (roh) => wrap(leser_importieren(roh)),
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,168 +16,181 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
export module mod_aufbau
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export type typ_schreiber =
|
|
||||||
{
|
{
|
||||||
richtung : typ_richtung;
|
|
||||||
symbol : typ_symbol;
|
export module mod_aktor_schreiber
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
let art : string = "schreiber";
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export type typ_schreiber =
|
||||||
|
{
|
||||||
|
richtung : mod_richtung.typ_richtung;
|
||||||
|
symbol : mod_symbol.typ_symbol;
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function erstellen
|
||||||
|
(
|
||||||
|
richtung : mod_richtung.typ_richtung,
|
||||||
|
symbol : mod_symbol.typ_symbol
|
||||||
|
)
|
||||||
|
: typ_schreiber
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"richtung": richtung,
|
||||||
|
"symbol": symbol,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function erstellen_aktor
|
||||||
|
(
|
||||||
|
richtung : mod_richtung.typ_richtung,
|
||||||
|
symbol : mod_symbol.typ_symbol
|
||||||
|
)
|
||||||
|
: mod_aktor.typ_aktor
|
||||||
|
{
|
||||||
|
return einpacken(art, erstellen(richtung, symbol));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function beispiel
|
||||||
|
(
|
||||||
|
)
|
||||||
|
: typ_schreiber
|
||||||
|
{
|
||||||
|
return erstellen(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function richtung_lesen
|
||||||
|
(
|
||||||
|
schreiber : typ_schreiber
|
||||||
|
)
|
||||||
|
: mod_richtung.typ_richtung
|
||||||
|
{
|
||||||
|
return schreiber.richtung;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function symbol_lesen
|
||||||
|
(
|
||||||
|
schreiber : typ_schreiber
|
||||||
|
)
|
||||||
|
: mod_symbol.typ_symbol
|
||||||
|
{
|
||||||
|
return schreiber.symbol;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function drehen
|
||||||
|
(
|
||||||
|
schreiber : typ_schreiber,
|
||||||
|
inkrement : int = +1
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
schreiber.richtung = mod_richtung.addieren(schreiber.richtung, inkrement);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function verwenden
|
||||||
|
(
|
||||||
|
schreiber : typ_schreiber,
|
||||||
|
figur : mod_figur.typ_figur
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
mod_figur.schreiben(figur, schreiber.symbol);
|
||||||
|
mod_figur.bewegen(figur, schreiber.richtung);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function exportieren
|
||||||
|
(
|
||||||
|
schreiber : typ_schreiber
|
||||||
|
)
|
||||||
|
: any
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"richtung": mod_richtung.exportieren(schreiber.richtung),
|
||||||
|
"symbol": mod_symbol.exportieren(schreiber.symbol),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function importieren
|
||||||
|
(
|
||||||
|
roh : any
|
||||||
|
)
|
||||||
|
: typ_schreiber
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
erstellen
|
||||||
|
(
|
||||||
|
mod_richtung.importieren(roh["richtung"]),
|
||||||
|
mod_symbol.importieren(roh["symbol"])
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
mod_aktor.implementierung_aktor["schreiber"] =
|
||||||
|
{
|
||||||
|
"beispiel": () => einpacken(art, beispiel()),
|
||||||
|
"drehen": (aktor, inkrement) => drehen(auspacken(aktor), inkrement),
|
||||||
|
"verwenden": (aktor, figur) => verwenden(auspacken(aktor), figur),
|
||||||
|
"exportieren": (aktor) => ({"art": "schreiber", "angaben": exportieren(aktor.angaben)}),
|
||||||
|
"importieren": (roh) => einpacken(art, importieren(roh)),
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function schreiber_erstellen
|
|
||||||
(
|
|
||||||
richtung : typ_richtung,
|
|
||||||
symbol : typ_symbol
|
|
||||||
)
|
|
||||||
: typ_schreiber
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"richtung": richtung,
|
|
||||||
"symbol": symbol,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function schreiber_erstellen_aktor
|
|
||||||
(
|
|
||||||
richtung : typ_richtung,
|
|
||||||
symbol : typ_symbol
|
|
||||||
)
|
|
||||||
: typ_aktor
|
|
||||||
{
|
|
||||||
return {"art": "schreiber", "angaben": schreiber_erstellen(richtung, symbol)};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function schreiber_beispiel
|
|
||||||
(
|
|
||||||
)
|
|
||||||
: typ_schreiber
|
|
||||||
{
|
|
||||||
return schreiber_erstellen(0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function schreiber_richtung_lesen
|
|
||||||
(
|
|
||||||
schreiber : typ_schreiber
|
|
||||||
)
|
|
||||||
: typ_richtung
|
|
||||||
{
|
|
||||||
return schreiber.richtung;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function schreiber_symbol_lesen
|
|
||||||
(
|
|
||||||
schreiber : typ_schreiber
|
|
||||||
)
|
|
||||||
: typ_symbol
|
|
||||||
{
|
|
||||||
return schreiber.symbol;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function schreiber_drehen
|
|
||||||
(
|
|
||||||
schreiber : typ_schreiber,
|
|
||||||
inkrement : int = +1
|
|
||||||
)
|
|
||||||
: void
|
|
||||||
{
|
|
||||||
schreiber.richtung = richtung_addieren(schreiber.richtung, inkrement);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function schreiber_verwenden
|
|
||||||
(
|
|
||||||
schreiber : typ_schreiber,
|
|
||||||
figur : typ_figur
|
|
||||||
)
|
|
||||||
: void
|
|
||||||
{
|
|
||||||
figur_schreiben(figur, schreiber.symbol);
|
|
||||||
figur_bewegen(figur, schreiber.richtung);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function schreiber_exportieren
|
|
||||||
(
|
|
||||||
schreiber : typ_schreiber
|
|
||||||
)
|
|
||||||
: any
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"richtung": richtung_exportieren(schreiber.richtung),
|
|
||||||
"symbol": symbol_exportieren(schreiber.symbol),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function schreiber_importieren
|
|
||||||
(
|
|
||||||
roh : any
|
|
||||||
)
|
|
||||||
: typ_schreiber
|
|
||||||
{
|
|
||||||
return (
|
|
||||||
schreiber_erstellen
|
|
||||||
(
|
|
||||||
richtung_importieren(roh["richtung"]),
|
|
||||||
symbol_importieren(roh["symbol"])
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
let wrap = (angaben => ({"art": "schreiber", "angaben": angaben}));
|
|
||||||
let unwrap = (aktor => aktor.angaben);
|
|
||||||
implementierung_aktor["schreiber"] =
|
|
||||||
{
|
|
||||||
"beispiel": () => wrap(schreiber_beispiel()),
|
|
||||||
"drehen": (aktor, inkrement) => schreiber_drehen(unwrap(aktor), inkrement),
|
|
||||||
"verwenden": (aktor, figur) => schreiber_verwenden(unwrap(aktor), figur),
|
|
||||||
"exportieren": (aktor) => ({"art": "schreiber", "angaben": schreiber_exportieren(aktor.angaben)}),
|
|
||||||
"importieren": (roh) => wrap(schreiber_importieren(roh)),
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,128 +16,141 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
export module mod_aufbau
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export type typ_verwerfer =
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
export module mod_aktor_verwerfer
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
let art : string = "verwerfer";
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export type typ_verwerfer =
|
||||||
|
{
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function erstellen
|
||||||
|
(
|
||||||
|
)
|
||||||
|
: typ_verwerfer
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function erstellen_aktor
|
||||||
|
(
|
||||||
|
)
|
||||||
|
: mod_aktor.typ_aktor
|
||||||
|
{
|
||||||
|
return einpacken(art, erstellen());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function beispiel
|
||||||
|
(
|
||||||
|
)
|
||||||
|
: typ_verwerfer
|
||||||
|
{
|
||||||
|
return erstellen();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function drehen
|
||||||
|
(
|
||||||
|
verwerfer : typ_verwerfer,
|
||||||
|
inkrement ?: int
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function verwenden
|
||||||
|
(
|
||||||
|
verwerfer : typ_verwerfer,
|
||||||
|
figur : mod_figur.typ_figur
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
mod_figur.verwerfen(figur);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function exportieren
|
||||||
|
(
|
||||||
|
verwerfer : typ_verwerfer
|
||||||
|
)
|
||||||
|
: any
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function importieren
|
||||||
|
(
|
||||||
|
roh : any
|
||||||
|
)
|
||||||
|
: typ_verwerfer
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
erstellen
|
||||||
|
(
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
mod_aktor.implementierung_aktor[art] =
|
||||||
|
{
|
||||||
|
"beispiel": () => einpacken(art, beispiel()),
|
||||||
|
"drehen": (aktor, inkrement) => drehen(auspacken(aktor), inkrement),
|
||||||
|
"verwenden": (aktor, figur) => verwenden(auspacken(aktor), figur),
|
||||||
|
"exportieren": (aktor) => ({"art": art, "angaben": exportieren(aktor.angaben)}),
|
||||||
|
"importieren": (roh) => einpacken(art, importieren(roh)),
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function verwerfer_erstellen
|
|
||||||
(
|
|
||||||
)
|
|
||||||
: typ_verwerfer
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function verwerfer_erstellen_aktor
|
|
||||||
(
|
|
||||||
)
|
|
||||||
: typ_aktor
|
|
||||||
{
|
|
||||||
return {"art": "verwerfer", "angaben": verwerfer_erstellen()};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function verwerfer_beispiel
|
|
||||||
(
|
|
||||||
)
|
|
||||||
: typ_verwerfer
|
|
||||||
{
|
|
||||||
return verwerfer_erstellen();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function verwerfer_drehen
|
|
||||||
(
|
|
||||||
verwerfer : typ_verwerfer,
|
|
||||||
inkrement ?: int
|
|
||||||
)
|
|
||||||
: void
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function verwerfer_verwenden
|
|
||||||
(
|
|
||||||
verwerfer : typ_verwerfer,
|
|
||||||
figur : typ_figur
|
|
||||||
)
|
|
||||||
: void
|
|
||||||
{
|
|
||||||
figur_verwerfen(figur);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function verwerfer_exportieren
|
|
||||||
(
|
|
||||||
verwerfer : typ_verwerfer
|
|
||||||
)
|
|
||||||
: any
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function verwerfer_importieren
|
|
||||||
(
|
|
||||||
roh : any
|
|
||||||
)
|
|
||||||
: typ_verwerfer
|
|
||||||
{
|
|
||||||
return (
|
|
||||||
verwerfer_erstellen
|
|
||||||
(
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
let wrap = (angaben => ({"art": "verwerfer", "angaben": angaben}));
|
|
||||||
let unwrap = (aktor => aktor.angaben);
|
|
||||||
implementierung_aktor["verwerfer"] =
|
|
||||||
{
|
|
||||||
"beispiel": () => wrap(verwerfer_beispiel()),
|
|
||||||
"drehen": (aktor, inkrement) => verwerfer_drehen(unwrap(aktor), inkrement),
|
|
||||||
"verwenden": (aktor, figur) => verwerfer_verwenden(unwrap(aktor), figur),
|
|
||||||
"exportieren": (aktor) => ({"art": "verwerfer", "angaben": verwerfer_exportieren(aktor.angaben)}),
|
|
||||||
"importieren": (roh) => wrap(verwerfer_importieren(roh)),
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ module mod_vtm_aufbau
|
||||||
*/
|
*/
|
||||||
export type typ_akzeptortest =
|
export type typ_akzeptortest =
|
||||||
{
|
{
|
||||||
eingabe : Array<typ_symbol>;
|
eingabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>;
|
||||||
annehmen : boolean;
|
annehmen : boolean;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
@ -35,7 +35,7 @@ module mod_vtm_aufbau
|
||||||
*/
|
*/
|
||||||
export function akzeptortest_erstellen
|
export function akzeptortest_erstellen
|
||||||
(
|
(
|
||||||
eingabe : Array<typ_symbol>,
|
eingabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>,
|
||||||
annehmen : boolean
|
annehmen : boolean
|
||||||
)
|
)
|
||||||
: typ_akzeptortest
|
: typ_akzeptortest
|
||||||
|
|
@ -54,7 +54,7 @@ module mod_vtm_aufbau
|
||||||
(
|
(
|
||||||
akzeptortest : typ_akzeptortest
|
akzeptortest : typ_akzeptortest
|
||||||
)
|
)
|
||||||
: Array<typ_symbol>
|
: Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>
|
||||||
{
|
{
|
||||||
return akzeptortest.eingabe;
|
return akzeptortest.eingabe;
|
||||||
}
|
}
|
||||||
|
|
@ -67,7 +67,7 @@ module mod_vtm_aufbau
|
||||||
(
|
(
|
||||||
akzeptortest : typ_akzeptortest,
|
akzeptortest : typ_akzeptortest,
|
||||||
angenommen : boolean,
|
angenommen : boolean,
|
||||||
ausgabe : Array<typ_symbol>
|
ausgabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>
|
||||||
)
|
)
|
||||||
: boolean
|
: boolean
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -32,10 +32,10 @@ module mod_vtm_aufbau
|
||||||
(
|
(
|
||||||
test : typ_test
|
test : typ_test
|
||||||
)
|
)
|
||||||
: Array<typ_symbol>
|
: Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
fallunterscheidung<Array<typ_symbol>>
|
fallunterscheidung<Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>>
|
||||||
(
|
(
|
||||||
test,
|
test,
|
||||||
{
|
{
|
||||||
|
|
@ -54,7 +54,7 @@ module mod_vtm_aufbau
|
||||||
(
|
(
|
||||||
test : typ_test,
|
test : typ_test,
|
||||||
angenommen : boolean,
|
angenommen : boolean,
|
||||||
ausgabe : Array<typ_symbol>
|
ausgabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>
|
||||||
)
|
)
|
||||||
: boolean
|
: boolean
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,8 @@ module mod_vtm_aufbau
|
||||||
*/
|
*/
|
||||||
export type typ_transduktortest =
|
export type typ_transduktortest =
|
||||||
{
|
{
|
||||||
eingabe : Array<typ_symbol>;
|
eingabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>;
|
||||||
ausgabe : Array<typ_symbol>;
|
ausgabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
@ -35,8 +35,8 @@ module mod_vtm_aufbau
|
||||||
*/
|
*/
|
||||||
export function transduktortest_erstellen
|
export function transduktortest_erstellen
|
||||||
(
|
(
|
||||||
eingabe : Array<typ_symbol>,
|
eingabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>,
|
||||||
ausgabe : Array<typ_symbol>
|
ausgabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>
|
||||||
)
|
)
|
||||||
: typ_transduktortest
|
: typ_transduktortest
|
||||||
{
|
{
|
||||||
|
|
@ -54,7 +54,7 @@ module mod_vtm_aufbau
|
||||||
(
|
(
|
||||||
transduktortest : typ_transduktortest
|
transduktortest : typ_transduktortest
|
||||||
)
|
)
|
||||||
: Array<typ_symbol>
|
: Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>
|
||||||
{
|
{
|
||||||
return transduktortest.eingabe;
|
return transduktortest.eingabe;
|
||||||
}
|
}
|
||||||
|
|
@ -67,7 +67,7 @@ module mod_vtm_aufbau
|
||||||
(
|
(
|
||||||
transduktortest : typ_transduktortest,
|
transduktortest : typ_transduktortest,
|
||||||
angenommen : boolean,
|
angenommen : boolean,
|
||||||
ausgabe : Array<typ_symbol>
|
ausgabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>
|
||||||
)
|
)
|
||||||
: boolean
|
: boolean
|
||||||
{
|
{
|
||||||
|
|
@ -80,7 +80,7 @@ module mod_vtm_aufbau
|
||||||
let gleich : boolean = true;
|
let gleich : boolean = true;
|
||||||
for (let index : int = 0; index < transduktortest.ausgabe.length; index += 1)
|
for (let index : int = 0; index < transduktortest.ausgabe.length; index += 1)
|
||||||
{
|
{
|
||||||
if (! symbol_vergleichen(transduktortest.ausgabe[index], ausgabe[index]))
|
if (! mod_vtm.mod_aufbau.mod_symbol.vergleichen(transduktortest.ausgabe[index], ausgabe[index]))
|
||||||
{
|
{
|
||||||
gleich = false;
|
gleich = false;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -3,186 +3,196 @@
|
||||||
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General export function figur_License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General export function figur_License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General export function figur_License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
export module mod_aufbau
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export type typ_figur =
|
|
||||||
{
|
{
|
||||||
zustand : typ_zustand;
|
|
||||||
band : Array<typ_symbol>;
|
export module mod_figur
|
||||||
stelle : typ_stelle;
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function figur_erstellen
|
|
||||||
(
|
|
||||||
band : Array<typ_symbol> = [],
|
|
||||||
stelle : typ_stelle = stelle_null()
|
|
||||||
)
|
|
||||||
: typ_figur
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"zustand": zustand_laufend,
|
|
||||||
"band": band,
|
|
||||||
"stelle": stelle,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function figur_zustand_lesen
|
|
||||||
(
|
|
||||||
figur : typ_figur
|
|
||||||
)
|
|
||||||
: typ_zustand
|
|
||||||
{
|
|
||||||
return figur.zustand;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function figur_band_lesen
|
|
||||||
(
|
|
||||||
figur : typ_figur
|
|
||||||
)
|
|
||||||
: Array<typ_symbol>
|
|
||||||
{
|
|
||||||
return figur.band;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function figur_stelle_lesen
|
|
||||||
(
|
|
||||||
figur : typ_figur
|
|
||||||
)
|
|
||||||
: typ_stelle
|
|
||||||
{
|
|
||||||
return figur.stelle;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function figur_bewegen
|
|
||||||
(
|
|
||||||
figur : typ_figur,
|
|
||||||
richtung : typ_richtung
|
|
||||||
)
|
|
||||||
: void
|
|
||||||
{
|
|
||||||
let summand : typ_stelle = stelle_von_richtung(richtung);
|
|
||||||
figur.stelle = stelle_addieren(figur.stelle, summand);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function figur_schreiben
|
|
||||||
(
|
|
||||||
figur : typ_figur,
|
|
||||||
symbol : typ_symbol
|
|
||||||
)
|
|
||||||
: void
|
|
||||||
{
|
|
||||||
figur.band.push(symbol);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function figur_lesen
|
|
||||||
(
|
|
||||||
figur : typ_figur
|
|
||||||
)
|
|
||||||
: schnittstelle_fehlermonade<typ_symbol>
|
|
||||||
{
|
|
||||||
if (figur.band.length <= 0)
|
|
||||||
{
|
{
|
||||||
return (new klasse_nichts<typ_symbol>());
|
|
||||||
}
|
/**
|
||||||
else
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
{
|
*/
|
||||||
return (new klasse_schlicht<typ_symbol>(figur.band[0]));
|
export type typ_figur =
|
||||||
|
{
|
||||||
|
zustand : mod_zustand.typ_zustand;
|
||||||
|
band : Array<mod_symbol.typ_symbol>;
|
||||||
|
stelle : mod_stelle.typ_stelle;
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function erstellen
|
||||||
|
(
|
||||||
|
band : Array<mod_symbol.typ_symbol> = [],
|
||||||
|
stelle : mod_stelle.typ_stelle = mod_stelle.null_()
|
||||||
|
)
|
||||||
|
: typ_figur
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"zustand": mod_zustand.laufend,
|
||||||
|
"band": band,
|
||||||
|
"stelle": stelle,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function zustand_lesen
|
||||||
|
(
|
||||||
|
figur : typ_figur
|
||||||
|
)
|
||||||
|
: mod_zustand.typ_zustand
|
||||||
|
{
|
||||||
|
return figur.zustand;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function band_lesen
|
||||||
|
(
|
||||||
|
figur : typ_figur
|
||||||
|
)
|
||||||
|
: Array<mod_symbol.typ_symbol>
|
||||||
|
{
|
||||||
|
return figur.band;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function stelle_lesen
|
||||||
|
(
|
||||||
|
figur : typ_figur
|
||||||
|
)
|
||||||
|
: mod_stelle.typ_stelle
|
||||||
|
{
|
||||||
|
return figur.stelle;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function bewegen
|
||||||
|
(
|
||||||
|
figur : typ_figur,
|
||||||
|
richtung : mod_richtung.typ_richtung
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
let summand : mod_stelle.typ_stelle = mod_stelle.von_richtung(richtung);
|
||||||
|
figur.stelle = mod_stelle.addieren(figur.stelle, summand);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function schreiben
|
||||||
|
(
|
||||||
|
figur : typ_figur,
|
||||||
|
symbol : mod_symbol.typ_symbol
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
figur.band.push(symbol);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function lesen
|
||||||
|
(
|
||||||
|
figur : typ_figur
|
||||||
|
)
|
||||||
|
: schnittstelle_fehlermonade<mod_symbol.typ_symbol>
|
||||||
|
{
|
||||||
|
if (figur.band.length <= 0)
|
||||||
|
{
|
||||||
|
return (new klasse_nichts<mod_symbol.typ_symbol>());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return (new klasse_schlicht<mod_symbol.typ_symbol>(figur.band[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function schieben
|
||||||
|
(
|
||||||
|
figur : typ_figur
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
if (figur.band.length <= 0)
|
||||||
|
{
|
||||||
|
let meldung : string = "Band ist leer";
|
||||||
|
throw (new Error(meldung));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
figur.band.shift();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function annehmen
|
||||||
|
(
|
||||||
|
figur : typ_figur
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
figur.zustand = mod_zustand.angenommen;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function verwerfen
|
||||||
|
(
|
||||||
|
figur : typ_figur
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
figur.zustand = mod_zustand.abgelehnt;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function figur_schieben
|
|
||||||
(
|
|
||||||
figur : typ_figur
|
|
||||||
)
|
|
||||||
: void
|
|
||||||
{
|
|
||||||
if (figur.band.length <= 0)
|
|
||||||
{
|
|
||||||
let meldung : string = "Band ist leer";
|
|
||||||
throw (new Error(meldung));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
figur.band.shift();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function figur_annehmen
|
|
||||||
(
|
|
||||||
figur : typ_figur
|
|
||||||
)
|
|
||||||
: void
|
|
||||||
{
|
|
||||||
figur.zustand = zustand_angenommen;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function figur_verwerfen
|
|
||||||
(
|
|
||||||
figur : typ_figur
|
|
||||||
)
|
|
||||||
: void
|
|
||||||
{
|
|
||||||
figur.zustand = zustand_abgelehnt;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,22 +16,32 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
export module mod_aufbau
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
{
|
||||||
*/
|
|
||||||
export type typ_modus = int;
|
export module mod_modus
|
||||||
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export const modus_initial = 0;
|
export type typ_modus = int;
|
||||||
export const modus_ungewiss = 1;
|
|
||||||
export const modus_fehlerhaft = 2;
|
|
||||||
export const modus_korrekt = 3;
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export const initial = 0;
|
||||||
|
export const ungewiss = 1;
|
||||||
|
export const fehlerhaft = 2;
|
||||||
|
export const korrekt = 3;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,358 +3,368 @@
|
||||||
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General export function partie_License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General export function partie_License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General export function partie_License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
export module mod_aufbau
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export type typ_partie =
|
|
||||||
{
|
{
|
||||||
welt : typ_welt;
|
|
||||||
figur : schnittstelle_fehlermonade<typ_figur>;
|
export module mod_partie
|
||||||
aufgabe : typ_aufgabe;
|
|
||||||
testindex : schnittstelle_fehlermonade<int>;
|
|
||||||
modus : typ_modus;
|
|
||||||
lauscher : {[ereignis : string] : Array<(angaben ?: any)=>void>};
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function partie_erstellen
|
|
||||||
(
|
|
||||||
aufgabe : typ_aufgabe
|
|
||||||
)
|
|
||||||
: typ_partie
|
|
||||||
{
|
|
||||||
let partie : typ_partie = {
|
|
||||||
"welt": undefined,
|
|
||||||
"figur": undefined,
|
|
||||||
"aufgabe": aufgabe,
|
|
||||||
"testindex": undefined,
|
|
||||||
"modus": undefined,
|
|
||||||
"lauscher": undefined,
|
|
||||||
};
|
|
||||||
partie.lauscher = {
|
|
||||||
"aenderung_aufgabe": [],
|
|
||||||
"aenderung_welt": [],
|
|
||||||
"aenderung_figur": [],
|
|
||||||
"aenderung_modus": [],
|
|
||||||
};
|
|
||||||
partie_welt_leeren(partie, false);
|
|
||||||
partie_zuruecksetzen(partie, false);
|
|
||||||
return partie;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function partie_lauschen(partie : typ_partie, ereignis : string, prozedur : (angaben ?: any)=>void) : void
|
|
||||||
{
|
|
||||||
if (ereignis in partie.lauscher)
|
|
||||||
{
|
{
|
||||||
partie.lauscher[ereignis].push(prozedur);
|
|
||||||
}
|
/**
|
||||||
else
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
{
|
*/
|
||||||
let meldung : string = "kein Ereignis mit diesem Name";
|
export type typ_partie =
|
||||||
throw (new Error(meldung));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function partie_benachrichtigen(partie : typ_partie, ereignis : string, angaben : any = {}) : void
|
|
||||||
{
|
|
||||||
if (ereignis in partie.lauscher)
|
|
||||||
{
|
|
||||||
partie.lauscher[ereignis].forEach
|
|
||||||
(
|
|
||||||
prozedur =>
|
|
||||||
{
|
|
||||||
prozedur(angaben);
|
|
||||||
}
|
|
||||||
)
|
|
||||||
;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
let meldung : string = "kein Ereignis mit diesem Name";
|
|
||||||
throw (new Error(meldung));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function partie_zuruecksetzen(partie : typ_partie, bescheid_geben : boolean = true) : void
|
|
||||||
{
|
|
||||||
partie.figur = (new klasse_nichts<typ_figur>());
|
|
||||||
partie.testindex = (new klasse_nichts<int>());
|
|
||||||
partie.modus = modus_initial;
|
|
||||||
if (bescheid_geben)
|
|
||||||
{
|
|
||||||
partie_benachrichtigen(partie, "aenderung_figur", {});
|
|
||||||
partie_benachrichtigen(partie, "aenderung_modus", {});
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// nichts tun
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function partie_aufgabe_lesen(partie : typ_partie) : typ_aufgabe
|
|
||||||
{
|
|
||||||
return partie.aufgabe;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function partie_aufgabe_setzen(partie : typ_partie, aufgabe : typ_aufgabe) : void
|
|
||||||
{
|
|
||||||
partie.aufgabe = aufgabe;
|
|
||||||
// partie.welt_leeren();
|
|
||||||
partie_benachrichtigen(partie, "aenderung_aufgabe", {});
|
|
||||||
partie_zuruecksetzen(partie);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function partie_welt_lesen(partie : typ_partie) : typ_welt
|
|
||||||
{
|
|
||||||
return partie.welt;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function partie_welt_setzen(partie : typ_partie, welt : mod_vtm_aufbau.typ_welt, bescheid_geben : boolean = true) : void
|
|
||||||
{
|
|
||||||
partie.welt = welt;
|
|
||||||
if (bescheid_geben)
|
|
||||||
{
|
|
||||||
partie_benachrichtigen(partie, "aenderung_welt", {});
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// nichts tun
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function partie_welt_leeren(partie : typ_partie, bescheid_geben : boolean = true) : void
|
|
||||||
{
|
|
||||||
partie.welt = welt_blanko();
|
|
||||||
if (bescheid_geben)
|
|
||||||
{
|
|
||||||
partie_benachrichtigen(partie, "aenderung_welt", {});
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// nichts tun
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function partie_figur_lesen(partie : typ_partie) : schnittstelle_fehlermonade<typ_figur>
|
|
||||||
{
|
|
||||||
return partie.figur;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function partie_modus_lesen(partie : typ_partie) : typ_modus
|
|
||||||
{
|
|
||||||
return partie.modus;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function partie_welt_feld_wechseln(partie : typ_partie, stelle : typ_stelle, umgekehrt : boolean = false) : void
|
|
||||||
{
|
|
||||||
if (! (partie.modus === mod_vtm_aufbau.modus_initial))
|
|
||||||
{
|
|
||||||
let meldung : string = "gesperrt";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
welt_feld_wechseln(partie.welt, stelle, umgekehrt);
|
|
||||||
partie_benachrichtigen
|
|
||||||
(
|
|
||||||
partie,
|
|
||||||
"aenderung_welt",
|
|
||||||
{
|
|
||||||
"art": "feld_wechseln",
|
|
||||||
"angaben":
|
|
||||||
{
|
|
||||||
"stelle": stelle,
|
|
||||||
"umgekehrt": umgekehrt,
|
|
||||||
"feld": welt_feld_holen(partie.welt, stelle),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function partie_welt_feld_drehen(partie : typ_partie, stelle : typ_stelle, inkrement : int = +1) : void
|
|
||||||
{
|
|
||||||
if (! (partie.modus === mod_vtm_aufbau.modus_initial))
|
|
||||||
{
|
|
||||||
let meldung : string = "gesperrt";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
welt_feld_drehen(partie.welt, stelle, inkrement);
|
|
||||||
partie_benachrichtigen(partie, "aenderung_welt", {});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function partie_fortfahren(partie : typ_partie) : void
|
|
||||||
{
|
|
||||||
switch (partie.modus)
|
|
||||||
{
|
|
||||||
case modus_initial:
|
|
||||||
{
|
{
|
||||||
partie.modus = modus_ungewiss;
|
welt : mod_welt.typ_welt;
|
||||||
partie.testindex = (new klasse_schlicht<int>(0));
|
figur : schnittstelle_fehlermonade<mod_figur.typ_figur>;
|
||||||
partie_benachrichtigen(partie, "aenderung_modus", {});
|
aufgabe : mod_vtm_aufbau.typ_aufgabe;
|
||||||
break;
|
testindex : schnittstelle_fehlermonade<int>;
|
||||||
|
modus : mod_modus.typ_modus;
|
||||||
|
lauscher : {[ereignis : string] : Array<(angaben ?: any)=>void>};
|
||||||
}
|
}
|
||||||
case modus_ungewiss:
|
;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function erstellen
|
||||||
|
(
|
||||||
|
aufgabe : mod_vtm_aufbau.typ_aufgabe
|
||||||
|
)
|
||||||
|
: typ_partie
|
||||||
{
|
{
|
||||||
if (! partie.figur.ist_schlicht())
|
let partie : typ_partie = {
|
||||||
|
"welt": undefined,
|
||||||
|
"figur": undefined,
|
||||||
|
"aufgabe": aufgabe,
|
||||||
|
"testindex": undefined,
|
||||||
|
"modus": undefined,
|
||||||
|
"lauscher": undefined,
|
||||||
|
};
|
||||||
|
partie.lauscher = {
|
||||||
|
"aenderung_aufgabe": [],
|
||||||
|
"aenderung_welt": [],
|
||||||
|
"aenderung_figur": [],
|
||||||
|
"aenderung_modus": [],
|
||||||
|
};
|
||||||
|
welt_leeren(partie, false);
|
||||||
|
zuruecksetzen(partie, false);
|
||||||
|
return partie;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function lauschen(partie : typ_partie, ereignis : string, prozedur : (angaben ?: any)=>void) : void
|
||||||
|
{
|
||||||
|
if (ereignis in partie.lauscher)
|
||||||
{
|
{
|
||||||
let test : typ_test = aufgabe_tests(partie.aufgabe)[partie.testindex.lesen()];
|
partie.lauscher[ereignis].push(prozedur);
|
||||||
let band : Array<typ_symbol> = mod_vtm_helfer.liste_kopieren<typ_symbol>(test_eingabe(test));
|
|
||||||
let stelle : typ_stelle = welt_erzeuger_finden(partie.welt);
|
|
||||||
partie.figur = (
|
|
||||||
new klasse_schlicht<typ_figur>
|
|
||||||
(
|
|
||||||
figur_erstellen
|
|
||||||
(
|
|
||||||
band,
|
|
||||||
stelle
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
let figur : typ_figur = partie.figur.lesen();
|
let meldung : string = "kein Ereignis mit diesem Name";
|
||||||
let stelle : typ_stelle = figur_stelle_lesen(figur);
|
throw (new Error(meldung));
|
||||||
let aktor_ : schnittstelle_fehlermonade<typ_aktor> = welt_feld_holen(partie.welt, stelle);
|
}
|
||||||
let aktor : typ_aktor = (aktor_.ist_schlicht() ? aktor_.lesen() : verwerfer_erstellen_aktor());
|
}
|
||||||
aktor_verwenden(aktor, figur);
|
|
||||||
let zustand : typ_zustand = figur_zustand_lesen(figur);
|
|
||||||
if (zustand === zustand_laufend)
|
/**
|
||||||
{
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
// nichts tun
|
*/
|
||||||
}
|
function benachrichtigen(partie : typ_partie, ereignis : string, angaben : any = {}) : void
|
||||||
else if ((zustand === zustand_angenommen) || (zustand === zustand_abgelehnt))
|
{
|
||||||
{
|
if (ereignis in partie.lauscher)
|
||||||
let angenommen : boolean = (zustand === zustand_angenommen);
|
{
|
||||||
let ausgabe : Array<typ_symbol> = figur_band_lesen(figur);
|
partie.lauscher[ereignis].forEach
|
||||||
partie.figur = (new klasse_nichts<typ_figur>());
|
(
|
||||||
let testindex : int = partie.testindex.lesen();
|
prozedur =>
|
||||||
let tests : Array<typ_test> = aufgabe_tests(partie.aufgabe);
|
|
||||||
let test : typ_test = tests[testindex];
|
|
||||||
if (! test_pruefen(test, angenommen, ausgabe))
|
|
||||||
{
|
{
|
||||||
partie.modus = modus_fehlerhaft;
|
prozedur(angaben);
|
||||||
partie_benachrichtigen(partie, "aenderung_modus", {});
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
let meldung : string = "kein Ereignis mit diesem Name";
|
||||||
|
throw (new Error(meldung));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function zuruecksetzen(partie : typ_partie, bescheid_geben : boolean = true) : void
|
||||||
|
{
|
||||||
|
partie.figur = (new klasse_nichts<mod_figur.typ_figur>());
|
||||||
|
partie.testindex = (new klasse_nichts<int>());
|
||||||
|
partie.modus = mod_modus.initial;
|
||||||
|
if (bescheid_geben)
|
||||||
|
{
|
||||||
|
benachrichtigen(partie, "aenderung_figur", {});
|
||||||
|
benachrichtigen(partie, "aenderung_modus", {});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// nichts tun
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function aufgabe_lesen(partie : typ_partie) : mod_vtm_aufbau.typ_aufgabe
|
||||||
|
{
|
||||||
|
return partie.aufgabe;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function aufgabe_setzen(partie : typ_partie, aufgabe : mod_vtm_aufbau.typ_aufgabe) : void
|
||||||
|
{
|
||||||
|
partie.aufgabe = aufgabe;
|
||||||
|
// partie.welt_leeren();
|
||||||
|
benachrichtigen(partie, "aenderung_aufgabe", {});
|
||||||
|
zuruecksetzen(partie);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function welt_lesen(partie : typ_partie) : mod_welt.typ_welt
|
||||||
|
{
|
||||||
|
return partie.welt;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function welt_setzen(partie : typ_partie, welt : mod_welt.typ_welt, bescheid_geben : boolean = true) : void
|
||||||
|
{
|
||||||
|
partie.welt = welt;
|
||||||
|
if (bescheid_geben)
|
||||||
|
{
|
||||||
|
benachrichtigen(partie, "aenderung_welt", {});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// nichts tun
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function welt_leeren(partie : typ_partie, bescheid_geben : boolean = true) : void
|
||||||
|
{
|
||||||
|
partie.welt = mod_welt.blanko();
|
||||||
|
if (bescheid_geben)
|
||||||
|
{
|
||||||
|
benachrichtigen(partie, "aenderung_welt", {});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// nichts tun
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function figur_lesen(partie : typ_partie) : schnittstelle_fehlermonade<mod_figur.typ_figur>
|
||||||
|
{
|
||||||
|
return partie.figur;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function modus_lesen(partie : typ_partie) : mod_modus.typ_modus
|
||||||
|
{
|
||||||
|
return partie.modus;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function welt_feld_wechseln(partie : typ_partie, stelle : mod_stelle.typ_stelle, umgekehrt : boolean = false) : void
|
||||||
|
{
|
||||||
|
if (! (partie.modus === mod_modus.initial))
|
||||||
|
{
|
||||||
|
let meldung : string = "gesperrt";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mod_welt.feld_wechseln(partie.welt, stelle, umgekehrt);
|
||||||
|
benachrichtigen
|
||||||
|
(
|
||||||
|
partie,
|
||||||
|
"aenderung_welt",
|
||||||
|
{
|
||||||
|
"art": "feld_wechseln",
|
||||||
|
"angaben":
|
||||||
|
{
|
||||||
|
"stelle": stelle,
|
||||||
|
"umgekehrt": umgekehrt,
|
||||||
|
"feld": mod_welt.feld_holen(partie.welt, stelle),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function welt_feld_drehen(partie : typ_partie, stelle : mod_stelle.typ_stelle, inkrement : int = +1) : void
|
||||||
|
{
|
||||||
|
if (! (partie.modus === mod_modus.initial))
|
||||||
|
{
|
||||||
|
let meldung : string = "gesperrt";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mod_welt.feld_drehen(partie.welt, stelle, inkrement);
|
||||||
|
benachrichtigen(partie, "aenderung_welt", {});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function fortfahren(partie : typ_partie) : void
|
||||||
|
{
|
||||||
|
switch (partie.modus)
|
||||||
|
{
|
||||||
|
case mod_modus.initial:
|
||||||
|
{
|
||||||
|
partie.modus = mod_modus.ungewiss;
|
||||||
|
partie.testindex = (new klasse_schlicht<int>(0));
|
||||||
|
benachrichtigen(partie, "aenderung_modus", {});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case mod_modus.ungewiss:
|
||||||
|
{
|
||||||
|
if (! partie.figur.ist_schlicht())
|
||||||
|
{
|
||||||
|
let test : mod_vtm_aufbau.typ_test = mod_vtm_aufbau.aufgabe_tests(partie.aufgabe)[partie.testindex.lesen()];
|
||||||
|
let band : Array<mod_symbol.typ_symbol> = mod_vtm_helfer.liste_kopieren<mod_symbol.typ_symbol>(mod_vtm_aufbau.test_eingabe(test));
|
||||||
|
let stelle : mod_stelle.typ_stelle = mod_welt.erzeuger_finden(partie.welt);
|
||||||
|
partie.figur = (
|
||||||
|
new klasse_schlicht<mod_figur.typ_figur>
|
||||||
|
(
|
||||||
|
mod_figur.erstellen
|
||||||
|
(
|
||||||
|
band,
|
||||||
|
stelle
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
testindex += 1;
|
let figur : mod_figur.typ_figur = partie.figur.lesen();
|
||||||
if (testindex < tests.length)
|
let stelle : mod_stelle.typ_stelle = mod_figur.stelle_lesen(figur);
|
||||||
|
let aktor_ : schnittstelle_fehlermonade<mod_aktor.typ_aktor> = mod_welt.feld_holen(partie.welt, stelle);
|
||||||
|
let aktor : mod_aktor.typ_aktor = (aktor_.ist_schlicht() ? aktor_.lesen() : mod_aktor_verwerfer.erstellen_aktor());
|
||||||
|
mod_aktor.verwenden(aktor, figur);
|
||||||
|
let zustand : mod_zustand.typ_zustand = mod_figur.zustand_lesen(figur);
|
||||||
|
if (zustand === mod_zustand.laufend)
|
||||||
{
|
{
|
||||||
// nächsten Test auswählen
|
// nichts tun
|
||||||
partie.testindex = (new klasse_schlicht<int>(testindex));
|
}
|
||||||
|
else if ((zustand === mod_zustand.angenommen) || (zustand === mod_zustand.abgelehnt))
|
||||||
|
{
|
||||||
|
let angenommen : boolean = (zustand === mod_zustand.angenommen);
|
||||||
|
let ausgabe : Array<mod_symbol.typ_symbol> = mod_figur.band_lesen(figur);
|
||||||
|
partie.figur = (new klasse_nichts<mod_figur.typ_figur>());
|
||||||
|
let testindex : int = partie.testindex.lesen();
|
||||||
|
let tests : Array<mod_vtm_aufbau.typ_test> = mod_vtm_aufbau.aufgabe_tests(partie.aufgabe);
|
||||||
|
let test : mod_vtm_aufbau.typ_test = tests[testindex];
|
||||||
|
if (! mod_vtm_aufbau.test_pruefen(test, angenommen, ausgabe))
|
||||||
|
{
|
||||||
|
partie.modus = mod_modus.fehlerhaft;
|
||||||
|
benachrichtigen(partie, "aenderung_modus", {});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
testindex += 1;
|
||||||
|
if (testindex < tests.length)
|
||||||
|
{
|
||||||
|
// nächsten Test auswählen
|
||||||
|
partie.testindex = (new klasse_schlicht<int>(testindex));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// auf Modus "korrekt" wechseln
|
||||||
|
partie.testindex = (new klasse_nichts<int>());
|
||||||
|
partie.modus = mod_modus.korrekt;
|
||||||
|
benachrichtigen(partie, "aenderung_modus", {});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// auf Modus "korrekt" wechseln
|
let meldung : string = "unbehandelter Zustand";
|
||||||
partie.testindex = (new klasse_nichts<int>());
|
throw (new Error(meldung));
|
||||||
partie.modus = modus_korrekt;
|
|
||||||
partie_benachrichtigen(partie, "aenderung_modus", {});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
benachrichtigen(partie, "aenderung_figur", {});
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else
|
case mod_modus.fehlerhaft:
|
||||||
{
|
{
|
||||||
let meldung : string = "unbehandelter Zustand";
|
// nichts tun
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case mod_modus.korrekt:
|
||||||
|
{
|
||||||
|
// nichts tun
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
let meldung : string = "unbehandelter Modus";
|
||||||
throw (new Error(meldung));
|
throw (new Error(meldung));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
partie_benachrichtigen(partie, "aenderung_figur", {});
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case modus_fehlerhaft:
|
|
||||||
{
|
|
||||||
// nichts tun
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case modus_korrekt:
|
|
||||||
{
|
|
||||||
// nichts tun
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
let meldung : string = "unbehandelter Modus";
|
|
||||||
throw (new Error(meldung));
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,40 +16,49 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
export module mod_aufbau
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export type typ_richtung = int;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function richtung_addieren(richtung1 : typ_richtung, richtung2 : typ_richtung) : typ_richtung
|
|
||||||
{
|
{
|
||||||
return mod_vtm_helfer.mod(richtung1 + richtung2, 6);
|
|
||||||
|
export module mod_richtung
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export type typ_richtung = int;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function addieren(richtung1 : typ_richtung, richtung2 : typ_richtung) : typ_richtung
|
||||||
|
{
|
||||||
|
return mod_vtm_helfer.mod(richtung1 + richtung2, 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function exportieren(richtung : typ_richtung) : int
|
||||||
|
{
|
||||||
|
return richtung;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function importieren(richtung_ : int) : typ_richtung
|
||||||
|
{
|
||||||
|
return richtung_;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function richtung_exportieren(richtung : typ_richtung) : int
|
|
||||||
{
|
|
||||||
return richtung;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function richtung_importieren(richtung_ : int) : typ_richtung
|
|
||||||
{
|
|
||||||
return richtung_;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,86 +16,95 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
export module mod_aufbau
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export type typ_stelle = {u : int; v : int;};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function stelle_hash(stelle : typ_stelle) : string
|
|
||||||
{
|
{
|
||||||
return (stelle.u.toFixed(0) + "_" + stelle.v.toFixed(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function stelle_von_hash(hash : string) : typ_stelle
|
|
||||||
{
|
|
||||||
let teile : Array<string> = hash.split("_");
|
|
||||||
return {"u": parseInt(teile[0]), "v": parseInt(teile[1])};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function stelle_null() : typ_stelle
|
|
||||||
{
|
|
||||||
return {"u": 0, "v": 0};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function stelle_von_richtung(richtung : typ_richtung) : typ_stelle
|
|
||||||
{
|
|
||||||
switch (richtung)
|
|
||||||
{
|
|
||||||
case 0: {return {"u": +1, "v": 0}; break;}
|
|
||||||
case 1: {return {"u": +1, "v": +1}; break;}
|
|
||||||
case 2: {return {"u": 0, "v": +1}; break;}
|
|
||||||
case 3: {return {"u": -1, "v": 0}; break;}
|
|
||||||
case 4: {return {"u": -1, "v": -1}; break;}
|
|
||||||
case 5: {return {"u": 0, "v": -1}; break;}
|
|
||||||
default: {throw (new Error("ungültige Richtung '" + String(richtung) + "'")); break;}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function stelle_addieren(stelle1 : typ_stelle, stelle2 : typ_stelle) : typ_stelle
|
|
||||||
{
|
|
||||||
return {"u": (stelle1.u + stelle2.u), "v": (stelle1.v + stelle2.v)};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function stelle_exportieren(stelle : typ_stelle) : string
|
|
||||||
{
|
|
||||||
return stelle_hash(stelle);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function stelle_importieren(stelle_ : string) : typ_stelle
|
|
||||||
{
|
|
||||||
return stelle_von_hash(stelle_);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
export module mod_stelle
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export type typ_stelle = {u : int; v : int;};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function hash(stelle : typ_stelle) : string
|
||||||
|
{
|
||||||
|
return (stelle.u.toFixed(0) + "_" + stelle.v.toFixed(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function von_hash(hash : string) : typ_stelle
|
||||||
|
{
|
||||||
|
let teile : Array<string> = hash.split("_");
|
||||||
|
return {"u": parseInt(teile[0]), "v": parseInt(teile[1])};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function null_() : typ_stelle
|
||||||
|
{
|
||||||
|
return {"u": 0, "v": 0};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function von_richtung(richtung : mod_richtung.typ_richtung) : typ_stelle
|
||||||
|
{
|
||||||
|
switch (richtung)
|
||||||
|
{
|
||||||
|
case 0: {return {"u": +1, "v": 0}; break;}
|
||||||
|
case 1: {return {"u": +1, "v": +1}; break;}
|
||||||
|
case 2: {return {"u": 0, "v": +1}; break;}
|
||||||
|
case 3: {return {"u": -1, "v": 0}; break;}
|
||||||
|
case 4: {return {"u": -1, "v": -1}; break;}
|
||||||
|
case 5: {return {"u": 0, "v": -1}; break;}
|
||||||
|
default: {throw (new Error("ungültige Richtung '" + String(richtung) + "'")); break;}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function addieren(stelle1 : typ_stelle, stelle2 : typ_stelle) : typ_stelle
|
||||||
|
{
|
||||||
|
return {"u": (stelle1.u + stelle2.u), "v": (stelle1.v + stelle2.v)};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function exportieren(stelle : typ_stelle) : string
|
||||||
|
{
|
||||||
|
return hash(stelle);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function importieren(stelle_ : string) : typ_stelle
|
||||||
|
{
|
||||||
|
return von_hash(stelle_);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,40 +16,50 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
export module mod_aufbau
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export type typ_symbol = int;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function symbol_vergleichen(symbol1 : typ_symbol, symbol2 : typ_symbol) : boolean
|
|
||||||
{
|
{
|
||||||
return (symbol1 === symbol2);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function symbol_exportieren(symbol : typ_symbol) : int
|
|
||||||
{
|
|
||||||
return symbol;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function symbol_importieren(symbol_ : int) : typ_symbol
|
|
||||||
{
|
|
||||||
return symbol_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
export module mod_symbol
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export type typ_symbol = int;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function vergleichen(symbol1 : typ_symbol, symbol2 : typ_symbol) : boolean
|
||||||
|
{
|
||||||
|
return (symbol1 === symbol2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function exportieren(symbol : typ_symbol) : int
|
||||||
|
{
|
||||||
|
return symbol;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function importieren(symbol_ : int) : typ_symbol
|
||||||
|
{
|
||||||
|
return symbol_;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,343 +3,353 @@
|
||||||
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General export function welt_License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General export function welt_License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General export function welt_License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
export module mod_aufbau
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export type typ_welt =
|
|
||||||
{
|
{
|
||||||
felder : mod_vtm_helfer.klasse_hashmap<typ_stelle, typ_aktor>;
|
|
||||||
}
|
export module mod_welt
|
||||||
;
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export type typ_welt =
|
||||||
|
{
|
||||||
|
felder : mod_vtm_helfer.klasse_hashmap<mod_stelle.typ_stelle, mod_aktor.typ_aktor>;
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function welt_erstellen
|
export function erstellen
|
||||||
(
|
(
|
||||||
felder : mod_vtm_helfer.klasse_hashmap<typ_stelle, typ_aktor> = (new mod_vtm_helfer.klasse_hashmap<typ_stelle, typ_aktor>(stelle_hash))
|
felder : mod_vtm_helfer.klasse_hashmap<mod_stelle.typ_stelle, mod_aktor.typ_aktor> = (new mod_vtm_helfer.klasse_hashmap<mod_stelle.typ_stelle, mod_aktor.typ_aktor>(mod_stelle.hash))
|
||||||
)
|
)
|
||||||
: typ_welt
|
: typ_welt
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
"felder": felder,
|
"felder": felder,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function welt_felder_lesen(welt : typ_welt) : Array<{stelle : typ_stelle; aktor : typ_aktor;}>
|
export function felder_lesen(welt : typ_welt) : Array<{stelle : mod_stelle.typ_stelle; aktor : mod_aktor.typ_aktor;}>
|
||||||
{
|
{
|
||||||
let felder : Array<{stelle : typ_stelle; aktor : typ_aktor;}> = [];
|
let felder : Array<{stelle : mod_stelle.typ_stelle; aktor : mod_aktor.typ_aktor;}> = [];
|
||||||
welt.felder.iterieren
|
welt.felder.iterieren
|
||||||
(
|
(
|
||||||
(stelle, aktor) => felder.push({"stelle": stelle, "aktor": aktor})
|
(stelle, aktor) => felder.push({"stelle": stelle, "aktor": aktor})
|
||||||
)
|
|
||||||
;
|
|
||||||
return felder;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function welt_feld_holen(welt : typ_welt, stelle : typ_stelle) : schnittstelle_fehlermonade<typ_aktor>
|
|
||||||
{
|
|
||||||
return welt.felder.holen(stelle);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function welt_feld_setzen(welt : typ_welt, stelle : typ_stelle, aktor : typ_aktor) : void
|
|
||||||
{
|
|
||||||
welt.felder.setzen(stelle, aktor);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function welt_feld_wechseln(welt : typ_welt, stelle : typ_stelle, umgekehrt : boolean = false) : void
|
|
||||||
{
|
|
||||||
let erweitert : boolean = true;
|
|
||||||
let liste : Array<{pruefer : (aktor : typ_aktor)=>boolean; ersteller : ()=>typ_aktor;}> = (
|
|
||||||
[]
|
|
||||||
.concat
|
|
||||||
(
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"pruefer": (aktor) => (aktor.art === "befoerderer"),
|
|
||||||
"ersteller": () => befoerderer_erstellen_aktor(0),
|
|
||||||
},
|
|
||||||
]
|
|
||||||
)
|
|
||||||
.concat
|
|
||||||
(
|
|
||||||
mod_vtm_helfer.sequenz(erweitert ? 4 : 2).map
|
|
||||||
(
|
|
||||||
symbol => (
|
|
||||||
{
|
|
||||||
"pruefer": (aktor) =>
|
|
||||||
{
|
|
||||||
if (aktor.art === "schreiber")
|
|
||||||
{
|
|
||||||
return (schreiber_symbol_lesen(aktor.angaben) === symbol);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
,
|
|
||||||
"ersteller": () => schreiber_erstellen_aktor(0, symbol)
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
;
|
||||||
)
|
return felder;
|
||||||
.concat
|
}
|
||||||
(
|
|
||||||
mod_vtm_helfer.sequenz(erweitert ? 2 : 1).map
|
|
||||||
(
|
/**
|
||||||
index =>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
{
|
*/
|
||||||
let symbol_links : typ_symbol = (2*index+0);
|
export function feld_holen(welt : typ_welt, stelle : mod_stelle.typ_stelle) : schnittstelle_fehlermonade<mod_aktor.typ_aktor>
|
||||||
let symbol_rechts : typ_symbol = (2*index+1);
|
{
|
||||||
return (
|
return welt.felder.holen(stelle);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function feld_setzen(welt : typ_welt, stelle : mod_stelle.typ_stelle, aktor : mod_aktor.typ_aktor) : void
|
||||||
|
{
|
||||||
|
welt.felder.setzen(stelle, aktor);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function feld_wechseln(welt : typ_welt, stelle : mod_stelle.typ_stelle, umgekehrt : boolean = false) : void
|
||||||
|
{
|
||||||
|
let erweitert : boolean = true;
|
||||||
|
let liste : Array<{pruefer : (aktor : mod_aktor.typ_aktor)=>boolean; ersteller : ()=>mod_aktor.typ_aktor;}> = (
|
||||||
|
[]
|
||||||
|
.concat
|
||||||
|
(
|
||||||
|
[
|
||||||
{
|
{
|
||||||
"pruefer": (aktor) =>
|
"pruefer": (aktor) => (aktor.art === "befoerderer"),
|
||||||
|
"ersteller": () => mod_aktor_befoerderer.erstellen_aktor(0),
|
||||||
|
},
|
||||||
|
]
|
||||||
|
)
|
||||||
|
.concat
|
||||||
|
(
|
||||||
|
mod_vtm_helfer.sequenz(erweitert ? 4 : 2).map
|
||||||
|
(
|
||||||
|
symbol => (
|
||||||
{
|
{
|
||||||
if (aktor.art === "leser")
|
"pruefer": (aktor) =>
|
||||||
{
|
{
|
||||||
return (
|
if (aktor.art === "schreiber")
|
||||||
(leser_symbol_links_lesen(aktor.angaben) === symbol_links)
|
{
|
||||||
&&
|
return (mod_aktor_schreiber.symbol_lesen(aktor.angaben) === symbol);
|
||||||
(leser_symbol_rechts_lesen(aktor.angaben) === symbol_rechts)
|
}
|
||||||
);
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
,
|
||||||
|
"ersteller": () => mod_aktor_schreiber.erstellen_aktor(0, symbol)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.concat
|
||||||
|
(
|
||||||
|
mod_vtm_helfer.sequenz(erweitert ? 2 : 1).map
|
||||||
|
(
|
||||||
|
index =>
|
||||||
|
{
|
||||||
|
let symbol_links : mod_symbol.typ_symbol = (2*index+0);
|
||||||
|
let symbol_rechts : mod_symbol.typ_symbol = (2*index+1);
|
||||||
|
return (
|
||||||
|
{
|
||||||
|
"pruefer": (aktor) =>
|
||||||
|
{
|
||||||
|
if (aktor.art === "leser")
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
(mod_aktor_leser.symbol_links_lesen(aktor.angaben) === symbol_links)
|
||||||
|
&&
|
||||||
|
(mod_aktor_leser.symbol_rechts_lesen(aktor.angaben) === symbol_rechts)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
,
|
||||||
|
"ersteller": () => mod_aktor_leser.erstellen_aktor(0, symbol_links, symbol_rechts)
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.concat
|
||||||
|
(
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"pruefer": (aktor) => (aktor.art === "verwerfer"),
|
||||||
|
"ersteller": () => mod_aktor_verwerfer.erstellen_aktor(),
|
||||||
|
},
|
||||||
|
]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
let index_alt : schnittstelle_fehlermonade<int>;
|
||||||
|
let aktor_alt_ : schnittstelle_fehlermonade<mod_aktor.typ_aktor> = welt.felder.holen(stelle);
|
||||||
|
if (aktor_alt_.ist_schlicht())
|
||||||
|
{
|
||||||
|
let aktor_alt : mod_aktor.typ_aktor = aktor_alt_.lesen();
|
||||||
|
let gefunden : boolean = (
|
||||||
|
liste.some
|
||||||
|
(
|
||||||
|
(eintrag, index) =>
|
||||||
|
{
|
||||||
|
if (eintrag.pruefer(aktor_alt))
|
||||||
|
{
|
||||||
|
index_alt = (new klasse_schlicht<int>(index));
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
,
|
)
|
||||||
"ersteller": () => leser_erstellen_aktor(0, symbol_links, symbol_rechts)
|
);
|
||||||
}
|
if (! gefunden)
|
||||||
);
|
{
|
||||||
}
|
index_alt = (new klasse_nichts<int>());
|
||||||
)
|
}
|
||||||
)
|
else
|
||||||
.concat
|
{
|
||||||
(
|
// nichts tun
|
||||||
[
|
}
|
||||||
{
|
}
|
||||||
"pruefer": (aktor) => (aktor.art === "verwerfer"),
|
else
|
||||||
"ersteller": () => verwerfer_erstellen_aktor(),
|
{
|
||||||
},
|
let meldung : string = "kein Aktor gesetzt";
|
||||||
]
|
// console.warn(meldung);
|
||||||
)
|
index_alt = (new klasse_schlicht<int>(0));
|
||||||
);
|
}
|
||||||
let index_alt : schnittstelle_fehlermonade<int>;
|
if (index_alt.ist_schlicht())
|
||||||
let aktor_alt_ : schnittstelle_fehlermonade<typ_aktor> = welt.felder.holen(stelle);
|
{
|
||||||
if (aktor_alt_.ist_schlicht())
|
let index_neu : int = mod_vtm_helfer.mod(index_alt.lesen() + (umgekehrt ? -1 : +1), liste.length);
|
||||||
{
|
let aktor_neu : mod_aktor.typ_aktor = liste[index_neu].ersteller();
|
||||||
let aktor_alt : typ_aktor = aktor_alt_.lesen();
|
feld_setzen(welt, stelle, aktor_neu);
|
||||||
let gefunden : boolean = (
|
}
|
||||||
liste.some
|
else
|
||||||
(
|
{
|
||||||
(eintrag, index) =>
|
let meldung : string = ("Aktor nicht gefunden");
|
||||||
{
|
// throw (new Error(meldung));
|
||||||
if (eintrag.pruefer(aktor_alt))
|
console.warn(meldung);
|
||||||
{
|
}
|
||||||
index_alt = (new klasse_schlicht<int>(index));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
if (! gefunden)
|
|
||||||
{
|
|
||||||
index_alt = (new klasse_nichts<int>());
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function feld_drehen(welt : typ_welt, stelle : mod_stelle.typ_stelle, inkrement : int = +1) : void
|
||||||
{
|
{
|
||||||
// nichts tun
|
let aktor_ : schnittstelle_fehlermonade<mod_aktor.typ_aktor> = welt.felder.holen(stelle);
|
||||||
|
if (aktor_.ist_schlicht)
|
||||||
|
{
|
||||||
|
mod_aktor.drehen(aktor_.lesen(), inkrement);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
console.warn("kein Aktor gesetzt");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
let meldung : string = "kein Aktor gesetzt";
|
|
||||||
// console.warn(meldung);
|
|
||||||
index_alt = (new klasse_schlicht<int>(0));
|
|
||||||
}
|
|
||||||
if (index_alt.ist_schlicht())
|
|
||||||
{
|
|
||||||
let index_neu : int = mod_vtm_helfer.mod(index_alt.lesen() + (umgekehrt ? -1 : +1), liste.length);
|
|
||||||
let aktor_neu : typ_aktor = liste[index_neu].ersteller();
|
|
||||||
welt_feld_setzen(welt, stelle, aktor_neu);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
let meldung : string = ("Aktor nicht gefunden");
|
|
||||||
// throw (new Error(meldung));
|
|
||||||
console.warn(meldung);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function welt_feld_drehen(welt : typ_welt, stelle : typ_stelle, inkrement : int = +1) : void
|
|
||||||
{
|
|
||||||
let aktor_ : schnittstelle_fehlermonade<typ_aktor> = welt.felder.holen(stelle);
|
|
||||||
if (aktor_.ist_schlicht)
|
|
||||||
{
|
|
||||||
aktor_drehen(aktor_.lesen(), inkrement);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
console.warn("kein Aktor gesetzt");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
* @throws {Error}
|
* @throws {Error}
|
||||||
*/
|
*/
|
||||||
export function welt_erzeuger_finden(welt : typ_welt) : typ_stelle
|
export function erzeuger_finden(welt : typ_welt) : mod_stelle.typ_stelle
|
||||||
{
|
|
||||||
let stelle : schnittstelle_fehlermonade<typ_stelle> = (new klasse_nichts<typ_stelle>());
|
|
||||||
welt.felder.iterieren
|
|
||||||
(
|
|
||||||
(stelle_, aktor) =>
|
|
||||||
{
|
{
|
||||||
if (aktor.art === "erzeuger")
|
let stelle : schnittstelle_fehlermonade<mod_stelle.typ_stelle> = (new klasse_nichts<mod_stelle.typ_stelle>());
|
||||||
|
welt.felder.iterieren
|
||||||
|
(
|
||||||
|
(stelle_, aktor) =>
|
||||||
|
{
|
||||||
|
if (aktor.art === "erzeuger")
|
||||||
|
{
|
||||||
|
if (stelle.ist_schlicht())
|
||||||
|
{
|
||||||
|
let meldung : string = "mehrere Erzeuger gefunden";
|
||||||
|
throw (new Error(meldung));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stelle = (new klasse_schlicht<mod_stelle.typ_stelle>(stelle_));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
if (stelle.ist_schlicht())
|
||||||
{
|
{
|
||||||
if (stelle.ist_schlicht())
|
return stelle.lesen();
|
||||||
{
|
}
|
||||||
let meldung : string = "mehrere Erzeuger gefunden";
|
else
|
||||||
throw (new Error(meldung));
|
{
|
||||||
}
|
let meldung : string = "kein Erzeuger gefunden";
|
||||||
else
|
throw (new Error(meldung));
|
||||||
{
|
|
||||||
stelle = (new klasse_schlicht<typ_stelle>(stelle_));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
|
||||||
;
|
|
||||||
if (stelle.ist_schlicht())
|
/**
|
||||||
{
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
return stelle.lesen();
|
*/
|
||||||
}
|
export function blanko(groesse : int = 3) : typ_welt
|
||||||
else
|
|
||||||
{
|
|
||||||
let meldung : string = "kein Erzeuger gefunden";
|
|
||||||
throw (new Error(meldung));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function welt_blanko(groesse : int = 3) : typ_welt
|
|
||||||
{
|
|
||||||
let welt : typ_welt = welt_erstellen();
|
|
||||||
for (let u : int = -groesse; u <= +groesse; u += 1)
|
|
||||||
{
|
|
||||||
for (let v : int = -groesse; v <= +groesse; v += 1)
|
|
||||||
{
|
{
|
||||||
if (Math.abs(u-v) <= groesse)
|
let welt : typ_welt = erstellen();
|
||||||
|
for (let u : int = -groesse; u <= +groesse; u += 1)
|
||||||
{
|
{
|
||||||
let stelle : typ_stelle = {"u": u, "v": v};
|
for (let v : int = -groesse; v <= +groesse; v += 1)
|
||||||
let aktor : typ_aktor;
|
|
||||||
if ((u === -groesse) && (v === 0))
|
|
||||||
{
|
{
|
||||||
aktor = erzeuger_erstellen_aktor(0);
|
if (Math.abs(u-v) <= groesse)
|
||||||
|
{
|
||||||
|
let stelle : mod_stelle.typ_stelle = {"u": u, "v": v};
|
||||||
|
let aktor : mod_aktor.typ_aktor;
|
||||||
|
if ((u === -groesse) && (v === 0))
|
||||||
|
{
|
||||||
|
aktor = mod_aktor_erzeuger.erstellen_aktor(0);
|
||||||
|
}
|
||||||
|
else if ((u === +groesse) && (v === 0))
|
||||||
|
{
|
||||||
|
aktor = mod_aktor_annehmer.erstellen_aktor();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
aktor = mod_aktor_verwerfer.erstellen_aktor();
|
||||||
|
}
|
||||||
|
welt.felder.setzen(stelle, aktor);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if ((u === +groesse) && (v === 0))
|
|
||||||
{
|
|
||||||
aktor = annehmer_erstellen_aktor();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
aktor = verwerfer_erstellen_aktor();
|
|
||||||
}
|
|
||||||
welt.felder.setzen(stelle, aktor);
|
|
||||||
}
|
}
|
||||||
|
return welt;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return welt;
|
|
||||||
}
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
/**
|
export function exportieren(welt : typ_welt) : any
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function welt_exportieren(welt : typ_welt) : any
|
|
||||||
{
|
|
||||||
let roh : any = {};
|
|
||||||
roh["felder"] = {};
|
|
||||||
welt.felder.iterieren
|
|
||||||
(
|
|
||||||
(stelle, aktor) =>
|
|
||||||
{
|
{
|
||||||
let stelle_ : string = stelle_exportieren(stelle);
|
let roh : any = {};
|
||||||
let aktor_ : any = aktor_exportieren(aktor);
|
roh["felder"] = {};
|
||||||
roh["felder"][stelle_] = aktor_;
|
welt.felder.iterieren
|
||||||
|
(
|
||||||
|
(stelle, aktor) =>
|
||||||
|
{
|
||||||
|
let stelle_ : string = mod_stelle.exportieren(stelle);
|
||||||
|
let aktor_ : any = mod_aktor.exportieren(aktor);
|
||||||
|
roh["felder"][stelle_] = aktor_;
|
||||||
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
return roh;
|
||||||
}
|
}
|
||||||
)
|
|
||||||
;
|
|
||||||
return roh;
|
/**
|
||||||
}
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function importieren(roh : any) : typ_welt
|
||||||
/**
|
{
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
let felder : mod_vtm_helfer.klasse_hashmap<mod_stelle.typ_stelle, mod_aktor.typ_aktor> = (new mod_vtm_helfer.klasse_hashmap<mod_stelle.typ_stelle, mod_aktor.typ_aktor>(mod_stelle.hash));
|
||||||
*/
|
for (let stelle_ in roh["felder"])
|
||||||
export function welt_importieren(roh : any) : typ_welt
|
{
|
||||||
{
|
let stelle : mod_stelle.typ_stelle = mod_stelle.importieren(stelle_);
|
||||||
let felder : mod_vtm_helfer.klasse_hashmap<typ_stelle, typ_aktor> = (new mod_vtm_helfer.klasse_hashmap<typ_stelle, typ_aktor>(stelle_hash));
|
let aktor_ : mod_aktor.typ_aktor = roh["felder"][stelle_];
|
||||||
for (let stelle_ in roh["felder"])
|
let aktor : mod_aktor.typ_aktor = mod_aktor.importieren(aktor_);
|
||||||
{
|
felder.setzen(stelle, aktor);
|
||||||
let stelle : typ_stelle = stelle_importieren(stelle_);
|
}
|
||||||
let aktor_ : typ_aktor = roh["felder"][stelle_];
|
return (
|
||||||
let aktor : typ_aktor = aktor_importieren(aktor_);
|
erstellen
|
||||||
felder.setzen(stelle, aktor);
|
(
|
||||||
|
felder
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return (
|
|
||||||
welt_erstellen
|
|
||||||
(
|
|
||||||
felder
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,21 +16,31 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
export module mod_aufbau
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
{
|
||||||
*/
|
|
||||||
export type typ_zustand = int;
|
export module mod_zustand
|
||||||
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export var zustand_abgelehnt = -1;
|
export type typ_zustand = int;
|
||||||
export var zustand_laufend = 0;
|
|
||||||
export var zustand_angenommen = +1;
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export var abgelehnt = -1;
|
||||||
|
export var laufend = 0;
|
||||||
|
export var angenommen = +1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,24 @@
|
||||||
type typ_komplex<typ_angaben> = {art : string; angaben ?: typ_angaben;};
|
type typ_komplex<typ_angaben> = {art : string; angaben ?: typ_angaben;};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function einpacken<typ_angaben>(art : string, angaben : typ_angaben) : typ_komplex<typ_angaben>
|
||||||
|
{
|
||||||
|
return {"art": art, "angaben": angaben};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function auspacken<typ_angaben>(komplex : typ_komplex<typ_angaben>) : typ_angaben
|
||||||
|
{
|
||||||
|
return komplex.angaben;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -115,27 +115,27 @@ function haupt() : void
|
||||||
let hoehe : float = 80;
|
let hoehe : float = 80;
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"aufbau": mod_vtm_aufbau.aktor_beispiel("erzeuger"),
|
"aufbau": mod_vtm.mod_aufbau.mod_aktor.beispiel("erzeuger"),
|
||||||
"bereich": document.querySelector("#hilfe_aktoren_aktor_erzeuger"),
|
"bereich": document.querySelector("#hilfe_aktoren_aktor_erzeuger"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"aufbau": mod_vtm_aufbau.aktor_beispiel("annehmer"),
|
"aufbau": mod_vtm.mod_aufbau.mod_aktor.beispiel("annehmer"),
|
||||||
"bereich": document.querySelector("#hilfe_aktoren_aktor_annehmer"),
|
"bereich": document.querySelector("#hilfe_aktoren_aktor_annehmer"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"aufbau": mod_vtm_aufbau.aktor_beispiel("verwerfer"),
|
"aufbau": mod_vtm.mod_aufbau.mod_aktor.beispiel("verwerfer"),
|
||||||
"bereich": document.querySelector("#hilfe_aktoren_aktor_verwerfer"),
|
"bereich": document.querySelector("#hilfe_aktoren_aktor_verwerfer"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"aufbau": mod_vtm_aufbau.aktor_beispiel("befoerderer"),
|
"aufbau": mod_vtm.mod_aufbau.mod_aktor.beispiel("befoerderer"),
|
||||||
"bereich": document.querySelector("#hilfe_aktoren_aktor_befoerderer"),
|
"bereich": document.querySelector("#hilfe_aktoren_aktor_befoerderer"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"aufbau": mod_vtm_aufbau.aktor_beispiel("schreiber"),
|
"aufbau": mod_vtm.mod_aufbau.mod_aktor.beispiel("schreiber"),
|
||||||
"bereich": document.querySelector("#hilfe_aktoren_aktor_schreiber"),
|
"bereich": document.querySelector("#hilfe_aktoren_aktor_schreiber"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"aufbau": mod_vtm_aufbau.aktor_beispiel("leser"),
|
"aufbau": mod_vtm.mod_aufbau.mod_aktor.beispiel("leser"),
|
||||||
"bereich": document.querySelector("#hilfe_aktoren_aktor_leser"),
|
"bereich": document.querySelector("#hilfe_aktoren_aktor_leser"),
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
@ -147,7 +147,7 @@ function haupt() : void
|
||||||
mod_vtm_manifestation.svg_aktor_erstellen_manifestation
|
mod_vtm_manifestation.svg_aktor_erstellen_manifestation
|
||||||
(
|
(
|
||||||
eintrag.aufbau,
|
eintrag.aufbau,
|
||||||
mod_vtm_aufbau.stelle_null()
|
mod_vtm.mod_aufbau.mod_stelle.null_()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
let xmlknoten : mod_vtm_helfer.typ_xmlknoten = (
|
let xmlknoten : mod_vtm_helfer.typ_xmlknoten = (
|
||||||
|
|
@ -168,13 +168,13 @@ function haupt() : void
|
||||||
}
|
}
|
||||||
// Spiel
|
// Spiel
|
||||||
{
|
{
|
||||||
// let aufbau : mod_vtm_aufbau.typ_partie;
|
let aufbau : mod_vtm.mod_aufbau.mod_partie.typ_partie;
|
||||||
aufgaben_eintragen
|
aufgaben_eintragen
|
||||||
(
|
(
|
||||||
function (aufgabe : mod_vtm_aufbau.typ_aufgabe) : void {mod_vtm_aufbau.partie_aufgabe_setzen(aufbau, aufgabe);}
|
function (aufgabe : mod_vtm_aufbau.typ_aufgabe) : void {mod_vtm.mod_aufbau.mod_partie.aufgabe_setzen(aufbau, aufgabe);}
|
||||||
)
|
)
|
||||||
;
|
;
|
||||||
aufbau = mod_vtm_aufbau.partie_erstellen(mod_vtm_aufbau.aufgabe_holen(0));
|
aufbau = mod_vtm.mod_aufbau.mod_partie.erstellen(mod_vtm_aufbau.aufgabe_holen(0));
|
||||||
mod_vtm_manifestation.manifestation_einrichten
|
mod_vtm_manifestation.manifestation_einrichten
|
||||||
(
|
(
|
||||||
mod_vtm_manifestation.web_partie_erstellen_erweitert
|
mod_vtm_manifestation.web_partie_erstellen_erweitert
|
||||||
|
|
@ -194,7 +194,6 @@ function haupt() : void
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var aufbau : mod_vtm_aufbau.typ_partie = null;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue