Kategorien
Dialog

Ballpark – Inform Example No. 60

Das Inform-Beispiel Nr. 60, nach Dialog portiert

%% Manchmal ist es besser, eine Zahl eher vage als exakt zu
%% bezeichnen, beispielsweise dem Spieler zu erzählen, dass 
%% sich viele Menschen in dem Saal befinden, als exakt 42.

%% Die Idee ist, sich durch eine Liste zu arbeiten, die hier 
%% als globale Variable definiert wird, und den Text in der 
%% Liste auszugeben, sobald die Zahl höher ist als der 
%% Eintrag.

(current player #player)
(#player is #in #stadium)

(global variable (round_numbers [[1 keine] [2 einen] [3 ein paar] [6 einige wenige] [11 einige] [21 viele] [1000 sehr sehr viele]]))

(population of $ is $)
	(fail)

#stadium
(room *)
(name *)	Stadion
(from * go #west to #hotdogstand)
(from * go #south to #restroom)
(population of * is 500)

#hotdogstand
(room *)
(name *)	Hot Dog Stand
(population of * is )
(from * go #east to #stadium)
(population of * is 3)

#restroom
(room *)
(name *)	Stadion
(population of * is )
(from * go #north to #stadium)
(population of * is 750)

(look (room $Room))
	(population of $Room is $Number)
	Hier siehst du
	(round_numbers $List)
	(get best entry of $Number in $List)

(get best entry of $N in [$Check | $Rest])
	([$F | $Else] = $Check)
	(if) ($N < $F) (then)
		(display $Else) 
	(endif)
	(get best entry of $N in $Rest)

(display [$First | $Rest])
	$First
	(display $Rest)

(display [])
	Menschen.
	(stop)

%% Testen mit w / o / s
Kategorien
Dialog

Bad Hair Day – Inform Example No. 84

Das Inform Beispiel Nr. 84, nach Dialog portiert

(current player #player)
(#player is #in #room)

#room
(room *)
(name *)	Raum
(look *)
		Ein Spiegel hängt über dem Tisch, eine verlockende Möglichkeit, dich zu betrachten, bevor du zu den anderen hineingehst.

(instead of [examine #player])
	Ok, du siehst prima aus.

%% Testen mit betrachte dich
Kategorien
Dialog

America Stands Tall

Das Inform Beispiel, portiert nach Dialog

%% Im ovalen Büro soll die Größe geschätzt werden. Dazu ist ein wenig
%% Anpassung im Bereich der Grammatikschablonen notwenig und auch das
%% Abfangen unvollständiger Eingabe wie "schätze (person)"

(current player #player)
(#player is #in #room)
(height of #player is 1 m 75 cm)

(height of $ is $ m $ cm)
	(fail)

#room
(room *)
(name *)	Ovales Büro
(* is neutrum)

#josh
(male actor *)
(name *)	Josh(-s)
(dict *)	josh
(* is #in #room)
(proper *)
(appearance * $ $)	Josh und Toby sind hier.
(height of * is 1 m 85 cm)

#toby
(male actor *)
(name *)	Toby(-s)
(dict *)	toby
(* is #in #room)
(proper *)
(height of * is 1 m 70 cm)

(describe action [guess $NPC to $Meter and $Zentimeter])
	jemanden auf m und cm (zu) schätzen

(understand infinitve [schätzen] as [schätz])

(understand [schätz | $Words] as [guess $NPC to $Meter and $Zentimeter])
	*(split $Words by [auf] into $Left and $Right)
	*(understand $Left as single object $NPC)
	*(split $Right by [m meter] into $First and $Rest)
	*(understand $First as number $Meter)
	*(split $Rest by [cm zentimeter] into $Second and $Unused)
	*(understand $Second as number $Zentimeter)

(describe action [guess $NPC to $Meter])
	jemanden auf m (zu) schätzen

(unlikely [guess $NPC to $Meter])

(understand [schätz | $Words] as [guess $NPC to $Meter])
	*(split $Words by [auf] into $Left and $Rest)
	*(understand $Left as single object $NPC)
	*(split $Rest by [m meter] into $First and $Unused)
	*(understand $First as number $Meter)

(understand [schätz | $Words] as [guess $Object])
	*(understand $Words as single object $Object)

(understand [schätz] as [guess])

(describe action [guess $NPC])
	jemanden (zu) schätzen

(very unlikely [guess $NPC])

(perform [guess])
	Wen?
	(asking for object in [guess []])

(perform [guess $NPC])
	Auf wieviele m?
	(get input $Input)
	(understand $Input as number $Meter)
	Und wieviele cm?
	(get input $Input2)
	(understand $Input2 as number $Zentimeter)
	(try [guess $NPC to $Meter and $Zentimeter])

(perform [guess $NPC to $Meter])
	Und wieviele cm?
	(get input $Input)
	(understand $Input as number $Zentimeter)
	(try [guess $NPC to $Meter and $Zentimeter])

(perform [guess $NPC to $Meter and $Zentimeter])
	(height of $NPC is $isMeter m $isZentimeter cm)
	(if) ($Meter > $isMeter) (then)
		(kleiner $NPC).
		(stop)
	(elseif) ($Meter < $isMeter) (then)
		(größer $NPC).
		(stop)
	(elseif) ($Zentimeter > $isZentimeter) (then)
		(kleiner $NPC).
		(stop)
	(elseif) ($Zentimeter < $isZentimeter) (then)
		(größer $NPC).
		(stop)
	(endif)
	Du liegst goldrichtig.

(kleiner $NPC)
	Du liegst daneben, (der $NPC) (ist $NPC) kleiner

(größer $NPC)
	Du liegst daneben, (der $NPC) (ist $NPC) größer
Kategorien
Dialog

All Roads Lead to Mars – Inform Example No. 78

Das Inform-Beispiel Nr. 178, nach Dialog portiert

%% Angenommen wir möchten es dem Spieler ermöglichen, sich frei in
%% jeglicher Richtung zu bewegen, aber gleichzeitig zu kontrollieren, 
%% in welcher Reihenfolge er die Räume besucht. Das Erzählen der 
%% Geschichte steht eher im Mittelpunkt, als die genaue Abbildung
%% einer Karte.

%% Hier wird die Problematik über eine Liste gelöst, in der die 
%% Verbindungen der Räume abgelegt werden, wenn diese noch nicht 
%% besucht wurden. Getestet wird außerdem, ob die Verbindung bereits
%% zwischen zwei anderen Räumen besteht.

(global variable (connector []))

($ is connected) 
	(fail)

(nextroom from $ is $)
	(fail)

(current player #player)
(#player is #in #open_plain)

#open_plain
(room *)
(name *)	weite(e) Ebene
(room header *)	Weite Ebene
(look *)
		Eine weite Ebene, offen in jeder Richtung.
(* is feminin)
(nextroom from * is #hilly_place)

%% (from * go $ to #hilly_place)

#hilly_place
(room *)
(name *)	hügelig(er) Ort(-es)
(room header *)	Hügeliger Ort
(look *)
		Das flache Grasland wird hier zu einer hügeligen Gegend, die
		dir aber gleichfalls alle Wege offen lässt.
(* is maskulin)
(nextroom from * is #stream)

%% (from * go $ to #stream)

#stream
(room *)
(name *)	Strom(-es)
(room header *)	Am Strom
(look *)
		Das ist der dritte Ort, den du heute besuchst und der Strom ist dir sehr willkommen. Wie erfrischend!
(* is maskulin)

(before [leave $Room $Dir])
	(nextroom from $Room is $NextRoom)
	~($NextRoom is visited)
	~(from $Room go $Dir to $)
	(connector $List)
	(append $List [[$Room $Dir $NextRoom]] $New)
	(now) (connector $New)
	(opposite of $Dir is $Opp)
	(append $New [[$NextRoom $Opp $Room]] $Reverse)
	(now) (connector $Reverse)

(from $Room go $Dir to $NextRoom)
	(connector $List)
	([$Room $Dir $NextRoom] is one of $List)

%% Testen mit "n / s / o / o". 
Kategorien
Dialog

Age of Steam – Inform Example No. 156

Das Inform Beispel Nr. 156, nach Dialog portiert

(intro)
	(now) (scenetime 0)
	(now) (time 539) %%08:59 Uhr
	(banner)
	(try [look])

(current player #player)
(#player is #in #station)

(global variable (time $))
(global variable (scenetime $))
(global variable (arrival $))

#station
(room *)
(name *)	Bahnstation
(look *)
		Der Halt "Eynforme" ist eine erhöhte Plattform, gesäumt von Dotterblumen, eine Bedarfshaltestelle mit einem Signal und einem Wassertank.
(* is feminin)

(on every tick in *)
    (scenetime $A)
    ($A plus 1 into $B)
    (now) (scenetime $B)
	(if) ($B = 3) (then)
		(now) (#flying_scotsman is #in *)
		(time $time) 
		(now) (arrival $time)
		Der Flying Scotsman zieht sich stampfend die Platform hinauf, umgeben von dichten Rauchschwaden.
	(elseif) ($B = 6) (then)
		(now) (#flying_scotsman is nowhere)
		 Der Flying Scotsman setzt sich wieder in Bewegung und nimmt nach dem Kreischen der gelösten Bremsen unglaublich schnell Fahrt auf, bis er schließlich hinter dem Hügel verschwindet. Alles ist plötzlich wieder still.
	(endif)

#flying_scotsman
(item *)
(name *)	Flying Scotsman
(dict *)	flying scotsman zug
(* is handled)
(* is maskulin)
(fine where it is *)

(appearance * in $)
		Der Flying Scotsman, der schnellste Zug der Welt, ist zum
		völligen Stillstand gekommen.

(instead of [enter *])
		Leider tankt der
		(arrival $time)
		(say time $time)
		Zug nur Wasser und nimmt niemand mit.

(on every tick)
    (time $A)
    ($A plus 1 into $B)
    (now) (time $B)

(say time $A)
    ($A divided by 60 into $C)
    ($A modulo 60 into $D)
    $C:(no space)
    (if) ($D < 10) (then)
        0(no space)
    (endif)
    $D

%% Testen: "z / z / z / steig in zug / z / z"